0
在SQL Server 2008中,您可以将给定用户的权限设置为表和/或字段级别。在SQL Server 2008中编写高级安全属性脚本?
在GUI中,可以很容易地选择“安全”并应用它们,但是可以脚本更改吗?
在SQL Server 2008中,您可以将给定用户的权限设置为表和/或字段级别。在SQL Server 2008中编写高级安全属性脚本?
在GUI中,可以很容易地选择“安全”并应用它们,但是可以脚本更改吗?
是的,您可以使用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'.
谢谢 - 我没有注意到脚本按钮。 – chris 2010-07-06 16:11:12