Sql-Server-2008-R2

屬性類 Length Annotation PersistedResolvableAnnotation

  • July 18, 2016

我正在嘗試使用 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>

我有一種感覺,這種奇怪的行為是另一種不當行為的後續行動,因為我希望不存在的模式會引發編譯器錯誤。

引用自:https://dba.stackexchange.com/questions/130191