2010-07-05 67 views

回答

1

是的,您可以使用GRANT語句編寫安全權限(包括列級別)的腳本。

如果要使用SSMS編寫信息腳本,請在安全設置中分配權限,然後單擊屏幕頂部的Script按鈕。

alt text http://img337.imageshack.us/img337/7236/scriptperm.png

下面是用T-SQL腳本列級權限的示例:

USE master 
GO 

/* Create test database */ 
CREATE DATABASE StackO 
GO 

USE StackO 
GO 

/* Create a table */ 
CREATE TABLE TestSelect (
    RowID INT NOT NULL, 
    RowValue VARCHAR(1) NOT NULL, 
    RowProperty VARCHAR(1) NOT NULL 
) 

/* Populate with data */ 
INSERT TestSelect VALUES (1,'A','X'),(2,'A','Y') 

/* Create a user */ 
CREATE USER SO_User WITHOUT LOGIN 

/* Grant the user SELECT permissions on RowID and RowValue */ 
GRANT SELECT ON TestSelect (RowID) TO SO_User 
GO 

GRANT SELECT ON TestSelect (RowValue) TO SO_User 
GO 

/* Deny user SELECT permissions on RowProperty */ 
DENY SELECT ON TestSelect (RowProperty) TO SO_User 
GO 

/* Test the permissions */ 
EXECUTE AS USER = 'SO_User' 
GO 

/* Confirm select on RowID and RowValue */ 
SELECT RowID, RowValue FROM TestSelect 
GO 

/* Confirm error message on RowProperty */ 
SELECT RowProperty FROM TestSelect 
GO 

/* Go back to regular user */ 
REVERT 
GO 

/* Cleanup */ 
USE master 
GO 

DROP DATABASE StackO 
GO 

而且結果:

RowID  RowValue 
----------- -------- 
1   A 
2   A 

Msg 230, Level 14, State 1, Line 3 
The SELECT permission was denied on the column 'RowProperty' 
of the object 'TestSelect", database 'SO', schema 'dbo'. 
+0

謝謝 - 我沒有注意到腳本按鈕。 – chris 2010-07-06 16:11:12