Eigenschaftsklasse Length Annotation PersistedResolvableAnnotation

7

Ich versuche, ein ssdt-Projekt mit dem Dienstprogramm sqlpackage.exe bereitzustellen. Ich erhalte folgende Fehlermeldung:

Fehler bei den Aufgaben des Bereitstellungsplans. Die gehört kann nicht gehört werden. Die Eigenschaftsklasse Länge ist nicht in der Element- oder Anmerkungsklasse PersistedResolvableAnnotation enthalten.

Es bedeutet etw. mögen:

Fehler beim Erstellen des Bereitstellungsplans. Die Bereitstellung kann nicht fortgesetzt werden. Die Eigenschaftsklasse Length ist nicht in der Element- oder Anmerkungsklasse PersistedResolvableAnnotation enthalten.

Ich konnte nicht viele Informationen über "PersistedResolvableAnnotation" finden. Aber ich habe festgestellt, dass es in der model.xml im dacpac enthalten ist.

Es enthält eine Handvoll SqlLogins, die ähnlich wie dieses definiert sind:

<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>

Angela (und die anderen Kandidaten) sind auf dem Zielserver nicht als Login vorhanden, obwohl sie registrierte Datenbankbenutzer in der Zieldatenbank sind. Ich würde einen anderen Fehler erwarten - wenn überhaupt - als diesen nutzlosen.

Die Datenbank des Projekts basiert auf einer ziemlich alten SQL Server-Version. Ist es möglich, dass dies eine veraltete Funktion / Syntax oder Eigenschaft ist, die aus der SQL Server-Version stammt und einfach nicht unterstützt wird? Kennt jemand mehr Details?

Magier
quelle

Antworten:

7

Ich habe das Problem selbst gefunden. Ich werde es dokumentieren, falls sich in Zukunft jemand anderes mit dem Problem befasst.

Die folgende Benutzerdefinition:

CREATE USER [Angela] WITHOUT LOGIN
    WITH DEFAULT_SCHEMA = [Angela];

hat den folgenden Code in der model.xml erstellt, der das Veröffentlichen vermeidet, möglicherweise weil das dort verwendete Schema (Angela) ungültig ist, weil es einfach nicht existiert:

<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>

Nach dem Ändern der Benutzerdefinition in:

CREATE USER [Angela] WITHOUT LOGIN
    WITH DEFAULT_SCHEMA = [dbo];

Das Modell sieht wie folgt aus und könnte veröffentlicht werden:

<Element Type="SqlUser" Name="[Angela]">
        <Property Name="IsWithoutLogin" Value="True" />
    </Element>

Ich habe das Gefühl, dass dieses seltsame Verhalten eine Art Folge eines anderen Fehlverhaltens ist, da ich erwarten würde, dass das nicht vorhandene Schema einen Compilerfehler auslöst.

Magier
quelle
2

Für mich war die Lösung, dass ich eine veraltete Version von SqlPackage.exe verwendete.

Alter Versionspfad:

C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe

Neuer Versionspfad:

C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe

Es wird von Microsoft SQL Server Data Tools (SSDT) installiert .

umbyersw
quelle
1

Für uns wurde dies durch die Installation von Visual Studio 2015 auf unseren Build-Servern verursacht.

Ich habe die Schritte in einer der Antworten in diesem Link befolgt

Vielen Dank, dass Sie sich diesbezüglich gemeldet haben. Von Zeit zu Zeit müssen wir das Format der Datei model.xml ändern. In diesem Fall muss die aktualisierte Version von SqlPackage.exe installiert werden, damit das überarbeitete Format gelesen werden kann. Der Download ist hier verfügbar: https://www.microsoft.com/en-us/download/details.aspx?id=51238

sowie die Verwendung einer neuen Version von SqlPackage unter

C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130 \ sqlpackage.exe

nebffa
quelle