Sql-Server-2008-R2
屬性類 Length Annotation PersistedResolvableAnnotation
我正在嘗試使用 sqlpackage.exe 實用程序部署一個 ssdt 項目。我收到以下錯誤(德語):
創建部署計劃失敗。部署無法繼續。Length 屬性類不包含在 PersistedResolvableAnnotation 元素或註釋類中。
這意味著某事。喜歡:
創建部署計劃時出錯。部署無法繼續。屬性類 Length 不包含在元素或註釋類 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>
我有一種感覺,這種奇怪的行為是另一種不當行為的後續行動,因為我希望不存在的模式會引發編譯器錯誤。