Informazioni sugli utenti di SQL Server

Questa pagina descrive il funzionamento di Cloud SQL con gli utenti e i 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 su come creare e gestire gli utenti Cloud SQL, consulta Creare e gestire gli utenti.

Ruoli e utenti SQL Server

I ruoli di SQL Server possono essere un singolo ruolo o funzionare come un gruppo di ruoli.

Un utente è un ruolo con la possibilità di accedere (il ruolo dispone dell'LOGIN autorizzazione). Tutti i ruoli creati da Cloud SQL dispongono dell'autorizzazione LOGIN, pertanto Cloud SQL utilizza i termini "ruolo" e "utente" 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 ad alcuni 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 che non ha una password.

Superuser e stored procedure di sistema

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

Utenti SQL Server predefiniti

Quando crei una nuova istanza Cloud SQL per SQL Server, l'utente sqlserver predefinito è già stato creato per te, 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 alla tua istanza se vuoi utilizzarla con i server collegati. Questo flag concede al server la seguente autorizzazione:

  • ALTER ANY LINKED SERVER

Concedere le autorizzazioni del server

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

Il seguente esempio di GRANT ALTER ANY LOGIN è valido:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

Il seguente esempio di GRANT ALTER ANY LOGIN non è valido:

GRANT ALTER ANY LOGIN TO [Account]

Altri utenti di SQL Server

Puoi creare altri utenti o ruoli SQL Server. A tutti gli utenti che crei utilizzando Cloud SQL vengono concesse le stesse autorizzazioni di accesso al database del login sqlserver. Tuttavia, se utilizzi una procedura diversa 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 di creazione dell'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 accesso al database del login sqlserver. Per convalidare la differenza di autorizzazioni tra due account, puoi utilizzare la seguente funzione: sys.fn_my_permissions.

Importazioni di 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 mantiene il proprietario e crea un utente denominato sqlserver che viene 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.

Modificare le autorizzazioni per gli utenti

Il comando ALTER ROLE è disponibile per modificare le autorizzazioni utente. Se crei un nuovo utente con un client, puoi associarlo a un ruolo diverso o fornire autorizzazioni diverse.

Risoluzione dei problemi

Errore durante l'accesso al database

Quando provi ad accedere a un database che hai creato, come utente che hai 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 è un membro del database.

Da provare

Connettiti al database come utente sqlserver e aggiungi il nuovo utente, quindi 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