sp_setapprole (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Database

Mengaktifkan izin yang terkait dengan peran aplikasi dalam database saat ini.

Konvensi sintaks transact-SQL

Sintaks

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Argumen

[ @rolename = ] N'rolename'

Nama peran aplikasi yang ditentukan dalam database saat ini. @rolename adalah sysname, tanpa default. @rolename harus ada di database saat ini.

[ @password = ] { encrypt N'password' }

Kata sandi yang diperlukan untuk mengaktifkan peran aplikasi. @password adalah sysname, tanpa default. @password dapat dikaburkan dengan menggunakan fungsi ODBCencrypt. Saat Anda menggunakan encrypt fungsi , kata sandi harus dikonversi ke string Unicode dengan menempatkan N sebelum tanda kutip pertama.

Opsi enkripsi tidak didukung pada koneksi yang menggunakan SqlClient.

Penting

Fungsi ODBC encrypt tidak menyediakan enkripsi. Anda tidak boleh mengandalkan fungsi ini untuk melindungi kata sandi yang dikirimkan melalui jaringan. Jika informasi ini akan dikirimkan di seluruh jaringan, gunakan TLS atau IPSec.

[ @encrypt = ] { 'none' | 'odbc' }

Menentukan jenis enkripsi sebelum mengirim kata sandi ke Mesin Database SQL Server. @encrypt adalah varchar(10), dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
none (default) Menentukan bahwa tidak ada obfuscation yang digunakan. Kata sandi diteruskan ke SQL Server sebagai teks biasa.
odbc Menentukan bahwa ODBC mengaburkan kata sandi dengan menggunakan fungsi ODBC encrypt sebelum mengirim kata sandi ke Mesin Database SQL Server. Nilai ini hanya dapat ditentukan saat Anda menggunakan klien ODBC atau Penyedia OLE DB untuk SQL Server.

[ @fCreateCookie = ] { 'true' | 'false' }

Menentukan apakah cookie akan dibuat. @fCreateCookie adalah bit, dengan default .0

true secara implisit dikonversi ke 1. false secara implisit dikonversi ke 0.

Menentukan parameter output untuk memuat cookie. @cookie adalah parameter OUTPUT dari jenis varbinary(8000). Cookie dihasilkan hanya jika nilai @fCreateCookie adalah true.

Catatan

Meskipun implementasi saat ini mengembalikan varbinary(50), aplikasi harus memesan varbinary (8000) yang didokumenkan, sehingga aplikasi terus beroperasi dengan benar jika ukuran pengembalian cookie meningkat dalam rilis mendatang.

Mengembalikan nilai kode

0 (berhasil) dan 1 (kegagalan).

Keterangan

Setelah peran aplikasi diaktifkan dengan menggunakan sp_setapprole, peran tetap aktif sampai pengguna memutuskan sambungan dari server atau menjalankan sp_unsetapprole. Anda tidak dapat menggunakan sp_setapprole dalam prosedur tersimpan lain, pemicu, atau dalam transaksi yang ditentukan pengguna. Ini hanya dapat dijalankan sebagai pernyataan Transact-SQL langsung.

Untuk gambaran umum peran aplikasi, lihat Peran Aplikasi.

Anda harus selalu menggunakan koneksi terenkripsi saat mengaktifkan peran aplikasi, untuk melindungi kata sandi peran aplikasi saat Anda mengirimkannya melalui jaringan.

Opsi Microsoft ODBC encrypt tidak didukung oleh SqlClient. Jika Anda harus menyimpan kredensial, enkripsi dengan fungsi API kripto. Parameter @password disimpan sebagai hash satu arah. Untuk mempertahankan kompatibilitas dengan versi SQL Server yang lebih lama, sp_addapprole jangan terapkan kebijakan kompleksitas kata sandi. Untuk menerapkan kebijakan kompleksitas kata sandi, gunakan CREATE APPLICATION ROLE.

Izin

Memerlukan keanggotaan di publik dan pengetahuan tentang kata sandi untuk peran tersebut.

Contoh

J. Mengaktifkan peran aplikasi tanpa opsi enkripsi

Contoh berikut mengaktifkan peran aplikasi bernama SalesAppRole, dengan kata sandi AsDeF00MbXXteks biasa , dibuat dengan izin yang dirancang untuk aplikasi yang digunakan oleh pengguna saat ini.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

Contoh berikut mengaktifkan Sales11 peran aplikasi dengan kata sandi fdsd896#gfdbfdkjgh700mM, dan membuat cookie. Contoh mengembalikan nama pengguna saat ini, lalu kembali ke konteks asli dengan mengeksekusi sp_unsetapprole.

DECLARE @cookie VARBINARY(8000);

EXEC sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

Peran aplikasi sekarang aktif. USER_NAME() mengembalikan nama peran aplikasi, Sales11.

SELECT USER_NAME();

Batalkan set peran aplikasi.

EXEC sys.sp_unsetapprole @cookie;
GO

Peran aplikasi tidak lagi aktif. Konteks asli dipulihkan. USER_NAME() mengembalikan nama pengguna asli.

SELECT USER_NAME();
GO