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