Création d'un utilisateur pour une seule base de données contenue

9

Je suis assez nouveau avec MSSQL et j'ai la version 2012 pour le moment. Ce que j'essaie de faire est de créer un utilisateur pour une base de données contenue et de donner à cet utilisateur un accès uniquement à cette base de données.

J'invoquerai ce SQL de JAVA en utilisant une instruction préparée.

imellan
la source

Réponses:

12

Pour créer un utilisateur confiné dans SQL Server 2012 qui s'authentifie dans la base de données, vous pouvez effectuer les opérations suivantes:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Vous devrez d'abord vous assurer que cette contained database authenticationoption est activée sur l'instance et que la base de données est définie avec un confinement partiel:

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

alter database YourDatabase
set containment = partial
go

Une fois ces commandes ci-dessus exécutées, vous devriez pouvoir créer votre utilisateur contenu avec l' CREATE USERinstruction comme expliqué ci-dessus.

EDIT : Grand commentaire et points par @AaronBertrand:

De plus, votre chaîne de connexion doit absolument utiliser le nom de la base de données dans le cadre des informations d'identification - si vous ne spécifiez pas la base de données, SQL Server ne va pas vérifier toutes les bases de données et essayer de déterminer celle que vous avez pu signifier. Et votre code ne peut effectuer aucune requête entre bases de données au cas où cette limitation ne serait pas claire.

Thomas Stringer
la source
Merci pour toute aide, une chose à commenter est, alors que j'essayais de le faire avec des instructions Java JDBC. Je n'ai pas pu le faire en utilisant PreparedStaments, JDBC était simplement mécontent de cela. J'ai donc utilisé une chaîne concise comme déclaration.
imellan