Sqlpackage.exeユーティリティを使用してssdtプロジェクトをデプロイしようとしています。次のエラーが表示されます(ドイツ語):
Fehler bei der Erstellung des Bereitstellungsplans。 Die Bereitstellung kann nicht fortgesetzt werden。 Die Property-Klasse Length ist nicht in der Element- oder Annotation-Klasse PersistedResolvableAnnotation enthalten。
Sthを意味します。お気に入り:
デプロイメントプランの作成中にエラーが発生しました。展開を続行できません。プロパティクラスの長さは、要素または注釈クラスPersistedResolvableAnnotationに含まれていません。
「PersistedResolvableAnnotation」に関する情報があまり見つかりませんでした。しかし、私はそれがdacpacのmodel.xmlに含まれていることに気付きました。
これには、次のように定義されたSqlLoginsがいくつか含まれています。
<Element Type="SqlUser" Name="[Angela]">
<Property Name="IsWithoutLogin" Value="True" />
<Relationship Name="DefaultSchema">
<Entry>
<References Name="[Angela]" Disambiguator="8" />
<Annotation Type="**PersistedResolvableAnnotation**" Name="[Angela]">
<Property Name="TargetTypeStorage" Value="SqlSchema" />
<Property Name="Length" Value="8" />
<Property Name="Offset" Value="62" />
</Annotation>
</Entry>
</Relationship>
</Element>
アンジェラ(および他の候補者)はターゲットサーバーに登録されたデータベースユーザーですが、ログインとして宛先サーバーに存在しません。この役に立たないものよりも、もしあれば、別のエラーが予想されます。
プロジェクトのデータベースは、かなり古いSQL Serverバージョンに基づいています。これは、SQL Serverバージョンからの非推奨の機能/構文またはプロパティであり、単にサポートされていない可能性がありますか?誰かが詳細を知っていますか?
私は自分で問題を見つけました。他の誰かが将来問題に直面している場合に備えて、それを文書化します。
次のユーザー定義:
CREATE USER [Angela] WITHOUT LOGIN
WITH DEFAULT_SCHEMA = [Angela];
は、発行を回避する次のコードをmodel.xmlに作成しました。おそらくそこで使用されているスキーマ(Angela)は、単に存在しないため無効です。
<Element Type="SqlUser" Name="[Angela]">
<Property Name="IsWithoutLogin" Value="True" />
<Relationship Name="DefaultSchema">
<Entry>
<Annotation Type="PersistedResolvableAnnotation" Name="[Angela]">
<Property Name="TargetTypeStorage" Value="SqlSchema" />
<Property Name="Length" Value="9" />
<Property Name="Offset" Value="63" />
</Annotation>
</Entry>
</Relationship>
</Element>
ユーザー定義を次のように変更した後:
CREATE USER [Angela] WITHOUT LOGIN
WITH DEFAULT_SCHEMA = [dbo];
モデルは次のように見え、公開できます。
<Element Type="SqlUser" Name="[Angela]">
<Property Name="IsWithoutLogin" Value="True" />
</Element>
この奇妙な動作は、既存のスキーマではコンパイラエラーが発生すると予想されるため、別の誤動作のフォローアップのようなものだと感じています。
私にとっての解決策は、古いバージョンのSqlPackage.exeを使用していたことです。
古いバージョンのパス:
C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe
新しいバージョンパス:
C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe
Microsoft SQL Server Data Tools(SSDT) によってインストールされます。
私たちにとって、これはビルドサーバーにVisual Studio 2015をインストールしたことが原因でした。
私は this link の答えの1つにある手順を実行しました
この件についてお問い合わせいただきありがとうございます。ときどき、model.xmlファイルの形式を変更する必要があります。これが発生した場合は、更新されたバージョンのSqlPackage.exeをインストールして、改訂された形式を読み取れるようにする必要があります。ダウンロードはここから入手できます: https://www.Microsoft.com/en-us/download/details.aspx?id=51238
また、SqlPackageの新しいバージョンを利用する
C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130\sqlpackage.exe