7

Ich habe kürzlich eines meiner Projekte in Visual Studio 2013 aktualisiert. Das Update hat meine .dbproj-Datei in eine .sqlproj-Datei geändert, damit sie mit dem neuen SQL-Projektformat kompatibel ist.Warum enthält Visual Studio 2013 Schema Compare Berechtigungsanweisungen für jede Objektdefinition und behandelt diese als vom Projekt abweichend?

Nach der Konvertierung führte ich einen Schemavergleich mit meinem SQL-Projekt und meiner SQL 2008-Produktionsdatenbank durch und es betrachtet nun virtuell jedes Objekt als unterschiedlich. Bei der Untersuchung mit dem Schemavergleichstool scheint der Unterschied darin zu liegen, dass jede Objektdefinition auch Anweisungen für die Berechtigungen enthält, die für dieses Objekt jeder Rolle oder jedem Benutzer erteilt wurden.

So sucht der Server-Seite wie folgt aus:

CREATE PROC MyCoolProc 
BEGIN 
    --some code 
END 
GO 

GRANT EXECUTE 
    ON OBJECT MyCoolProc TO MyAwesomeUser 
    AS [Schema]; 
GO 

und der Client-Seite für das gleiche Objekt sieht wie folgt aus:

CREATE PROC MyCoolProc 
BEGIN 
    --some code 
END 

Warum ist das? Dies trat nicht auf, wenn ich einen Schemavergleich mit Visual Studio 2010 durchführte. Darüber hinaus habe ich alle Optionen für das SQL-Vergleichstool durchsucht und konnte keine finden, die "Berechtigungsanweisungen für Objekte ignorieren". Kann jemand helfen?

EDIT

nur, um sicherzustellen, dass dies ein Problem mit SQL Visual Studio vergleichen Werkzeug und nicht der SQL Server selbst, ich wieder liefen vergleichen die in Visual Studio 2010 zwischen meiner Inszenierung und Produktionsdatenbank und der Objektdefinitionen enthalten die Objektberechtigungen nicht wie in Visual Studio 2013.

Antwort

18

Es scheint, dass unter den Optionen für Visual Studio 2010 SQL-Vergleichstool "Schema Compare Options" das Register "Objekttypen" ein Kontrollkästchen hat alle Objekttypen, die Sie ignorieren möchten. Es hat "Erweiterte Eigenschaften" und "Berechtigungen" standardmäßig aktiviert.

Im Vergleich zum Visual Studio 2013-SQL-Vergleichswerkzeug "Schema-Vergleichsoptionen", dessen Registerkarte "Objekttypen" ein Kontrollkästchen für alle Objekttypen enthält, die in den Vergleich einbezogen werden sollen. Unter dem Baumknoten "Application-scoped" sind alle Objekttypen standardmäßig markiert. Wenn Sie die Option "Erweiterte Eigenschaften" und "Berechtigungen" deaktivieren, verhält sich dieses SQL-Vergleichswerkzeug genau wie das Vergleichstool von Visual Studio 2010.

Dies verhindert, dass die irrelevanten Berechtigungen und erweiterten Eigenschaften vom Server als Teil der Definition jedes Objekts zurückgegeben werden. Hoffentlich hilft das jemand anderem, der auf dasselbe Problem stößt.

+2

Für andere, die Probleme hatten, es zu finden, habe ich in VS2010 "Schema Compare Options" im kleinen Einstellungsrad auf der rechten Seite der Compare-Schaltfläche gefunden. –

+0

@AlaaAwad +1 für zusätzliche Hilfsbereitschaft. –

+3

in 2013 ist auch ein Black GEAR im oberen Menü der SQLSchemaCompare-Datei –