Ho aggiornato di recente uno dei miei progetti in Visual Studio 2013. L'aggiornamento ha cambiato il mio .dbproj in un .sqlproj per renderlo compatibile con il nuovo formato di progetto SQL.Perché il confronto dello schema di Visual Studio 2013 include le dichiarazioni di autorizzazione per ogni definizione di oggetto e le tratta come diverse dal progetto?
Dopo la conversione, ho eseguito uno schema di confronto con il mio progetto SQL e il mio database di produzione SQL 2008 e ora considera viralmente ogni oggetto diverso. Dopo un'indagine attraverso lo strumento di confronto dello schema, sembra che la differenza risieda nel fatto che ogni definizione di oggetto include anche istruzioni per le autorizzazioni concesse su quell'oggetto a ogni ruolo o utente.
Così, il lato server è simile al seguente:
CREATE PROC MyCoolProc
BEGIN
--some code
END
GO
GRANT EXECUTE
ON OBJECT MyCoolProc TO MyAwesomeUser
AS [Schema];
GO
e lato client per lo stesso oggetto è simile al seguente:
CREATE PROC MyCoolProc
BEGIN
--some code
END
perché è questo? Ciò non si è verificato durante l'esecuzione dello schema di confronto con Visual Studio 2010. Inoltre, ho esaminato tutte le opzioni per lo strumento di confronto SQL e non sono riuscito a trovarne uno che "ignorasse le istruzioni di autorizzazione per gli oggetti". Qualcuno può aiutare?
EDIT
solo per garantire che questo è un problema con SQL di Visual Studio Confronta strumento e non lo SQL Server stesso, ho ri-eseguito il confronto in Visual Studio 2010 tra la mia messa in scena e il database di produzione e la le definizioni dell'oggetto non includono le autorizzazioni dell'oggetto come fanno in Visual Studio 2013.
Per gli altri che hanno avuto difficoltà a trovarlo, in VS2010 ho trovato "Opzioni di confronto dello schema" nella piccola rotella Impostazioni a destra del pulsante Confronta. –
@AlaaAwad +1 per ulteriore disponibilità. –
nel 2013 è anche un GEAR nero nel menu in alto del file SQLSchemaCompare –