激活與當(dāng)前數(shù)據(jù)庫(kù)中的應(yīng)用程序角色關(guān)聯(lián)的權(quán)限。
sp_setapprole [@rolename =] 'role' ,
[@password =]
{Encrypt N
'password'
} | 'password'
[,[@encrypt =] 'encrypt_style']
[@rolename =] 'role'
是在當(dāng)前數(shù)據(jù)庫(kù)中定義的應(yīng)用程序角色名。role 的數(shù)據(jù)類型是 sysname,沒(méi)有默認(rèn)設(shè)置。role 必須存在于當(dāng)前數(shù)據(jù)庫(kù)中。
[@password =] {Encrypt N 'password'} | 'password'
是激活應(yīng)用程序角色所需的密碼。password 的數(shù)據(jù)類型是 sysname,沒(méi)有默認(rèn)設(shè)置??梢允褂?ODBC 規(guī)范 Encrypt 函數(shù)對(duì) password 加密。使用 Encrypt 函數(shù)時(shí),必須在密碼的前面加上 N 以將密碼轉(zhuǎn)換成 Unicode 字符串。
[@encrypt =] 'encrypt_style'
指定 password 使用的加密樣式。encrypt_style 的數(shù)據(jù)類型為 varchar(10),可以是下列值之一。
值 | 描述 |
---|---|
None | 該密碼不加密并以明文形式傳遞給 Microsoft® SQL Server™。這是默認(rèn)設(shè)置。 |
Odbc | 將密碼發(fā)送到 SQL Server 之前,使用 ODBC 規(guī)范 Encrypt 函數(shù)對(duì)密碼加密。這只能通過(guò) ODBC 客戶端或用于 SQL Server 的 OLE DB 提供程序指定。DB-Library 客戶端不能使用該選項(xiàng)。 |
0(成功)或 1(失敗)
應(yīng)用程序角色沒(méi)有成員,因此不必將用戶添加到應(yīng)用程序角色。未激活應(yīng)用程序角色時(shí),sp_setapprole 對(duì)用戶在當(dāng)前數(shù)據(jù)庫(kù)內(nèi)其它角色或組中的成員資格無(wú)效。
激活應(yīng)用程序角色時(shí),將忽略通常與激活應(yīng)用程序角色的用戶連接關(guān)聯(lián)的權(quán)限。用戶連接獲得與(應(yīng)用程序角色在其中定義的)數(shù)據(jù)庫(kù)的應(yīng)用程序角色關(guān)聯(lián)的權(quán)限。用戶連接只能通過(guò)授予另一個(gè)數(shù)據(jù)庫(kù)的 guest 用戶帳戶的權(quán)限來(lái)獲得對(duì)該數(shù)據(jù)庫(kù)的訪問(wèn)。因此,如果數(shù)據(jù)庫(kù)中沒(méi)有 guest 用戶帳戶,則連接無(wú)法獲得對(duì)該數(shù)據(jù)庫(kù)的訪問(wèn)。
使用 sp_setapprole 激活某個(gè)應(yīng)用程序角色后,在用戶與 SQL Server 斷開連接之前不能在當(dāng)前數(shù)據(jù)庫(kù)內(nèi)停用該角色。
若要保護(hù)應(yīng)用程序角色密碼,請(qǐng)使用 ODBC Encrypt 函數(shù)對(duì)密碼加密并將 odbc 指定為加密方法。
sp_setapprole 存儲(chǔ)過(guò)程只能由直接 Transact-SQL 語(yǔ)句執(zhí)行,不能在另一個(gè)存儲(chǔ)過(guò)程內(nèi)或從用戶定義事務(wù)內(nèi)執(zhí)行。
任何用戶都可以通過(guò)為角色提供正確的密碼來(lái)執(zhí)行 sp_setapprole。
下例使用明文密碼 AsDeFXX 激活名為 SalesAppRole 的應(yīng)用程序角色,AsDeFXX 是使用特別為當(dāng)前用戶使用的應(yīng)用程序設(shè)計(jì)的權(quán)限創(chuàng)建的。
EXEC sp_setapprole 'SalesApprole', 'AsDeFXX'
下例用密碼 pswd 激活 Test 應(yīng)用程序角色,并且在將此密碼發(fā)送到 SQL Server 之前對(duì)其加密。
相關(guān)文章EXEC sp_setapprole 'Test', {Encrypt N 'pswd'
}, 'odbc'