Usuários do SQL Server

Esta página descreve como o Cloud SQL funciona com usuários e papéis do SQL Server. Os papéis do SQL Server permitem controlar o acesso e os recursos dos usuários que acessam uma instância do SQL Server.

Para informações sobre a criação e o gerenciamento de usuários do Cloud SQL, consulte esta página.

Papéis e usuários do SQL Server

Os papéis do SQL Server podem ser um único papel ou podem funcionar como um grupo de papéis.

Um usuário é um papel com a capacidade de fazer login (o papel tem a permissão LOGIN). Todos os papéis criados pelo Cloud SQL têm a permissão LOGIN. Portanto, o Cloud SQL usa os termos "papel" e "usuário" de forma intercambiável. No entanto, se você criar um papel com o cliente, ele não terá necessariamente a permissão LOGIN.

Todos os usuários do SQL Server precisam ter uma senha. Não é possível fazer login com um usuário que não tenha uma senha.

Superusuários e procedimentos armazenados no sistema

O Cloud SQL para SQL Server é um serviço gerenciado, por isso ele restringe o acesso a determinados procedimentos e tabelas armazenados no sistema que exigem que exigem privilégios avançados. No Cloud SQL, não é possível criar ou ter acesso a usuários com permissões de superusuário.

Usuários padrão do SQL Server

Quando você cria uma nova instância do Cloud SQL para SQL Server, o usuário sqlserver padrão já é criado para você, embora seja necessário definir a senha.

O usuário sqlserver faz parte do papel CustomerDbRootRole e as permissões (privilégios) incluem o seguinte:

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

Como conceder as permissões de servidor

Ao conceder privilégios usando qualquer comando GRANT, você precisa passar CustomerDbRootRole como, por exemplo, o valor de grantor_principal.

O exemplo GRANT ALTER ANY LOGIN a seguir é válido:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

O exemplo GRANT ALTER ANY LOGIN a seguir é inválido:

GRANT ALTER ANY LOGIN TO [Account]

Outros usuários do SQL Server

Você pode criar outros usuários do SQL Server ou papéis. Todos os usuários criados com o Cloud SQL são criados como parte do papel CustomerDbRootRole e têm o mesmo conjunto de permissões que o usuário sqlserver. Você pode alterar as permissões de qualquer usuário usando o comando ALTER ROLE.

Se você criar um novo usuário com o cliente, poderá associá-lo a uma função diferente ou conceder permissões diferentes.

Solução de problemas

Erro ao acessar o banco de dados

Ao tentar acessar um banco de dados criado por você, como um usuário criado, você recebe o erro The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context..

O problema pode ser

O usuário não é membro do banco de dados.

O que você pode tentar

Conecte-se ao banco de dados como o usuário sqlserver e adicione o novo usuário. Em seguida, conceda ao novo usuário o papel db_owner para o banco de dados. Exemplo:

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

A seguir