sql server 2000的grant語(yǔ)句用于向用戶(hù)、角色和組授予使用數(shù)據(jù)庫(kù)對(duì)象以及運(yùn)行某些存儲(chǔ)過(guò)程和函數(shù)的權(quán)限。
grant的語(yǔ)法非常簡(jiǎn)單——雖然它是sql server 2000中功能最強(qiáng)大的語(yǔ)句之一。下面的例子授予皮特(pete)對(duì)pubs數(shù)據(jù)庫(kù)中的authors表進(jìn)行 insert、update和delete的權(quán)限。with grant option表示皮特也可以用這些語(yǔ)句來(lái)向其它用戶(hù)授權(quán)。use pubs
go
grant insert, update, delete
on authors
to pete
with grant option
go
你也可以授予皮特all權(quán)限,這樣他還可以使用create database、create function、create rule、create table、backup database以及其它語(yǔ)句。不過(guò),我們一般都希望限制用戶(hù)的訪問(wèn)和操作數(shù)據(jù)庫(kù)的權(quán)限。
除了對(duì)單獨(dú)的用戶(hù)外,你還可以對(duì)sql server角色、windows nt用戶(hù)以及windows nt組使用grant語(yǔ)句。如果用戶(hù)和(或者)組或者角色之間存在授權(quán)沖突,那么按照最嚴(yán)格的授權(quán)處理。不能對(duì)其它數(shù)據(jù)庫(kù)的用戶(hù)、角色或者組進(jìn)行授權(quán)。
你可以用revoke語(yǔ)句來(lái)解除已經(jīng)授予的權(quán)限。你也可以用deny語(yǔ)句來(lái)停止阻止用戶(hù)從他(她)所從屬的組(或者角色)那里來(lái)得到授予該組(或者角色)的權(quán)限。
在下面的例子中,我們將會(huì)看到擁有pubs數(shù)據(jù)庫(kù)中的authors表權(quán)限的人有哪些。然后,我們給予皮特訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。最后,我們?cè)俳o他對(duì)authors表執(zhí)行insert、update和delete的權(quán)限。
首先,我們運(yùn)行sp_helpprotect來(lái)看看authors表格上哪些人有哪些權(quán)限。
exec sp_helprotect authors
go
結(jié)果應(yīng)該與下面類(lèi)似:
owner object grantee grantor protecttype action column
----- ------ ------- ----------- ------------- --------- -------
dbo authors guest dbo grant delete
dbo authors guest dbo grant insert
dbo authors guest dbo grant references (all+new)
dbo authors guest dbo grant select (all+new)
dbo authors guest dbo grant update (all+new)
由于在皮特得到訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限之前,我們不能向他授以執(zhí)行任何語(yǔ)句的權(quán)限,因此,我們應(yīng)該首先讓皮特獲得訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。(實(shí)際上,為了可以使用已授予的權(quán)限,皮特需要一個(gè)sql server 2000登錄帳號(hào)和訪問(wèn)該數(shù)據(jù)庫(kù)的許可。這個(gè)例子為一個(gè)sql server 2000中尚未存在的用戶(hù)創(chuàng)建訪問(wèn)數(shù)據(jù)庫(kù)的許可。)
exec sp_grantdbaccess pete
go
你將會(huì)看到“granted database access to 'pete”。
讓我們運(yùn)行較早前提到的grant insert, update, delete語(yǔ)句。現(xiàn)在重新執(zhí)行sp_helpprotect,最后三行應(yīng)該顯示皮特以及他剛才所獲得授權(quán)的信息。
新聞熱點(diǎn)
疑難解答
圖片精選