Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
[! SERTAKAN [sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb(.. . /.. /includes/applys-to-version/sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb.md)]
Membuat skema dalam database saat ini. Transaksi CREATE SCHEMA juga dapat membuat tabel dan tampilan dalam skema baru, dan mengatur GRANTizin , , DENYatau REVOKE pada objek tersebut.
Sintaks
Sintaks untuk SQL Server, Azure SQL Database, dan database SQL di Microsoft Fabric.
CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]
<schema_name_clause> ::=
{
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
<schema_element> ::=
{
table_definition | view_definition | grant_statement |
revoke_statement | deny_statement
}
Sintaks untuk Azure Synapse Analytics dan Gudang Data Paralel.
CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]
Argumen
schema_name
Menentukan nama skema dalam database.
owner_name OTORISASI
Menentukan nama prinsipal tingkat database yang akan memiliki skema. Prinsipal ini mungkin memiliki skema lain, dan mungkin tidak menggunakan skema saat ini sebagai skema defaultnya.
table_definition
CREATE TABLE Menentukan pernyataan yang membuat tabel dalam skema. Prinsipal yang menjalankan pernyataan ini harus memiliki CREATE TABLE izin pada database saat ini.
view_definition
CREATE VIEW Menentukan pernyataan yang membuat tampilan dalam skema. Prinsipal yang menjalankan pernyataan ini harus memiliki CREATE VIEW izin pada database saat ini.
grant_statement
GRANT Menentukan pernyataan yang memberikan izin pada setiap yang dapat diamankan kecuali skema baru.
revoke_statement
REVOKE Menentukan pernyataan yang mencabut izin pada setiap yang dapat diamankan kecuali skema baru.
deny_statement
DENY Menentukan pernyataan yang menolak izin pada skema yang dapat diamankan kecuali skema baru.
Keterangan
Pernyataan yang berisi CREATE SCHEMA AUTHORIZATION, tetapi tidak menentukan nama, hanya diizinkan untuk kompatibilitas mundur. Pernyataan ini tidak menyebabkan kesalahan, tetapi tidak membuat skema.
CREATE SCHEMA dapat membuat skema, tabel, dan tampilan yang dikandungnya, dan GRANT, REVOKE, atau DENY izin pada setiap yang dapat diamankan dalam satu pernyataan. Anda harus menjalankan pernyataan ini sebagai batch terpisah. Objek yang dibuat oleh CREATE SCHEMA pernyataan dibuat di dalam skema yang Anda buat.
CREATE SCHEMA transaksi bersifat atomik. Jika terjadi kesalahan selama eksekusi CREATE SCHEMA pernyataan, tidak ada utang yang ditentukan yang dibuat dan tidak ada izin yang diberikan.
Anda dapat mencantumkan jaminan yang akan dibuat oleh CREATE SCHEMA dalam urutan apa pun, kecuali untuk tampilan yang mereferensikan tampilan lain. Dalam hal ini, tampilan yang direferensikan harus dibuat sebelum tampilan yang mereferensikannya.
Oleh karena itu, GRANT pernyataan dapat memberikan izin pada objek sebelum objek itu sendiri dibuat, atau CREATE VIEW pernyataan dapat muncul sebelum CREATE TABLE pernyataan yang membuat tabel yang direferensikan oleh tampilan. Selain itu, CREATE TABLE pernyataan dapat mendeklarasikan kunci asing ke tabel yang ditentukan nanti dalam CREATE SCHEMA pernyataan.
Catatan
DENY dan REVOKE didukung di dalam CREATE SCHEMA pernyataan.
DENY dan REVOKE klausul dijalankan dalam urutan muncul dalam CREATE SCHEMA pernyataan.
Prinsipal yang dijalankan CREATE SCHEMA dapat menentukan prinsipal database lain sebagai pemilik skema yang sedang dibuat. Tindakan ini memerlukan izin tambahan, seperti yang dijelaskan di bagian Izin nanti di artikel ini.
Skema baru dimiliki oleh salah satu prinsipal tingkat database berikut: pengguna database, peran database, atau peran aplikasi. Objek yang dibuat dalam skema dimiliki oleh pemilik skema, dan memiliki null principal_id di sys.objects. Anda dapat mentransfer kepemilikan objek yang berisi skema ke prinsipal tingkat database apa pun, tetapi pemilik skema selalu mempertahankan CONTROL izin pada objek dalam skema.
Catatan
Skema tidak setara dengan pengguna database. Gunakan tampilan Katalog sistem untuk mengidentifikasi perbedaan antara pengguna database dan skema.
Skema implisit dan pembuatan pengguna
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Dalam beberapa kasus, pengguna dapat menggunakan database tanpa memiliki akun pengguna database (prinsipal database dalam database). Kondisi ini dapat terjadi dalam situasi berikut:
Login memiliki
CONTROL SERVERhak istimewa.Pengguna Windows tidak memiliki akun pengguna database individual (prinsip database dalam database), tetapi mengakses database sebagai anggota grup Windows yang memiliki akun pengguna database (prinsip database untuk grup Windows).
Pengguna Microsoft Entra tidak memiliki akun pengguna database individual (prinsipal database dalam database), tetapi mengakses database sebagai anggota grup Microsoft Entra yang memiliki akun pengguna database (prinsip database untuk grup Microsoft Entra).
Saat pengguna tanpa akun pengguna database membuat objek tanpa menentukan skema yang ada, prinsip database dan skema default dibuat dalam database secara otomatis untuk pengguna tersebut. Prinsipal dan skema database yang dibuat memiliki nama yang sama dengan nama yang digunakan pengguna saat menyambungkan ke SQL Server (nama login autentikasi SQL Server atau nama pengguna Windows).
Perilaku ini diperlukan untuk memungkinkan pengguna yang didasarkan pada grup Windows untuk membuat dan memiliki objek. Namun, hal ini dapat mengakibatkan pembuatan skema dan pengguna yang tidak disengaja. Untuk menghindari pembuatan pengguna dan skema secara implisit, jika memungkinkan secara eksplisit membuat prinsipal database dan menetapkan skema default. Atau secara eksplisit menyatakan skema yang ada saat membuat objek dalam database, menggunakan nama objek dua atau tiga bagian.
Pembuatan implisit pengguna Microsoft Entra tidak dimungkinkan di SQL Database. Karena membuat pengguna Microsoft Entra dari penyedia eksternal harus memeriksa status pengguna di ID Microsoft Entra, membuat pengguna gagal dengan kesalahan 2760: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it. Lalu kesalahan 2759: CREATE SCHEMA failed due to previous errors.
Upaya untuk membuat atau mengubah skema mengakibatkan kesalahan 15151: Cannot find the user '', because it does not exist or you do not have permission., juga diikuti oleh kesalahan 2759. Untuk mengatasi kesalahan ini, buat pengguna Microsoft Entra dari penyedia eksternal, atau ubah grup Microsoft Entra untuk menetapkan skema default. Kemudian jalankan ulang pernyataan yang membuat objek.
Di titik akhir analitik SQL dan Gudang di Microsoft Fabric, nama skema tidak dapat berisi / atau \ atau diakhir .dengan .
Pemberitahuan penghentian
CREATE SCHEMA pernyataan yang tidak menentukan nama skema saat ini didukung untuk kompatibilitas mundur. Pernyataan ini sebenarnya tidak membuat skema dalam database, tetapi membuat tabel dan tampilan, dan memberikan izin. Prinsipal tidak memerlukan CREATE SCHEMA izin untuk menjalankan bentuk sebelumnya dari CREATE SCHEMA, karena tidak ada skema yang sedang dibuat. Fungsionalitas ini akan dihapus dari rilis SQL Server di masa mendatang.
Izin
Memerlukan izin CREATE SCHEMA pada database.
Untuk membuat objek yang ditentukan dalam CREATE SCHEMA pernyataan, pengguna harus memiliki izin yang CREATE sesuai.
Untuk menentukan pengguna lain sebagai pemilik skema yang sedang dibuat, pemanggil harus memiliki IMPERSONATE izin pada pengguna tersebut. Jika peran database ditentukan sebagai pemilik, pemanggil harus memiliki salah satu hal berikut: keanggotaan dalam peran atau ALTER izin pada peran tersebut.
Untuk sintaksis yang kompatibel dengan mundur, tidak ada izin untuk CREATE SCHEMA diperiksa karena tidak ada skema yang sedang dibuat.
Izin di Fabric Data Warehouse
Di Gudang Data Fabric, selain CREATE SCHEMA izin, pengguna harus menjadi anggota peran ruang kerja Admin, Anggota, atau Kontributor.
Contoh
J. Membuat skema dan memberikan izin
Contoh berikut membuat skema Sprockets yang dimiliki oleh Annik yang berisi tabel NineProngs. Pernyataan tersebut memberikan SELECT kepada Mandar dan menyangkal SELECT kepada Prasanna.
Sprockets dan NineProngs dibuat dalam satu pernyataan.
USE AdventureWorks2022;
GO
CREATE SCHEMA Sprockets AUTHORIZATION Annik
CREATE TABLE NineProngs
(
source INT,
cost INT,
partnumber INT
)
GRANT SELECT ON SCHEMA::Sprockets TO Mandar
DENY SELECT ON SCHEMA::Sprockets TO Prasanna;
GO
Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)
B. Membuat skema dan tabel dalam skema
Contoh berikut membuat skema Sales lalu membuat tabel Sales.Region dalam skema tersebut.
CREATE SCHEMA Sales;
GO
CREATE TABLE Sales.Region
(
Region_id INT NOT NULL,
Region_Name CHAR (5) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO
C. Mengatur pemilik skema
Contoh berikut membuat Production skema, dan ditetapkan Mary sebagai pemilik.
CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO