2010-07-05 100 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

相关问题