Tworzenie użytkownika dla pojedynczej zawartej bazy danych

9

Jestem całkiem nowy pracując z MSSQL i mam w tej chwili wersję 2012. Staram się utworzyć użytkownika dla zawartej bazy danych i dać temu użytkownikowi dostęp tylko do tej bazy danych.

Wywołam ten kod SQL z JAVA przy użyciu przygotowanej instrukcji.

imellan
źródło

Odpowiedzi:

12

Aby utworzyć użytkownika zawartego w programie SQL Server 2012, który uwierzytelnia się w bazie danych, możesz wykonać następujące czynności:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Trzeba najpierw upewnić się, że contained database authenticationjest włączona w instancji i że baza danych jest ustawiona z częściowym zabezpieczeniem:

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

alter database YourDatabase
set containment = partial
go

Po wykonaniu powyższych poleceń powinieneś być w stanie utworzyć zamkniętego użytkownika za pomocą CREATE USERinstrukcji, jak wyjaśniono powyżej.

EDYCJA : Świetny komentarz i punkty autorstwa @AaronBertrand:

Również ciąg połączenia bezwzględnie musi używać nazwy bazy danych jako części poświadczeń - jeśli nie określisz bazy danych, SQL Server nie sprawdzi wszystkich baz danych i nie spróbuje dowiedzieć się, który z nich masz na myśli. Twój kod nie może wykonywać żadnych zapytań między bazami danych, w przypadku gdy ograniczenie nie jest jasne.

Thomas Stringer
źródło
Dzięki za wszelką pomoc, jedną rzeczą do skomentowania jest, gdy próbowałem to zrobić za pomocą instrukcji JDBC Java. Nie byłem w stanie tego zrobić przy użyciu PreparedStaments, JDBC był po prostu niezadowolony z tego. więc użyłem zwięzłego łańcucha jako instrukcji.
imellan