Autorizzazioni necessarie per SQL Server Data Tools

Prima di poter eseguire un'azione in un database in Visual Studio, è necessario accedere con un account provvisto di determinate autorizzazioni. Le autorizzazioni specifiche necessarie variano in base all'azione che si desidera eseguire. Nelle sezioni seguenti vengono descritte le azioni che è possibile eseguire e le autorizzazioni specifiche necessarie per eseguirle.

Autorizzazioni per creare o distribuire un database

Per creare o distribuire un database è necessario disporre delle autorizzazioni riportate di seguito.

Azioni Autorizzazioni necessarie
Importare oggetti di database e relative impostazioni È necessario avere la possibilità di connettersi al database di origine.

Se il database di origine è basato su SQL Server 2005, è necessario avere anche l'autorizzazione VIEW DEFINITION per ogni oggetto.

Anche se il database di origine è basato su SQL Server 2008 o versioni successive, è necessario avere l'autorizzazione VIEW DEFINITION per ogni oggetto. Per l'accesso è necessaria l'autorizzazione VIEW SERVER STATE per le chiavi di crittografia del database.
Importare oggetti server e relative impostazioni È necessario avere la possibilità di connettersi al database master nel server specificato.

Se nel server è in esecuzione SQL Server 2005, è necessario avere l'autorizzazione VIEW ANY DEFINITION per il server.

Anche se il database di origine è basato su SQL Server 2008 o versioni successive, è necessario avere l'autorizzazione VIEW ANY DEFINITION per il server. Per l'accesso è necessaria l'autorizzazione VIEW SERVER STATE per le chiavi di crittografia del database.
Creare o aggiornare un progetto di database Non è necessario disporre di alcuna autorizzazione per database per creare o modificare un progetto di database.
Distribuire un nuovo database o distribuire con l'opzione Ricrea sempre database impostata È necessario avere l'autorizzazione CREATE DATABASE oppure essere membro del ruolo dbcreator nel server di destinazione.

Quando si crea un database, Visual Studio si connette al database modello e ne copia il contenuto. Per l'accesso iniziale, ad esempio yourLogin, usato per connettersi al database di destinazione, sono necessarie le autorizzazioni db_creator e CONNECT SQL. Questo accesso deve disporre di un mapping utente nel database modello. Se si hanno autorizzazioni sysadmin, è possibile creare il mapping eseguendo le istruzioni Transact-SQL seguenti:

USE [model] CREATE USER yourUser FROM LOGIN yourLogin

L'utente, in questo esempio yourUser, deve avere le autorizzazioni CONNECT e VIEW DEFINITION per il database modello. Se si hanno autorizzazioni sysadmin, è possibile concederle eseguendo le istruzioni Transact-SQL seguenti:

USE [model] GRANT CONNECT to yourUser GRANT VIEW DEFINITION TO yourUser

Se si distribuisce un database contenente vincoli senza nome e l'opzione CheckNewContraints è abilitata, come da impostazione predefinita, è necessario avere l'autorizzazione db_owner o sysadmin o la distribuzione non verrà eseguita. Questa regola è applicabile solo ai vincoli senza nome. Per altre informazioni sull'opzione CheckNewConstraints, vedere Impostazioni del progetto di database.
Distribuire aggiornamenti in un database esistente È necessario essere un utente di database valido. È anche necessario essere membro del ruolo db_ddladmin, proprietario dello schema oppure degli oggetti che si vogliono creare o modificare nel database di destinazione. Per utilizzare concetti più avanzati come account di accesso o server collegati negli script pre-distribuzione o post-distribuzione, sono necessarie autorizzazioni aggiuntive.

NOTA: se si esegue la distribuzione al database master, è necessario avere anche l'autorizzazione VIEW ANY DEFINITION per il server in cui si distribuisce.
Utilizzare un assembly con l'opzione EXTERNAL_ACCESS in un progetto di database È necessario impostare la proprietà TRUSTWORTHY per il progetto di database. È necessario avere l'autorizzazione EXTERNAL ACCESS ASSEMBLY per l'account di accesso di SQL Server.
Distribuire assembly in un database nuovo o esistente È necessario essere membro del ruolo sysadmin nel server di distribuzione di destinazione.

Per ulteriori informazioni, vedere la documentazione online di SQL Server.

Autorizzazioni per eseguire il refactoring di un database

Il refactoring del database viene eseguito solo all'interno del progetto di database. È necessario disporre delle autorizzazioni per utilizzare il progetto di database. Le autorizzazioni per un database di destinazione non sono necessarie finché non si distribuiscono le modifiche in tale database.

Autorizzazioni per eseguire unit test in un database di SQL Server

Per eseguire unit test in un database, è necessario disporre delle autorizzazioni seguenti.

Azioni Autorizzazioni necessarie
Eseguire un'azione di test È necessario utilizzare la connessione al database del contesto di esecuzione. Per altre informazioni, vedere Panoramica delle stringhe di connessione e delle autorizzazioni.
Eseguire un'azione di pre-test o post-test È necessario utilizzare la connessione al database del contesto autorizzato. Questa connessione ha più autorizzazioni rispetto alla connessione del contesto di esecuzione.
Eseguire script TestInitialize e TestCleanup È necessario utilizzare la connessione al database del contesto autorizzato.
Distribuire le modifiche apportate al database prima di eseguire i test È necessario utilizzare la connessione al database del contesto autorizzato. Per altre informazioni, vedere Procedura: Configurare l'esecuzione di unit test di SQL Server.
Generare dati prima di eseguire i test È necessario utilizzare la connessione al database del contesto autorizzato. Per altre informazioni, vedere Procedura: Configurare l'esecuzione di unit test di SQL Server.

Autorizzazioni per generare dati

Per generare dati di test tramite il generatore di dati, è necessario avere le autorizzazioni INSERT e SELECT per gli oggetti del database di destinazione. Se si eliminano dei dati prima di generarne altri, è necessario avere anche le autorizzazioni DELETE per gli oggetti del database di destinazione. Per reimpostare la colonna IDENTITY di una tabella, è necessario essere proprietari della tabella oppure membri del ruolo db_owner o db_ddladmin.

Autorizzazioni per confrontare schemi e dati

Per confrontare schemi o dati, è necessario disporre delle autorizzazioni seguenti.

Azioni Autorizzazioni necessarie
Confrontare gli schemi di due database È necessario avere le autorizzazioni per importare oggetti e impostazioni dai database come descritto nella sezione Autorizzazioni per creare o distribuire un database.
Confrontare gli schemi di un database e di un progetto di database È necessario avere le autorizzazioni per importare oggetti e impostazioni dal database come descritto nella sezione Autorizzazioni per creare o distribuire un database. Il progetto di database deve inoltre essere aperto in Visual Studio.
Scrivere aggiornamenti in un database di destinazione È necessario avere le autorizzazioni per distribuire gli aggiornamenti al database di destinazione come descritto nella sezione Autorizzazioni per creare o distribuire un database.
Confrontare i dati di due database Oltre alle autorizzazioni necessarie per confrontare gli schemi di due database, è necessaria anche l'autorizzazione SELECT per tutte le tabelle che si vuole confrontare e l'autorizzazione VIEW DATABASE STATE.

Per ulteriori informazioni, vedere la documentazione online di SQL Server.

Autorizzazioni per eseguire l'editor Transact-SQL

Le azioni possibili all'interno dell'editor Transact-SQL sono determinate dal contesto di esecuzione nel database di destinazione.

Autorizzazioni per progetti Common Language Runtime di SQL Server

Nella tabella seguente sono elencate le autorizzazioni necessarie per effettuare la distribuzione o eseguire il debug di progetti CLR:

Azioni Autorizzazioni necessarie
Eseguire la distribuzione (iniziale o incrementale) di un assembly del set di autorizzazioni sicuro db_DDLAdmin: questa autorizzazione concede autorizzazioni CREATE e ALTER per assembly e tipi di oggetti distribuiti

VIEW DEFINITION a livello di database: obbligatorio per la distribuzione

CONNECT a livello di database: consente di stabilire la connessione al database
Distribuire un assembly del set di autorizzazioni external_access db_DDLAdmin: questa autorizzazione concede autorizzazioni CREATE e ALTER per assembly e tipi di oggetti distribuiti

VIEW DEFINITION a livello di database: obbligatorio per la distribuzione

CONNECT a livello di database: consente di stabilire la connessione al database

È inoltre necessario disporre di quanto segue:

Opzione di database TRUSTWORTHY impostata su ON

L'accesso utilizzato per la distribuzione deve disporre dell'autorizzazione External Access Assembly per il server
Distribuire un assembly del set di autorizzazioni non sicuro db_DDLAdmin: questa autorizzazione concede autorizzazioni CREATE e ALTER per assembly e tipi di oggetti distribuiti

VIEW DEFINITION a livello di database: obbligatorio per la distribuzione

CONNECT a livello di database: consente di stabilire la connessione al database

È inoltre necessario disporre di quanto segue:

Opzione di database TRUSTWORTHY impostata su ON

L'accesso utilizzato per la distribuzione deve disporre dell'autorizzazione Unsafe Assembly per il server
Eseguire il debug remoto di un assembly CLR SQL È necessario disporre dell'autorizzazione del ruolo predefinito sysadmin.

Importante

In tutti i casi, il proprietario dell'assembly deve essere l'utente utilizzato per distribuire l'assembly oppure deve essere un ruolo di cui tale utente è un membro. Questo requisito si applica anche a qualsiasi assembly a cui fa riferimento l'assembly da distribuire.

Vedi anche

Creazione e definizione di unit test di SQL Server
SQL Server Data Tools