Informazioni sugli utenti di SQL Server

Questa pagina descrive come funziona Cloud SQL con utenti e ruoli di SQL Server. I ruoli SQL Server ti consentono di controllare l'accesso e le funzionalità degli utenti che accedono a un'istanza SQL Server.

Per informazioni sulla creazione e la gestione degli utenti di Cloud SQL, consulta Creazione e gestione degli utenti.

Ruoli e utenti di SQL Server

I ruoli SQL Server possono essere ruoli singoli o come gruppo di ruoli.

Un utente è un ruolo con la possibilità di accedere (il ruolo ha l'autorizzazione LOGIN). Tutti i ruoli creati da Cloud SQL hanno l'autorizzazione LOGIN, perciò Cloud SQL usa i termini "role" e "user" in modo intercambiabile. Tuttavia, se crei un ruolo con qualsiasi strumento client compatibile con SQL Server, il ruolo non riceve necessariamente l'autorizzazione LOGIN.

Cloud SQL per SQL Server limita l'accesso a determinati ruoli del server che forniscono privilegi avanzati. Esempi di questi ruoli sono DbRootRole, serveradmin, securityadmin, setupadmin, diskadmin e dbcreator.

Tutti gli utenti di SQL Server devono avere una password. Pertanto, non puoi accedere con un utente privo di password.

Super user e stored procedure di sistema

Cloud SQL per SQL Server è un servizio gestito, quindi limita l'accesso ad alcune stored procedure di sistema e tabelle che richiedono privilegi avanzati. In Cloud SQL, non puoi creare o avere accesso a utenti con autorizzazioni dei super user.

Utenti SQL Server predefiniti

Quando crei una nuova istanza Cloud SQL per SQL Server, l'utente sqlserver predefinito è già creato automaticamente, anche se devi impostarne la password.

L'utente sqlserver fa parte del ruolo CustomerDbRootRole e le sue autorizzazioni (privilegi) includono quanto segue:

  • ALTER ANY CONNECTION
  • ALTER ANY LOGIN
  • ALTER ANY SERVER ROLE
  • ALTER SERVER STATE
  • ALTER TRACE
  • CONNECT SQL
  • CREATE ANY DATABASE
  • CREATE SERVER ROLE
  • VIEW ANY DATABASE
  • VIEW ANY DEFINITION
  • VIEW SERVER STATE

Puoi anche aggiungere cloudsql enable linked servers all'istanza se vuoi utilizzarla con i server collegati. Questo flag concede la seguente autorizzazione al tuo server:

  • ALTER ANY LINKED SERVER

Concedere le autorizzazioni del server

Quando concedi i privilegi utilizzando qualsiasi comando GRANT, devi trasmettere CustomerDbRootRole come, ad esempio, il valore di grantor_principal.

Il seguente esempio di GRANT ALTER ANY LOGIN è valido:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

Il seguente GRANT ALTER ANY LOGIN esempio è non valido:

GRANT ALTER ANY LOGIN TO [Account]

Altri utenti SQL Server

Puoi creare altri utenti o ruoli di SQL Server. A tutti gli utenti che crei mediante Cloud SQL vengono concesse le stesse autorizzazioni per il database dell'accesso a sqlserver. Tuttavia, se utilizzi un processo diverso per creare un utente (anziché crearlo utilizzando Cloud SQL), l'utente non avrà le stesse autorizzazioni degli account amministratore del cliente o dell'utente sqlserver. Ad esempio, se utilizzi la procedura Crea accesso e aggiungi l'accesso al ruolo del server CustomerDbRootRole, l'utente non avrà le stesse autorizzazioni degli account amministratore del cliente o dell'utente sqlserver. Pertanto, puoi utilizzare Cloud SQL per creare un utente se intendi che abbia le stesse autorizzazioni di database dell'accesso a sqlserver. Per convalidare la differenza nelle autorizzazioni tra due account, puoi utilizzare la seguente funzione: sys.fn_my_permissions.

Importazioni database: autorizzazioni del proprietario

Quando importi un database, il trattamento del proprietario varia come segue, in base al tipo di proprietario:

  • Per un accesso esistente diverso da sa: Cloud SQL conserva il proprietario e crea un utente denominato sqlserver mappato all'accesso sqlserver. Cloud SQL concede le autorizzazioni CONTROL e ALTER ANY USER all'utente sqlserver.
  • Per gli accessi sconosciuti o creati dal sistema: Cloud SQL trasferisce la proprietà del database all'accesso sqlserver.

Modifica delle autorizzazioni degli utenti

Il comando ALTERROLE è disponibile per modificare le autorizzazioni degli utenti. Se crei un nuovo utente con un client, puoi associarlo a un ruolo diverso o concedere autorizzazioni diverse.

Risoluzione dei problemi

Errore durante l'accesso al database

Quando tenti di accedere a un database che hai creato, come utente creato, ricevi il seguente errore:

The server principal USERNAME is not able to access the
database DATABASE_NAME under the current security context.

Il problema potrebbe essere

L'utente non è membro del database.

Cose da provare

Connettiti al database come utente sqlserver e aggiungi il nuovo utente, poi assegna al nuovo utente il ruolo db_owner per il database. Ad esempio:

EXEC sp_adduser 'user';
EXEC sp_addrolemember 'db_owner', 'user'

Passaggi successivi