Kami menambahkan login server dan pengguna database yang memetakan Windows Group ke contoh SQL 2008 R2 menggunakan skrip berikut, dengan nama yang diubah untuk anonimitas:
USE master
go
CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
go
USE AppDb
go
CREATE USER [DOMAIN\AppUsers] FOR LOGIN
[DOMAIN\AppUsers]
go
EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers'
go
Ketika akun DOMAIN \ User1 masuk ke aplikasi, User1 menanyakan tabel dalam skema dbo karena User1 adalah anggota dari DOMAIN \ AppUsers, tetapi aplikasi ini memungkinkan pengguna untuk membuat tabel juga. Saat membuat tabel ini tanpa menentukan skema , SQL Server melakukan hal berikut:
- Membuat pengguna 'DOMAIN \ User1' di AppDb yang menggunakan info masuk 'DOMAIN \ User1' yang tidak tercantum dalam SSMS \ Security \ Login sebagai contoh.
- Membuat skema 'DOMAIN \ User1' di AppDb.
- Membuat tabel tersebut menggunakan skema 'DOMAIN \ User1' yang baru.
Saya benar-benar bingung dengan hasil ini. Ini pertanyaan saya:
- Saya berharap pembuatan tabel gagal daripada membuat objek tambahan. Dapatkah seseorang mengarahkan saya ke bagian Buku Online yang menjelaskan hal ini?
- Mengapa server tidak membuat skema 'DOMAIN \ AppUsers' dan menambahkan tabel baru ke skema itu jika ingin menambah skema?
- Juga, bagaimana database menggunakan login yang tidak ditampilkan di SSMS \ Security \ Login?
- Melihat pengguna 'DOMAIN \ User1' di SSMS \ Databases \ AppDb \ Security \ Users, ikon pengguna memiliki panah merah kecil yang mengarah ke bawah. Apa artinya?
Kami baru mulai menggunakan Otentikasi Windows di dalam organisasi yang lebih memilih Otentikasi SQL untuk kesederhanaan, jadi saya yakin pertanyaan saya berasal dari tidak mengetahui perbedaan. Kode ini ditulis jauh sebelum kami mempertimbangkan untuk menggunakan Otentikasi Windows, jadi saya yakin kami perlu meningkatkan pemahaman kami tentang membuat skema baru ketika masuk menggunakan Otentikasi Windows sebagai orang lain selain pemilik basis data.
Jika Anda tidak tahu, saya yang mendorong untuk menggunakan Windows Authentication melalui SQL Authentication. Jika kami tidak memahami ini dengan benar, kami akan kembali ke SQL Authentication.