Bekerja dengan keamanan di SQL Server 2008, saya mencoba untuk memberikan izin CREATE TABLE pengguna, tetapi hanya dalam skema tertentu. Apakah izin CREATE TABLE hanya berlaku di tingkat basis data?
Bisakah saya membatasi pengguna untuk membuat tabel hanya dalam skema?
Saya sudah mencoba:
USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO
dan
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO
Namun, pengguna masih tidak dapat membuat tabel dalam skema target. Baru setelah saya menjalankan ini, pengguna dapat membuat tabel:
USE [databasename]
GRANT CREATE TABLE to [username]
GO
sumber
Memberi izin untuk membuat tabel ke pengguna tertentu dalam database tertentu tidak hanya memerlukan izin CREATE TABLE tetapi juga membutuhkan izin ALTER untuk skema, misalnya DBO.
Sebagai contoh;
sumber
Tidak ada apa pun tentang izin tersebut dalam dokumentasi izin yang berlaku untuk skema pada 2008 R2: http://msdn.microsoft.com/en-us/library/ms187940.aspx
Oleh karena itu saya akan menyimpulkan: tidak, Anda tidak bisa, membuat tabel hanya dapat dikontrol pada tingkat basis data (ini tampaknya berlaku untuk semua keamanan).
sumber
Tentu kamu bisa. Jika Anda memiliki user1, maka tentukan skema defaultnya sebagai user1 juga. Berikan Tabel CREATE dalam izin basis data kepada pengguna ini. Itu dia. user1 hanya bisa membuat tabel dalam skema user1.
sumber