SUSER_SID (T-SQL)

Berlaku untuk:Database SQL Server Azure SQL Azure SQL Managed Instance

Mengembalikan nomor identifikasi keamanan (SID) untuk nama masuk yang ditentukan.

Konvensi sintaks transact-SQL

Sintaks

SUSER_SID ( [ 'login' ] [ , Param2 ] )   

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

'login'
Berlaku untuk: SQL Server 2008 (10.0.x) dan yang lebih baru

Adalah nama login pengguna. login adalah sysname. login, yang bersifat opsional, dapat berupa login SQL Server atau pengguna atau grup Microsoft Windows. Jika login tidak ditentukan, informasi tentang konteks keamanan saat ini dikembalikan. Jika parameter berisi kata NULL akan mengembalikan NULL.

Param2
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru

Menentukan apakah nama masuk divalidasi. Param2 berjenis int dan bersifat opsional. Ketika Param2 adalah 0, nama login tidak divalidasi. Ketika Param2 tidak ditentukan sebagai 0, nama login Windows diverifikasi persis sama dengan nama login yang disimpan di SQL Server.

Jenis Pengembalian

varbinary(85)

Keterangan

SUSER_SID dapat digunakan sebagai batasan DEFAULT baik di ALTER TABLE atau CREATE TABLE. SUSER_SID dapat digunakan dalam daftar pemilihan, dalam klausa WHERE, dan di mana saja ekspresi diizinkan. SUSER_SID harus selalu diikuti oleh tanda kurung, meskipun tidak ada parameter yang ditentukan.

Ketika dipanggil tanpa argumen, SUSER_SID mengembalikan SID dari konteks keamanan saat ini. Ketika dipanggil tanpa argumen dalam batch yang telah beralih konteks dengan menggunakan EXECUTE AS, SUSER_SID mengembalikan SID dari konteks yang ditiru. Ketika dipanggil dari konteks yang ditiru, SUSER_SID(ORIGINAL_LOGIN()) mengembalikan SID dari konteks asli.

Ketika kolamen SQL Server dan kolamen Windows berbeda, SUSER_SID dapat gagal ketika SQL Server dan Windows menyimpan login dalam format yang berbeda. Misalnya, jika Komputer Windows TestComputer memiliki Pengguna masuk dan SQL Server menyimpan login sebagai TESTCOMPUTER\User, pencarian TestComputer\User masuk mungkin gagal menyelesaikan nama login dengan benar. Untuk melewati validasi nama masuk ini, gunakan Param2. Kolase yang berbeda sering menjadi penyebab kesalahan SQL Server 15401:

Windows NT user or group '%s' not found. Check the name again.

Azure SQL Keterangan Database

SUSER_SID selalu mengembalikan SID masuk untuk konteks keamanan saat ini. Gunakan sys.database_principals untuk mendapatkan SID dari login yang berbeda.

Pernyataan SUSER_SID tidak mendukung eksekusi menggunakan konteks keamanan yang ditiru melalui EXECUTE AS.

Contoh

A. Menggunakan SUSER_SID

Contoh berikut mengembalikan nomor identifikasi keamanan (SID) untuk konteks keamanan saat ini.

SELECT SUSER_SID();  

B. Menggunakan SUSER_SID dengan login tertentu

Contoh berikut mengembalikan nomor identifikasi keamanan untuk login SQL Serversa.

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru

SELECT SUSER_SID('sa');  
GO  

C. Menggunakan SUSER_SID dengan nama pengguna Windows

Contoh berikut mengembalikan nomor identifikasi keamanan untuk pengguna London\Workstation1Windows .

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru

SELECT SUSER_SID('London\Workstation1');  
GO  

D. Menggunakan SUSER_SID sebagai batasan DEFAULT

Contoh berikut menggunakan SUSER_SID sebagai DEFAULT batasan dalam pernyataan CREATE TABLE .

USE AdventureWorks2012;  
GO  
CREATE TABLE sid_example  
(  
login_sid   VARBINARY(85) DEFAULT SUSER_SID(),  
login_name  VARCHAR(30) DEFAULT SYSTEM_USER,  
login_dept  VARCHAR(10) DEFAULT 'SALES',  
login_date  DATETIME DEFAULT GETDATE()  
);   
GO  
INSERT sid_example DEFAULT VALUES;  
GO  

E. Membandingkan nama masuk Windows dengan nama masuk yang disimpan di SQL Server

Contoh berikut menunjukkan cara menggunakan Param2 untuk mendapatkan SID dari Windows dan menggunakan SID tersebut sebagai input ke SUSER_SNAME fungsi. Contoh ini menyediakan login dalam format tempat data disimpan di Windows (TestComputer\User), dan mengembalikan login dalam format tempat data disimpan di SQL Server (TESTCOMPUTER\User).

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru

SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));  

Lihat juga

ORIGINAL_LOGIN (T-SQL)
BUAT TABEL (Transact-SQL)
biner dan varbinary (Transact-SQL)
Fungsi Sistem (Transact-SQL)