属性类 Length Annotation PersistedResolvableAnnotation

Mag*_*ier 7 deployment sql-server-2008-r2 logins ssdt

我正在尝试使用 sqlpackage.exe 实用程序部署 ssdt 项目。我收到以下错误(德语):

Fehler bei der Erstellung des Bereitstellungsplans。Die Bereitstellung kann nicht fortgesetzt werden。元素属性-类别长度在元素-oder Annotation-Klasse 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>
Run Code Online (Sandbox Code Playgroud)

Angela(和其他候选人)不作为 Login 存在于目标服务器上,尽管他们是目标数据库中的注册数据库用户。我期待另一个错误——如果有的话——而不是这个无用的错误。

该项目的数据库基于一个非常古老的 SQL Server 版本。是否有可能这是来自 Sql Server 版本的一些已弃用的功能/语法或属性,并且根本不受支持?有谁知道更多详情?

Mag*_*ier 7

我自己发现了这个问题。我会记录下来,以防其他人将来遇到这个问题。

以下用户定义:

CREATE USER [Angela] WITHOUT LOGIN
    WITH DEFAULT_SCHEMA = [Angela];
Run Code Online (Sandbox Code Playgroud)

在避免发布的 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>
Run Code Online (Sandbox Code Playgroud)

将用户定义更改为:

CREATE USER [Angela] WITHOUT LOGIN
    WITH DEFAULT_SCHEMA = [dbo];
Run Code Online (Sandbox Code Playgroud)

该模型如下所示,可以发布:

<Element Type="SqlUser" Name="[Angela]">
        <Property Name="IsWithoutLogin" Value="True" />
    </Element>
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,这种奇怪的行为是另一种不当行为的后续行动,因为我希望不存在的模式会引发编译器错误。