Membuat Pengguna untuk basis data tunggal yang terkandung

9

Saya cukup baru bekerja dengan MSSQL dan memiliki versi 2012 saat ini. Apa yang saya coba lakukan adalah membuat pengguna untuk basis data yang terkandung, dan memberikan akses hanya ke basis data itu.

Saya akan memohon SQL ini dari JAVA menggunakan pernyataan yang disiapkan.

imellan
sumber

Jawaban:

12

Untuk membuat pengguna yang terkandung di SQL Server 2012 yang diautentikasi di database, Anda dapat melakukan hal berikut:

use YourDatabase
go

create user YourContainedUser
with password = 'yourPassword'
go

Anda harus memastikan yang contained database authenticationdiaktifkan pada instance terlebih dahulu, dan bahwa database diatur dengan sebagian penahanan:

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

alter database YourDatabase
set containment = partial
go

Setelah perintah-perintah di atas dijalankan Anda harus dapat membuat pengguna Anda yang terkandung dengan CREATE USERpernyataan seperti yang dijelaskan di atas.

EDIT : Komentar dan poin hebat oleh @AaronBertrand:

Juga string koneksi Anda harus benar-benar menggunakan nama database sebagai bagian dari kredensial - jika Anda tidak menentukan database, SQL Server tidak akan memeriksa semua database dan mencoba mencari tahu yang mana yang mungkin Anda maksudkan. Dan kode Anda tidak dapat melakukan kueri basis data apa pun jika batasannya tidak jelas.

Thomas Stringer
sumber
Terima kasih atas semua bantuan, satu hal yang perlu dikomentari adalah, ketika saya mencoba melakukan ini dengan pernyataan Java JDBC. Saya tidak dapat melakukannya dengan menggunakan PreparedStaments, JDBC hanya tidak senang dengan ini. jadi saya menggunakan string concated sebagai pernyataan.
Imellan