Crear usuario para una única base de datos contenida

9

Soy bastante nuevo trabajando con MSSQL y tengo la versión 2012 en este momento. Lo que intento hacer es crear un usuario para una base de datos contenida y darle acceso a ese usuario solo a esa base de datos.

Invocaré este SQL desde JAVA usando una declaración preparada.

imellan
fuente

Respuestas:

12

Para crear un usuario contenido en SQL Server 2012 que se autentique en la base de datos, puede hacer lo siguiente:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Tendrá que asegurarse de que contained database authenticationesté habilitado en la instancia primero y que la base de datos esté configurada con contención parcial:

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

alter database YourDatabase
set containment = partial
go

Una vez que se ejecutan los comandos anteriores, debería poder crear su usuario contenido con la CREATE USERinstrucción como se explicó anteriormente.

EDITAR : Gran comentario y puntos de @AaronBertrand:

Además, su cadena de conexión debe usar absolutamente el nombre de la base de datos como parte de las credenciales: si no especifica la base de datos, SQL Server no comprobará todas las bases de datos e intentará averiguar a qué se refería. Y su código no puede realizar ninguna consulta entre bases de datos en caso de que esa limitación no esté clara.

Thomas Stringer
fuente
Gracias por toda la ayuda, una cosa sobre la cual comentar es, mientras intentaba hacer esto con las declaraciones JDBC de Java. No pude hacerlo con PreparedStaments, JDBC no estaba contento con esto. así que usé una cadena concatenada como una declaración.
imellan