Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menangani perilaku DDL Pernyataan berdasarkan skema default atau eksplisit
Saat menggunakan sesi yang diautentikasi AD, skema default untuk sesi saat ini ditentukan oleh kondisi berikut:
-
Jika pengguna database individu ada, skema default pengguna dianggap sebagai skema default sesi saat ini.
-
Jika skema default untuk pengguna database grup ada, skema default pengguna database grup dianggap sebagai skema default sesi saat ini dengan id utama terkecil.
Memahami perilaku CREATE DDL pernyataan
Jika tidak ada skema eksplisit yang ditentukan dalam CREATE DDL pernyataan maka pembuatan objek akan berlangsung dalam skema default sesi saat ini. Jika skema tidak dapat ditentukan apakah default atau eksplisit, maka DDL pernyataan tersebut akan memunculkan kesalahan berikut:
"Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command."
contoh : Skema default tidak ada untuk pengguna grup Windows
Pengguna grup Windows [corp\ accounts-group] memiliki skema NULL default dan pengguna AD user1 mencoba melakukan tanpa menentukan skema secara eksplisit. DDL Karena login windows individu dan pengguna tidak ada untuk user1, itu akan mendapatkan hak istimewa tingkat database pengguna grup Windows [corp\ accounts-group] saja.
1>
create TABLE t2(a int);2>
GOMsg 33557097, Level 16, State 1, Server db-inst, Line 1 Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command.
catatan
Login dan pengguna windows individual tidak ada untuk pengguna pengguna AD1
contoh : Skema default ada untuk pengguna grup Windows
Buat pengguna grup Windows untuk login [corp\ accounts-group] dengan skema default menggunakan sysadmin.
1>
CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group] WITH DEFAULT_SCHEMA = sch_acc;2>
GO1>
CREATE SCHEMA sch_acc AUTHORIZATION [gad\accounts-group];2>
GO1>
SELECT name, principal_id, default_schema_name FROM sys.database_principals WHERE name = 'corp\accounts-group';2>
GOname principal_id default_schema_name ------------------ ------------ ------------------- corp\accounts-group 24162 sch_acc (1 rows affected)
Coba buat objek tanpa menentukan skema secara eksplisit menggunakan pengguna AD user1. Tabel t2 akan dibuat dalam skema default [corp\ accounts-group] Pengguna grup Windows Pemilik objek ini akan sama dengan pemilik skema sch_acc.
1>
CREATE TABLE t_group(a int);2>
GO1>
SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't_group';2>
GOname schema_name ------- ----------- t_group sch_acc (1 rows affected)
catatan
Login dan pengguna windows individual tidak ada untuk pengguna pengguna AD1
contoh : Pengguna database individu juga ada untuk pengguna AD
Jika pengguna database individu juga ada untuk pengguna AD maka objek akan selalu dibuat dalam skema yang terkait dengan pengguna database individu. Jika skema tidak ada untuk pengguna database maka skema dbo akan digunakan. Buat login windows individual dan pengguna database untuk pengguna pengguna AD1. Connect melalui TDS endpoint menggunakan login sysadmin
1>
CREATE LOGIN [corp\user1] FROM WINDOWS;2>
GO1>
CREATE USER [corp\user1] FOR LOGIN [corp\user1] WITH DEFAULT_SCHEMA = sch1;2>
GO1>
CREATE SCHEMA sch1 AUTHORIZATION [corp\user1];2>
GO1>
SELECT name, default_schema_name FROM sys.database_principals WHERE name = 'corp\user1';2>
GOname default_schema_name --------- ------------------- corp\user1 sch1 (1 rows affected)
Connect menggunakan pengguna AD user1 dan coba buat objek tanpa menentukan skema secara eksplisit. Tabel t2 akan dibuat dalam skema sch1. Perhatikan juga bahwa pemilik objek ini akan sama dengan pemilik skema sch1.
1>
CREATE TABLE t2(a int);2>
GO1>
SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't2';2>
GOname schema_name ---- ----------- t2 sch1 (1 rows affected)