Criando usuário para um único banco de dados contido

9

Sou bastante novo trabalhando com o MSSQL e tenho a versão 2012 no momento. O que estou tentando fazer é criar um usuário para um banco de dados contido e conceder a esse usuário acesso apenas a esse banco de dados.

Vou chamar esse SQL do JAVA usando uma instrução preparada.

imellan
fonte

Respostas:

12

Para criar um usuário contido no SQL Server 2012 que se autentica no banco de dados, você pode fazer o seguinte:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Você precisará garantir que contained database authenticationesteja ativado primeiro na instância e que o banco de dados seja definido com contenção parcial:

exec sp_configure 'contained database authentication', 1
go
reconfigure
go

alter database YourDatabase
set containment = partial
go

Depois que os comandos acima forem executados, você poderá criar seu usuário contido com a CREATE USERinstrução conforme explicado acima.

EDIT : Ótimo comentário e pontos por @AaronBertrand:

Além disso, sua cadeia de conexão deve absolutamente usar o nome do banco de dados como parte das credenciais - se você não especificar o banco de dados, o SQL Server não verificará todos os bancos de dados e tentará descobrir qual deles pode ter sido o significado. E seu código não pode executar nenhuma consulta entre bancos de dados, caso essa limitação não seja clara.

Thomas Stringer
fonte
Obrigado por toda a ajuda, uma coisa a comentar é, enquanto eu estava tentando fazer isso com instruções Java JDBC. Eu não era capaz de fazê-lo usando o PreparedStaments, o JDBC estava descontente com isso. então eu usei uma string concated como uma declaração.
imellan