Lezione 2: Configurare le autorizzazioni negli oggetti di database
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure Analytics Platform System (PDW)
Nota
Il percorso di apprendimentoIntroduzione all'esecuzione di query con Transact-SQL offre contenuti più approfonditi, oltre a esempi pratici.
La concessione di un accesso utente a un database consiste in tre passaggi. Viene innanzitutto creato un account di accesso, L'account di accesso consente all'utente di connettersi al motore di database di SQL Server. L'account di accesso viene quindi configurato come utente nel database specificato. Viene infine concessa l'autorizzazione utente per gli oggetti di database. In questa lezione vengono illustrati tali passaggi e viene descritto come creare due oggetti, ovvero una vista e una stored procedure.
Nota
Questa lezione si basa sugli oggetti creati nella Lezione 1: Creare oggetti di database. Completare la lezione 1 prima di continuare con la lezione 2.
Prerequisiti
Per completare questa esercitazione è necessario avere SQL Server Management Studio e l'accesso a un'istanza di SQL Server.
- Installare SQL Server Management Studio.
Se non si dispone dell'accesso a un'istanza di SQL Server, selezionare la piattaforma in uso tra i collegamenti seguenti. Se si sceglie Autenticazione SQL, usare le credenziali di accesso di SQL Server.
- Windows: scaricare SQL Server 2022 Developer Edition.
- Linux: scaricare SQL Server 2022 in un contenitore.
Commenti e suggerimenti: se si trovano informazioni obsolete o non corrette in questo articolo, ad esempio in un passaggio di una procedura o in un esempio di codice, è possibile comunicarlo a Microsoft. È possibile fare clic sul pulsante Questa pagina nella sezione Commenti nella parte inferiore della pagina. Ogni commento o suggerimento su SQL viene letto, in genere il giorno successivo. Grazie.
Crea un accesso
Per accedere al motore di database, gli utenti devono avere un account di accesso. L'account di accesso può rappresentare l'identità dell'utente come un account di Windows o come membro di un gruppo di Windows oppure un account di accesso di SQL Server esistente solo in SQL Server. Se possibile, è consigliabile utilizzare l'autenticazione di Windows.
Per impostazione predefinita, gli amministratori del computer hanno accesso completo a SQL Server. Ai fini di questa lezione, è sufficiente un utente che dispone di minori privilegi e verrà pertanto creato un nuovo account dell'autenticazione di Windows locale nel computer in uso. A tale scopo, è necessario essere un amministratore del computer. Si concede quindi al nuovo utente l'accesso a SQL Server.
Creare un nuovo account di Windows
- Selezionare Start, selezionare Esegui, nella casella Apri, digitare
%SystemRoot%\system32\compmgmt.msc /s
e quindi selezionare OK per aprire il programma Gestione computer. - In Strumenti di sistema espandere Utenti e gruppi locali, fare clic con il pulsante destro del mouse su Utenti e quindi scegliere Nuovo utente.
- Nella casella Nome utente digitare Mary.
- Nella casella Password e Conferma password digitare una password complessa e quindi selezionare Crea per creare un nuovo utente di Windows locale.
Creare un account di accesso SQL
Nella finestra dell'editor di query di SQL Server Management Studio digitare ed eseguire il codice seguente sostituendo computer_name
con il nome del computer. FROM WINDOWS
indica che Windows autentica l'utente. L'argomento facoltativo DEFAULT_DATABASE
si connette Mary
al TestData
database, a meno che il stringa di connessione non indichi un altro database. Questa istruzione introduce il punto e virgola come carattere di fine facoltativo per un'istruzione Transact-SQL.
CREATE LOGIN [computer_name\Mary]
FROM WINDOWS
WITH DEFAULT_DATABASE = [TestData];
GO
Ciò autorizza il nome utente Mary
, autenticato dal computer in uso, ad accedere all'istanza di SQL Server. Se nel computer sono presenti più istanze di SQL Server, è necessario creare l'account di accesso in ogni istanza a cui l'utente Mary
deve accedere.
Nota
Poiché Mary
non è un account di dominio, il nome utente può essere autenticato solo nel computer in questione.
Concedere l'accesso a un database
L'account Mary
ha ora accesso a questa istanza di SQL Server, ma non dispone dell'autorizzazione per accedere ai database. L'account non ha nemmeno accesso al database TestData
predefinito finché non si autorizza l'account come utente del database.
Per concedere Mary
l'accesso, passare al TestData
database e quindi usare l'istruzione CREATE USER per eseguire il mapping dell'account di accesso a un utente denominato Mary
.
Creare un utente in un database
Digitare ed eseguire le istruzioni seguenti sostituendo computer_name
con il nome del computer in uso per concedere all'utente Mary
l'accesso al database TestData
.
USE [TestData];
GO
CREATE USER [Mary] FOR LOGIN [computer_name\Mary];
GO
L'utente Mary ha ora accesso a SQL Server e al database TestData
.
Creare viste e stored procedure
In qualità di amministratore, è possibile eseguire SELECT dalla Products
tabella e dalla vw_Names
vista ed eseguire la pr_Names
procedura. Tuttavia, Mary non può. Per concedere a tale utente le autorizzazioni necessarie, utilizzare l'istruzione GRANT.
Concedere l'autorizzazione per una stored procedure
Eseguire l'istruzione seguente per concedere a Mary
l'autorizzazione EXECUTE
per la stored procedure pr_Names
.
GRANT EXECUTE ON pr_Names TO Mary;
GO
In questo scenario Mary può accedere Products
alla tabella solo usando la stored procedure. Se si desidera autorizzare l'utente Mary a eseguire un'istruzione SELECT sulla vista, è inoltre necessario eseguire GRANT SELECT ON vw_Names TO Mary
. Per rimuovere l'accesso agli oggetti di database, utilizzare l'istruzione REVOKE.
Nota
Se la tabella, la vista e la stored procedure non appartengono allo stesso schema, la procedura per la concessione delle autorizzazioni risulta più complessa.
Informazioni sull'istruzione GRANT
È necessario disporre dell'autorizzazione EXECUTE per eseguire una stored procedure. Per accedere e modificare i dati, è necessario disporre delle autorizzazioni SELECT, INSERT, UPDATE e DELETE. L'istruzione GRANT è inoltre utilizzata per altre autorizzazioni , ad esempio quella per creare tabelle.
Passaggi successivi
L'articolo successivo illustra come rimuovere gli oggetti di database creati nelle altre lezioni.
Per altre informazioni, vedere l'articolo successivo: