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.
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. –
@AlaaAwad +1 für zusätzliche Hilfsbereitschaft. –
in 2013 ist auch ein Black GEAR im oberen Menü der SQLSchemaCompare-Datei –