7

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.

risposta

18

Sembra che sotto le opzioni della finestra "Confronta schema" dello strumento di confronto SQL di Visual Studio 2010, la scheda "Tipi di oggetto" abbia una casella di controllo per tutti i tipi di oggetto che vuoi ignorare. Dispone di "Proprietà estese" e "Autorizzazioni" controllate per impostazione predefinita.

Rispetto alla finestra "Confronta schema" dello strumento di confronto SQL di Visual Studio 2013, la cui scheda "Tipi di oggetti" ha una casella di controllo per tutti i tipi di oggetto che si desidera includere nel confronto. Sotto il nodo ad albero "ambito ambito", tutti i tipi di oggetto sono controllati per impostazione predefinita. Deselezionando "Proprietà estese" e "Autorizzazioni", questo strumento di confronto SQL si comporta esattamente come lo strumento di confronto di Visual Studio 2010.

Ciò impedisce che le autorizzazioni estranee e le proprietà estese vengano restituite dal server come parte della definizione di ciascun oggetto. Speriamo che questo aiuti qualcun altro che si imbatte in questo stesso problema.

+2

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

+0

@AlaaAwad +1 per ulteriore disponibilità. –

+3

nel 2013 è anche un GEAR nero nel menu in alto del file SQLSchemaCompare –

Problemi correlati