Benutzer für eine einzelne enthaltene Datenbank erstellen

9

Ich bin ziemlich neu in der Arbeit mit MSSQL und habe momentan die Version 2012. Ich versuche, einen Benutzer für eine enthaltene Datenbank zu erstellen und diesem Benutzer nur Zugriff auf diese Datenbank zu gewähren.

Ich werde diese SQL von JAVA mit einer vorbereiteten Anweisung aufrufen.

imellan
quelle

Antworten:

12

Sie haben folgende Möglichkeiten, um einen in SQL Server 2012 enthaltenen Benutzer zu erstellen , der sich in der Datenbank authentifiziert:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Sie müssen sicherstellen, dass dies zuerst contained database authenticationfür die Instanz aktiviert ist und dass die Datenbank teilweise eingeschlossen ist:

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

alter database YourDatabase
set containment = partial
go

Sobald diese oben genannten Befehle ausgeführt wurden, sollten Sie in der Lage sein, Ihren enthaltenen Benutzer mit der CREATE USERoben erläuterten Anweisung zu erstellen .

EDIT : Toller Kommentar und Punkte von @AaronBertrand:

Außerdem muss Ihre Verbindungszeichenfolge unbedingt den Datenbanknamen als Teil der Anmeldeinformationen verwenden. Wenn Sie die Datenbank nicht angeben, überprüft SQL Server nicht alle Datenbanken und versucht herauszufinden, welche Sie möglicherweise gemeint haben. Und Ihr Code kann keine datenbankübergreifenden Abfragen ausführen, falls diese Einschränkung nicht klar ist.

Thomas Stringer
quelle
Vielen Dank für jede Hilfe. Eine Sache, die Sie kommentieren sollten, ist, während ich versuchte, dies mit Java JDBC-Anweisungen zu tun. Ich konnte es nicht mit PreparedStaments machen, JDBC war einfach unzufrieden damit. Also habe ich eine verkettete Zeichenfolge als Anweisung verwendet.
Imellan