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.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database di Microsoft Fabric
Menambahkan pengguna ke database saat ini. Daftar berikut menunjukkan 13 jenis pengguna beserta contoh sintaks paling dasar:
Note
Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.
Pengguna berdasarkan masuk master
Pengguna berdasarkan login berdasarkan akun Windows Direktori Aktif.
CREATE USER [Contoso\test];Pengguna berdasarkan login berdasarkan grup Windows.
CREATE USER [Contoso\Sales];Pengguna berdasarkan login yang menggunakan autentikasi SQL Server.
CREATE USER Mary;Pengguna berdasarkan login Microsoft Entra.
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]Note
Prinsipal server Microsoft Entra (login) saat ini berada dalam pratinjau publik untuk Azure SQL Database.
Note
Database SQL di Microsoft Fabric tidak mendukung login atau pengguna berdasarkan login.
Pengguna yang mengautentikasi di database - Gunakan pengguna yang terkandung untuk membantu membuat database Anda lebih portabel.
Selalu diizinkan di Azure SQL Database. Hanya diizinkan dalam database mandiri di SQL Server.
Pengguna berdasarkan pengguna Windows yang tidak memiliki login.
CREATE USER [Contoso\test];Pengguna berdasarkan grup Windows yang tidak memiliki login.
CREATE USER [Contoso\Sales];Pengguna di SQL Database atau Azure Synapse Analytics berdasarkan pengguna Microsoft Entra.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;Pengguna database mandiri dengan kata sandi. (Tidak tersedia di Azure Synapse Analytics.)
CREATE USER Mary WITH PASSWORD = '********';
Pengguna berdasarkan prinsipal Windows yang terhubung melalui login grup Windows
Pengguna berdasarkan pengguna Windows yang tidak memiliki login, tetapi dapat tersambung ke Mesin Database melalui keanggotaan di grup Windows.
CREATE USER [Contoso\test];Pengguna berdasarkan grup Windows yang tidak memiliki login, tetapi dapat tersambung ke Mesin Database melalui keanggotaan di grup Windows yang berbeda.
CREATE USER [Contoso\test];
Pengguna yang tidak dapat mengautentikasi - Pengguna ini tidak dapat masuk ke SQL Server atau SQL Database.
- Pengguna tanpa data masuk. Tidak dapat masuk tetapi dapat diberikan izin.
CREATE USER CustomApp WITHOUT LOGIN; - Pengguna berdasarkan sertifikat. Tidak dapat masuk tetapi dapat diberikan izin dan dapat menandatangani modul.
CREATE USER TestProcess FOR CERTIFICATE Contoso50; - Pengguna berdasarkan kunci asimetris. Tidak dapat masuk tetapi dapat diberikan izin dan dapat menandatangani modul.
CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;
Syntax
Sintaks untuk SQL Server, Azure SQL Database, dan Azure SQL Managed Instance
-- Syntax Users based on logins in master
CREATE USER user_name
[
{ FOR | FROM } LOGIN login_name
]
[ WITH <limited_options_list> [ , ... ] ]
[ ; ]
-- Users that authenticate at the database
CREATE USER
{
windows_principal [ WITH <options_list> [ , ... ] ]
| user_name WITH PASSWORD = 'password' [ , <options_list> [ , ... ]
| Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH OBJECT_ID = 'objectid' ]
}
[ ; ]
-- Users based on Windows principals that connect through Windows group logins
CREATE USER
{
windows_principal [ { FOR | FROM } LOGIN windows_principal ]
| user_name { FOR | FROM } LOGIN windows_principal
}
[ WITH <limited_options_list> [ , ... ] ]
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{
WITHOUT LOGIN [ WITH <limited_options_list> [ , ... ] ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| SID = sid
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
-- SQL Database syntax when connected to a federation member
CREATE USER user_name
[;]
-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
[ { FOR | FROM } LOGIN login_name ]
| FROM EXTERNAL PROVIDER
[ WITH <limited_options_list> [ , ... ] ]
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
Sintaks untuk Azure Synapse Analytics
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Sintaks untuk database SQL di Microsoft Fabric dan Azure SQL Database
CREATE USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ , ... ] ]
| Microsoft_Entra_principal WITH <options_list> [ , ... ]
}
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{ WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| OBJECT_ID = 'objectid'
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| SID = sid
| TYPE = { X | E }
Arguments
user_name
Menentukan nama tempat pengguna diidentifikasi di dalam database ini. user_name adalah sysname. Panjangnya bisa hingga 128 karakter. Saat membuat pengguna berdasarkan prinsipal Windows, nama utama Windows menjadi nama pengguna kecuali nama pengguna lain ditentukan.
LOGIN login_name
Menentukan login tempat pengguna database sedang dibuat. login_name harus berupa login yang valid di server. Dapat berupa login berdasarkan prinsipal Windows (pengguna atau grup), login menggunakan autentikasi SQL Server, atau login menggunakan perwakilan Microsoft Entra (pengguna, grup, atau aplikasi). Ketika masuk SQL Server ini memasuki database, SQL Server memperoleh nama dan ID pengguna database yang sedang dibuat. Saat membuat login yang dipetakan dari prinsipal Windows, gunakan format <>\< Misalnya, lihat Ringkasan Sintaks.
Jika CREATE USER pernyataan adalah satu-satunya pernyataan dalam batch SQL, Azure SQL Database mendukung klausa WITHLOGIN. Jika CREATE USER pernyataan bukan satu-satunya pernyataan dalam batch SQL atau berjalan dalam SQL dinamis, klausa WITH LOGIN tidak didukung.
DENGAN DEFAULT_SCHEMA = schema_name
Menentukan skema pertama yang dicari oleh server ketika menyelesaikan nama objek untuk pengguna database ini.
'windows_principal'
Menentukan prinsipal Windows tempat pengguna database sedang dibuat. windows_principal bisa menjadi pengguna Windows, atau grup Windows. Pengguna akan dibuat meskipun windows_principal tidak memiliki login. Saat menyambungkan ke SQL Server, jika windows_principal tidak memiliki login, prinsipal Windows harus mengautentikasi di Mesin Database melalui keanggotaan di grup Windows yang memiliki login, atau string koneksi harus menentukan database yang terkandung sebagai katalog awal. Saat membuat pengguna dari prinsipal Windows, gunakan format <>\< Misalnya, lihat Ringkasan Sintaks. Pengguna berdasarkan pengguna Direktori Aktif, terbatas pada nama kurang dari 21 karakter.
'Microsoft_Entra_principal'
Berlaku untuk: SQL Server 2022 (16.x) dan versi berikutnya, SQL Database, SQL Managed Instance, Azure Synapse Analytics, database SQL di Microsoft Fabric
Menentukan perwakilan Microsoft Entra tempat pengguna database sedang dibuat. Microsoft_Entra_principal dapat berupa pengguna Microsoft Entra, grup Microsoft Entra, atau aplikasi Microsoft Entra. (Pengguna Microsoft Entra tidak dapat memiliki login Autentikasi Windows di SQL Database; hanya pengguna database.) string koneksi harus menentukan database yang terkandung sebagai katalog awal.
Untuk prinsipal Microsoft Entra, CREATE USER sintaks memerlukan:
UserPrincipalName dari objek Microsoft Entra untuk pengguna Microsoft Entra.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Prinsipal server Microsoft Entra (login) memperkenalkan pembuatan pengguna yang dipetakan ke login Microsoft Entra dalam
masterdatabase. Misalnya:CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];Pengguna Microsoft Entra dan perwakilan layanan (aplikasi) yang merupakan anggota lebih dari 2048 grup keamanan Microsoft Entra tidak didukung untuk masuk ke database di Azure SQL Database, Azure SQL Managed Instance, atau Azure Synapse.
DisplayName objek Microsoft Entra untuk grup Microsoft Entra dan Aplikasi Microsoft Entra. Jika Anda memiliki kelompok keamanan Perawat , Anda akan menggunakan:
CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
Untuk informasi selengkapnya, lihat Menyambungkan ke SQL Database Dengan Menggunakan autentikasi Microsoft Entra.
Untuk informasi selengkapnya tentang autentikasi Microsoft Entra di SQL Server, lihat Tutorial: Menyiapkan autentikasi Microsoft Entra untuk SQL Server yang diaktifkan oleh Azure Arc.
DENGAN KATA SANDI = 'kata sandi'
Berlaku untuk: SQL Server 2012 (11.x) dan versi berikutnya, SQL Database.
Hanya dapat digunakan dalam database yang terkandung. Menentukan kata sandi untuk pengguna yang sedang dibuat.
Mulai dari SQL Server 2012 (11.x), SQL Server dan Azure SQL Database menggunakan hash SHA-512 yang dikombinasikan dengan salt acak dan unik 32-bit. Metode ini membuatnya tidak layak secara statistik bagi penyerang untuk menyimpulkan kata sandi.
SQL Server 2025 (17.x) memperkenalkan algoritma hash iterasi, RFC2898, juga dikenal sebagai fungsi derivasi kunci berbasis kata sandi (PBKDF). Algoritma ini masih menggunakan SHA-512 tetapi hash kata sandi beberapa kali (100.000 iterasi), secara signifikan memperlambat serangan brute-force. Perubahan ini meningkatkan perlindungan kata sandi sebagai respons terhadap ancaman keamanan yang berkembang dan membantu pelanggan mematuhi pedoman NIST SP 800-63b. Peningkatan keamanan ini menggunakan algoritma hashing yang lebih kuat, yang dapat sedikit meningkatkan waktu masuk untuk login Autentikasi SQL. Dampaknya umumnya lebih rendah di lingkungan dengan pengumpulan koneksi, tetapi mungkin lebih terlihat dalam skenario tanpa pengumpulan atau di mana latensi masuk dipantau dengan cermat.
TANPA LOGIN
Menentukan bahwa pengguna tidak boleh dipetakan ke login yang ada.
CERTIFICATE cert_name
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru, SQL Database, SQL database di Microsoft Fabric
Menentukan sertifikat tempat pengguna database sedang dibuat.
ASYMMETRIC KEY asym_key_name
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru, SQL Database, SQL database di Microsoft Fabric
Menentukan kunci asimetris tempat pengguna database sedang dibuat.
DEFAULT_LANGUAGE = { NONE | <lcid> | <nama> bahasa | <salia> bahasa }
Berlaku untuk: SQL Server 2012 (11.x) dan versi berikutnya, SQL Database
Menentukan bahasa default untuk pengguna baru. Jika Anda menentukan bahasa default untuk pengguna dan kemudian mengubah bahasa default database, bahasa default pengguna tetap sesuai dengan yang ditentukan. Jika Anda tidak menentukan bahasa default, pengguna akan mendapatkan bahasa default dari database. Jika Anda tidak menentukan bahasa default untuk pengguna dan kemudian mengubah bahasa default database, bahasa default pengguna akan berubah menjadi bahasa default baru untuk database.
Important
DEFAULT_LANGUAGE hanya digunakan untuk pengguna database mandiri.
SID = sid
Berlaku untuk: SQL Server 2012 (11.x) dan versi berikutnya, serta untuk database SQL di Microsoft Fabric.
Dalam SQL Server 2012 (11.x) dan versi berikutnya, hanya berlaku untuk pengguna dengan kata sandi (autentikasi SQL Server) dalam database yang terkandung. Menentukan SID pengguna database baru. Jika Anda tidak memilih opsi ini, SQL Server secara otomatis menetapkan SID. Gunakan parameter SID untuk membuat pengguna di beberapa database yang memiliki identitas (SID) yang sama. Fitur ini berguna saat membuat pengguna di beberapa basis data untuk mempersiapkan failover Always On. Untuk menentukan SID pengguna, kueri sys.database_principals.
Dalam database SQL di Microsoft Fabric, sid harus menjadi ID yang valid dari perwakilan Microsoft Entra yang ditentukan. Jika prinsipal adalah pengguna atau grup, ID tersebut harus berupa ID objek Microsoft Entra dari pengguna atau grup tersebut. Jika Microsoft Entra principal adalah service principal (aplikasi atau identitas terkelola), ID tersebut harus berupa application ID atau client ID. ID yang ditentukan harus berupa binary(16) nilai. Mesin Database tidak memvalidasi ID yang ditentukan di Microsoft Entra. Jika Anda menggunakan argumen tersebut SID , Anda harus menyertakan TYPE.
TYPE = [ E | X ]
Berlaku untuk: Database SQL di Microsoft Fabric dan Azure SQL Database.
Menentukan jenis perwakilan Microsoft Entra.
E menunjukkan bahwa prinsipal adalah pengguna atau perwakilan layanan (aplikasi atau identitas terkelola).
X menunjukkan bahwa prinsipal adalah grup.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ AKTIF | NONAKTIF ]
Berlaku untuk: SQL Server 2016 (13.x) dan versi berikutnya, SQL Database.
Menekan pemeriksaan metadata kriptografi pada server dalam operasi penyalinan massal. Ini memungkinkan pengguna menyalin data terenkripsi secara massal antara tabel atau database, tanpa mendekripsi data. Defaultnya adalah NONAKTIF.
Warning
Penggunaan opsi ini yang tidak tepat dapat menyebabkan kerusakan data. Untuk informasi selengkapnya, lihat Memigrasikan Data Sensitif yang Dilindungi oleh Always Encrypted.
DARI PENYEDIA EKSTERNAL
Berlaku untuk: SQL Server 2022 (16.x) dan versi berikutnya, SQL Database, Azure SQL Managed Instance, SQL database di Microsoft Fabric
Menentukan bahwa prinsipal adalah untuk autentikasi Microsoft Entra. SQL Server secara otomatis memvalidasi nama utama yang disediakan di Microsoft Entra.
Jika principal yang mengeluarkan CREATE USER pernyataan adalah user principal Microsoft Entra, principal atau grup principal harus berada dalam peran Directory Readers di Microsoft Entra.
Di SQL Database dan Azure SQL Managed Instance, jika perwakilan yang mengeluarkan CREATE USER pernyataan adalah perwakilan layanan, identitas server database atau instans terkelola harus berada dalam peran Pembaca Direktori di Microsoft Entra.
Di database SQL di Microsoft Fabric, Anda tidak dapat menggunakan FROM EXTERNAL PROVIDER jika principal yang dikeluarkan CREATE USER adalah service principal di Microsoft Entra. Perwakilan layanan harus menggunakan argumen TYPE dan SID untuk membuat pengguna untuk perwakilan Microsoft Entra.
DENGAN OBJECT_ID = 'objectid'
Berlaku untuk: SQL Server 2025 (17.x) dan versi yang lebih baru, SQL Database, Azure SQL Managed Instance, database SQL di Microsoft Fabric
Menentukan ID Objek Microsoft Entra. Jika Anda menentukan OBJECT_ID, alias user_name yang didefinisikan pengguna dapat dibuat dari nama tampilan utama asli dengan akhiran tambahan. user_name harus berupa nama unik dalam sys.database_principals tampilan dan mematuhi semua batasan lainnya sysname . Untuk informasi lebih lanjut tentang penggunaan opsi iniWITH OBJECT_ID, lihat login Microsoft Entra dan pengguna dengan nama tampilan nonunik.
Note
Dimulai dengan SQL Server 2025 (17.x), opsi ini WITH OBJECT_ID didukung untuk login Microsoft Entra dan pengguna dengan nama tampilan unik.
Jika nama tampilan prinsipal layanan bukan duplikat, gunakan pernyataan default CREATE LOGIN atau CREATE USER pernyataan.
WITH OBJECT_ID Ekstensi ini adalah item perbaikan pemecahan masalah yang diterapkan untuk digunakan dengan perwakilan layanan nonunique. Menggunakannya dengan perwakilan layanan unik tidak disarankan.
WITH OBJECT_ID Menggunakan ekstensi untuk perwakilan layanan tanpa menambahkan akhiran berhasil dijalankan, tetapi tidak jelas perwakilan layanan mana yang dibuat untuk masuk atau pengguna. Disarankan untuk membuat alias dengan menggunakan akhiran untuk mengidentifikasi prinsipal layanan secara unik.
Remarks
Jika Anda menghilangkan FOR LOGIN, pengguna database baru akan dipetakan ke login SQL Server dengan nama yang sama.
Skema default adalah skema pertama yang dicari server ketika menyelesaikan nama objek untuk pengguna database ini. Kecuali ditentukan lain, skema default adalah pemilik objek yang dibuat oleh pengguna database ini.
Jika pengguna memiliki skema default, server akan menggunakan skema default tersebut. Jika pengguna tidak memiliki skema default tetapi merupakan anggota grup yang memiliki skema default, server menggunakan skema default grup tersebut. Jika pengguna tidak memiliki skema default dan termasuk dalam beberapa grup, server menggunakan skema default yang dikonfigurasi dari grup Windows dengan skema terendah principal_id di antara grup yang secara eksplisit ditetapkan secara default. Anda tidak dapat secara eksplisit memilih salah satu skema default yang tersedia sebagai skema yang diinginkan. Jika server tidak dapat menentukan skema default untuk pengguna, server menggunakan skema tersebut dbo .
Anda bisa mengatur DEFAULT_SCHEMA sebelum membuat skema yang ditunjuk.
Anda tidak dapat menentukan DEFAULT_SCHEMA kapan membuat pengguna yang dipetakan ke sertifikat atau kunci asimetris.
Server mengabaikan nilai DEFAULT_SCHEMA jika pengguna adalah anggota sysadmin peran server tetap. Semua anggota sysadmin peran server tetap memiliki skema default sebesar dbo.
Klausa ini WITHOUT LOGIN membuat pengguna yang tidak dipetakan ke login yang diautentikasi SQL. Ini dapat tersambung ke database lain sebagai tamu. Anda dapat menetapkan izin kepada pengguna ini tanpa perlu login. Ketika konteks keamanan berubah menjadi pengguna tanpa login, pengguna asli menerima izin pengguna tanpa login. Sebagai contoh, lihat D. Membuat dan menggunakan pengguna tanpa login.
Hanya pengguna yang dipetakan ke prinsipal Windows yang dapat berisi karakter garis miring terbalik (\).
Anda tidak bisa menggunakannya CREATE USER untuk membuat pengguna tamu karena pengguna tamu sudah ada di setiap database. Anda dapat mengaktifkan pengguna tamu dengan memberinya CONNECT izin, seperti yang ditunjukkan:
GRANT CONNECT TO guest;
GO
Anda dapat melihat informasi tentang pengguna basis data di tampilan katalog sys.database_principals .
Gunakan ekstensi FROM EXTERNAL PROVIDER sintaks untuk membuat login Microsoft Entra tingkat server di Azure SQL Database dan Azure SQL Managed Instance. Dengan menggunakan login Microsoft Entra, Anda dapat memetakan prinsipal Microsoft Entra tingkat basis data ke login Microsoft Entra tingkat server. Untuk membuat pengguna Microsoft Entra dari login Microsoft Entra, gunakan sintaks berikut:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Saat Anda membuat pengguna di database Azure SQL, login_name harus sesuai dengan login Microsoft Entra yang sudah ada. Jika tidak, menggunakan klausa hanya FROM EXTERNAL PROVIDER membuat pengguna Microsoft Entra tanpa login di master database. Sebagai contoh, perintah berikut membuat pengguna yang terkandung:
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
Ringkasan sintaks
Pengguna berdasarkan masuk master
Daftar berikut menunjukkan kemungkinan sintaks untuk pengguna berdasarkan login. Opsi skema default tidak tercantum.
CREATE USER [Domain1\WindowsUserTest]CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]CREATE USER SQLAUTHLOGINCREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGINCREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN
Pengguna yang mengautentikasi di database
Daftar berikut ini memperlihatkan kemungkinan sintaks untuk pengguna yang hanya dapat digunakan dalam database mandiri. Pengguna yang dibuat tidak akan terkait dengan login apa pun di database master . Opsi skema dan bahasa default tidak tercantum.
Important
Sintaks ini memberi pengguna akses ke database dan juga memberikan akses baru ke Mesin Database.
CREATE USER [Domain1\WindowsUserTest]CREATE USER [Domain1\WindowsGroupManagers]CREATE USER Test WITH PASSWORD = '<strong password>'
Pengguna berdasarkan prinsipal Windows tanpa masuk dalam master database sistem
Daftar berikut ini memperlihatkan kemungkinan sintaks untuk pengguna yang memiliki akses ke Mesin Database melalui grup Windows tetapi tidak memiliki login dalam master database sistem. Sintaks ini dapat digunakan di semua jenis database. Opsi skema dan bahasa default tidak tercantum.
Sintaks ini mirip dengan pengguna berdasarkan login di master, tetapi kategori pengguna ini tidak memiliki login di master. Pengguna harus memiliki akses ke Mesin Database melalui login grup Windows.
Sintaks ini mirip dengan pengguna database mandiri berdasarkan prinsipal Windows, tetapi kategori pengguna ini tidak mendapatkan akses baru ke Mesin Database.
CREATE USER [Domain1\WindowsUserTest]CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
Pengguna yang tidak dapat mengautentikasi
Daftar berikut ini memperlihatkan kemungkinan sintaks untuk pengguna yang tidak dapat masuk ke SQL Server.
CREATE USER RIGHTSHOLDER WITHOUT LOGINCREATE USER CERTUSER FOR CERTIFICATE SpecialCertCREATE USER CERTUSER FROM CERTIFICATE SpecialCertCREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKeyCREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Keamanan
Membuat pengguna memberikan akses ke database tetapi tidak secara otomatis memberikan akses apa pun ke objek dalam database. Setelah membuat pengguna, tindakan umum adalah menambahkan pengguna ke peran database yang memiliki izin untuk mengakses objek database, atau memberikan izin objek kepada pengguna. Untuk informasi tentang mendesain sistem izin, lihat Mulai menggunakan Izin Mesin Database.
Pertimbangan khusus untuk basis data yang terkandung
Saat menyambungkan ke database mandiri, jika pengguna tidak memiliki login dalam master database, string koneksi harus menyertakan nama database yang terkandung sebagai katalog awal. Parameter katalog awal selalu diperlukan untuk pengguna database mandiri dengan kata sandi.
Dalam database mandiri, membuat pengguna membantu memisahkan database dari instans Mesin Database sehingga database dapat dengan mudah dipindahkan ke instans SQL Server lain. Untuk informasi selengkapnya, lihat Database Mandiri dan Pengguna Database Terkandung - Membuat Database Anda Portabel. Untuk mengubah pengguna database dari pengguna berdasarkan login yang diautentikasi SQL menjadi pengguna database terkandung dengan kata sandi, lihat sp_migrate_user_to_contained (Transact-SQL).
Dalam database mandiri, pengguna tidak harus memiliki login dalam master database. Administrator Mesin Database harus memahami bahwa akses ke database mandiri dapat diberikan di tingkat database, bukan tingkat Mesin Database. Untuk informasi selengkapnya, lihat Praktik Terbaik Keamanan dengan Database Terkandung.
Saat menggunakan pengguna database mandiri di Azure SQL Database, konfigurasikan akses menggunakan aturan firewall tingkat database, bukan aturan firewall tingkat server. Untuk informasi selengkapnya, lihat sp_set_database_firewall_rule (Azure SQL Database).
Untuk pengguna basis data yang terpapar SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics yang memiliki basis data, SSMS mendukung autentikasi multifaktor. Untuk informasi selengkapnya, lihat Menggunakan autentikasi multifaktor Microsoft Entra.
Permissions
Memerlukan izin ALTER ANY USER pada database.
Izin untuk SQL Server 2022 dan versi setelahnya
Memerlukan izin CREATE USER pada database.
Examples
A. Buat pengguna basis data berdasarkan login SQL Server
Contoh berikut pertama-tama membuat login SQL Server yang dinamai test dalam master database, lalu membuat pengguna test database yang sesuai di AdventureWorks2025.
--Connect to the master database
CREATE LOGIN test
WITH PASSWORD = '<strong password>';
Ubah ke database pengguna. Misalnya, di SQL Server gunakan USE [AdventureWorks2022] pernyataan . Di Azure SQL Database, pernyataan tersebut USE tidak tersedia. Sebaliknya, hubungkan langsung ke database yang dimaksud dan jalankan sisa kode sampel. Contoh berbasis login ini tidak berlaku untuk database SQL di Microsoft Fabric, yang tidak mendukung login atau pengguna berdasarkan login.
--Connect to a user database
CREATE USER test FOR LOGIN test;
GO
B. Buat pengguna database dengan skema default
Contoh berikut pertama-tama membuat login server dengan nama testlogin sandi yang Anda berikan, lalu membuat pengguna testuserdatabase yang sesuai , dengan skema Marketingdefault .
--Connect to the master database
CREATE LOGIN testlogin
WITH PASSWORD = '<strong password>';
Ubah ke database pengguna. Misalnya, di SQL Server gunakan USE [AdventureWorks2022] pernyataan . Di Azure SQL Database dan SQL database di Microsoft Fabric, pernyataan tersebut USE tidak tersedia. Sebaliknya, hubungkan langsung ke database yang dimaksud dan jalankan sisa kode sampel.
--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
WITH DEFAULT_SCHEMA = Marketing;
C. Buat pengguna database dari sertifikat
Contoh berikut membuat pengguna test database dari sertifikat Contoso_Cert. Untuk informasi selengkapnya, lihat CREATE CERTIFICATE (Transact-SQL).
USE AdventureWorks2022;
CREATE CERTIFICATE Contoso_Cert
ENCRYPTION BY PASSWORD = '<strong password>'
WITH SUBJECT = 'Contoso Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER test FOR CERTIFICATE Contoso_Cert;
GO
D. Buat dan menggunakan pengguna tanpa login
Contoh berikut membuat pengguna CustomApp database yang tidak memetakan ke login SQL Server. Contoh kemudian memberikan izin pengguna adventure-works\test untuk meniru CustomApp pengguna.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\test] ;
GO
Untuk menggunakan CustomApp kredensial, pengguna adventure-works\test menjalankan pernyataan berikut.
EXECUTE AS USER = 'CustomApp' ;
GO
Untuk kembali ke adventure-works\test kredensial, pengguna menjalankan pernyataan berikut.
REVERT ;
GO
E. Buat pengguna database terkandung dengan kata sandi
Contoh berikut membuat pengguna database mandiri dengan kata sandi. Anda hanya dapat menjalankan contoh ini dalam database yang terkandung.
Contoh ini bekerja di SQL Database jika Anda menghapus DEFAULT_LANGUAGE.
USE AdventureWorks2022;
GO
CREATE USER test
WITH PASSWORD='<password>'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Buat pengguna database terkandung untuk login domain
Contoh berikut membuat pengguna database terkandung untuk login bernama domain test bernama Contoso. Anda hanya dapat menjalankan contoh ini dalam database yang terkandung.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\test] ;
GO
G. Buat pengguna database terkandung dengan SID tertentu
Contoh berikut membuat pengguna database terkandung SQL Server yang terautentikasi bernama TestUser. Anda hanya dapat menjalankan contoh ini dalam database yang terkandung.
USE AdventureWorks2022;
GO
CREATE USER TestUser WITH PASSWORD = '<strong password>'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Buat pengguna untuk menyalin data terenkripsi
Contoh berikut membuat pengguna yang dapat menyalin data yang dilindungi oleh fitur Always Encrypted dari satu set tabel, yang berisi kolom terenkripsi, ke kumpulan tabel lain dengan kolom terenkripsi (dalam database yang sama atau berbeda). Untuk informasi selengkapnya, lihat Memigrasikan Data Sensitif yang Dilindungi oleh Always Encrypted.
Berlaku untuk: SQL Server 2016 (13.x) dan versi berikutnya, SQL Database.
CREATE USER [test]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
I. Buat pengguna Microsoft Entra dari login Microsoft Entra di Azure SQL Database dan Azure SQL Managed Instance
Untuk membuat pengguna Microsoft Entra dari login Microsoft Entra, gunakan sintaks berikut.
Masuk ke server logis Azure SQL Database Anda atau SQL Managed Instance menggunakan login Microsoft Entra. Gunakan login admin server atau login yang merupakan anggota loginmanager peran di SQL Database, atau diberikan sysadmin peran di SQL Managed Instance.
Skrip T-SQL berikut membuat pengguna test@contoso.comMicrosoft Entra , dari login test@contoso.com. Login ini dibuat dalam CREATE LOGIN contoh.
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO
Important
Saat membuat USER login dari Microsoft Entra, tentukan user_name sebagai login_name yang sama dari LOGIN.
Membuat pengguna Microsoft Entra sebagai grup dari login Microsoft Entra yang merupakan grup didukung.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];
GO
Anda juga dapat membuat pengguna Microsoft Entra dari login Microsoft Entra yang merupakan grup.
CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];
GO
J. Membuat pengguna database mandiri dari perwakilan Microsoft Entra
Sintaks berikut membuat pengguna test@contoso.comMicrosoft Entra , dalam database tanpa login terkait di master. Mesin Database memvalidasi pengguna yang ditentukan ada di Microsoft Entra.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
GO
Di database SQL di Microsoft Fabric, Anda tidak dapat menggunakan FROM EXTERNAL PROVIDER jika principal yang dikeluarkan CREATE USER adalah service principal di Microsoft Entra.
K. Membuat pengguna database mandiri dari perwakilan Microsoft Entra tanpa validasi
Berlaku untuk: Database SQL di Microsoft Fabric dan Azure SQL Database
Contoh di bagian ini membuat pengguna database untuk perwakilan Microsoft Entra, tanpa memvalidasi nama utama di Microsoft Entra.
Contoh T-SQL berikut membuat pengguna database untuk pengguna Microsoft Entra, bernama test@contoso.com. Ganti <unique identifier sid> dengan SID pengguna baru ke ID objek pengguna Microsoft Entra.
DECLARE @principal_name SYSNAME = 'test@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
Contoh berikut membuat pengguna database untuk perwakilan layanan Microsoft Entra, bernama HRApp. Ganti <unique identifier sid> dengan SID pengguna baru ke ID klien perwakilan layanan di Microsoft Entra.
Note
Gunakan ID klien, bukan ID objek, saat menentukan prinsipal layanan Microsoft Entra, User-Assigned Managed Identity (UAMI), atau System-Assigned Managed Identity (SAMI).
DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);
Contoh berikut membuat pengguna database untuk grup Microsoft Entra, bernama HR. Ganti <unique identifier sid> dengan SID pengguna baru ke ID objek grup.
DECLARE @principal_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
Konten terkait
- Membuat pengguna database
- sys.database_principals (T-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Basis Data yang Terkandung
- Autentikasi Microsoft Entra untuk Azure SQL
- Mulai menggunakan izin Mesin Database
- ALTER ROLE (Transact-SQL)
- GRANT izin akses objek (Transact-SQL)
- Hak Akses (Mesin Basis Data)