SQL Server 2008稀疏列說明示例
對列集實施安全
對列集實施安全就像對其它欄位實施安全一樣,但是稀疏列的許可權可能會影響從列集獲取資料。讓我們做些測試。
首先,讓我們授予對所有稀疏列的SELECT許可權,並試圖從列集獲取資料。你需要有一個用於這個測試的單獨賬戶。如果你沒有額外的賬戶,那麼建立一個登入和一個使用者為User1。讓我們使用User1許可權來試著獲取資料。
程式碼1:使用User1的帳戶獲取和更新資料。
--Set the execution context to the user User1
EXECUTE AS USER = 'User1'
-- select statement 1
SELECT Gender, Telephone, MonthlyIncome, Comments FROM Customers
-- select statement 2
SELECT AllSparseColumns FROM Customers
-- select statement 3
UPDATE dbo.Customers
SET Gender = 1
WHERE Id = 3
-- select statement 4
UPDATE dbo.Customers
SET [AllSparseColumns] = '777225656Test msg1'
WHERE Id = 3
REVERT
程式碼2:將稀疏列的SELECT許可權授予User1並執行程式碼1。
-- Grant select permission to all sparse columns
GRANT SELECT (Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
-- Execute the code 1:
-- select statement 1 - will success
-- select statement 2 - will fail
-- select statement 3 - will fail
-- select statement 4 - will fail
-- Remove SELECT permission from User1
REVOKE SELECT (Id, Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
儘管我們授予了對所有稀疏列的SELECT許可權,但是使用者卻不能從列集獲取資料。它要求顯式的SELECT許可權。但是如果我們授予稀疏列上的SELECT和UPDATE許可權,User1就將可以訪問這個列集。但是User1不能更新這個列集。
程式碼3:授予稀疏列上的SELECT和UPDATE許可權給User1並執行程式碼1。
-- Grant select permission to all sparse columns
GRANT SELECT, UPDATE (Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
-- Execute the code 1
-- select statement 1 - will success
-- select statement 2 - will success
-- update statement 3 - will success
-- update statement 4 - will fail
-- Remove SELECT, and UPDATE permissions from User1
REVOKE SELECT, UPDATE (Id, Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
現在讓我們授予對列集的SELECT許可權,並嘗試訪問稀疏列。
程式碼4授予列集上的SELECT許可權給User1並執行程式碼1。
-- Grant select permission to the column set
GRANT SELECT (AllSparseColumns) ON OBJECT::dbo.Customers TO User1
-- Execute the code 1
-- select statement 1 - will fail
-- select statement 2 - will success
-- update statement 3 - will fail
-- update statement 4 - will fail
-- Remove SELECT permission from User1
REVOKE SELECT (AllSparseColumnss) ON OBJECT::dbo.Customers TO User1
就像程式碼3中的程式碼一樣,如果我們授予對列集的SELECT和UPDATE許可權給User1,那麼SELECT語句2將會成功。此外,User1將可以對列集執行UPDATE語句,但不能對稀疏列執行UPDATE語句。看下面的程式碼5。
程式碼5:授予對列集的SELECT和UPDATE許可權給User1並執行程式碼1。
-- Grant select and update permissions to the column set
GRANT SELECT, UPDATE (AllSparseColumns) ON OBJECT::dbo.Customers TO User1
-- Execute the code 1
-- select statement 1 - will success
-- select statement 2 - will success
-- update statement 3 - will fail
-- update statement 4 - will success
-- Remove SELECT and UPDATE permission from User1
REVOKE SELECT, UPDATE (AllSparseColumnss) ON OBJECT::dbo.Customers TO User1
現在讓我們測試DENY許可權是怎樣傳播的。讓我們授予對稀疏列的SELECT許可權並拒絕對列集SELECT的許可權。正如你所預料的,User1將可以訪問所有的稀疏列,但不能訪問列集。拒絕對列集SELECT的許可權不會影響稀疏列。
程式碼6:授予對稀疏列SELECT的許可權並拒絕列集的SELECT許可權給User1並執行程式碼1。
-- Grant SELECT permission on sparse columns
GRANT SELECT (Id, Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
-- Deny SELECT permission on the column set
DENY SELECT (AllSparseColumns) ON OBJECT::dbo.Customers TO User1
-- Execute the code 1
-- select statement 1 - will success
-- select statement 2 - will fail
-- update statement 3 - will fail
-- update statement 4 - will fail
REVOKE ALL ON OBJECT::dbo.Customers TO User1
GO
但是當對稀疏列SELECT的許可權被拒絕時,它會傳播到列集。看程式碼7。User1將不能訪問到列集,即使我們授予了列集上的SELECT許可權。
程式碼7拒絕對稀疏列SELECT的許可權並授予對列集SELECT的許可權給User1並執行程式碼1。
-- Deny SELECT permission on sparse columns
DENY SELECT (Id, Gender, Telephone, MonthlyIncome, Comments) ON OBJECT
::dbo.Customers TO User1
-- Grant SELECT permission on the column set
GRANT SELECT (AllSparseColumns) ON OBJECT::dbo.Customers TO User1
-- Execute the code 1
-- select statement 1 - will fail
-- select statement 2 - will fail
-- update statement 3 - will fail
-- update statement 4 - will fail
REVOKE ALL ON OBJECT::dbo.Customers TO User1
GO
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-513656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2008新特性稀疏列SQLServer
- SQL Server 2008 引入了“稀疏列”SQLServer
- SQL Server 2008稀疏列的使用SQLServer
- SQL Server 2008資料庫稀疏列和列集的詳解SQLServer資料庫
- sql server系統表詳細說明SQLServer
- SQL Server 中的稀疏列支援SQLServer
- Oracle Transparent Gateway for SQL Server安裝配置說明OracleGatewaySQLServer
- sql server系統表詳細說明(zt)SQLServer
- sql2008 獲取表結構說明SQL
- SQL Server中“加鎖選項”的功能說明SQLServer
- SQL Server有關鎖升級的誤區說明SQLServer
- sql server關於跟蹤日誌查詢使用說明SQLServer
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 稀疏陣列陣列
- 稀疏陣列、佇列陣列佇列
- 【測試者家園】sql server系統表詳細說明SQLServer
- sql server系統表與系統檢視詳細說明SQLServer
- SQL SERVER 2008安全配置SQLServer
- SQL Server 2008 過期SQLServer
- 安裝sql server 2008SQLServer
- SQL Server 2008 安全更改SQLServer
- 微軟之日 --- SQL Server 2008微軟SQLServer
- Oracle Listener設定密碼示例說明Oracle密碼
- sql server分組查詢示例SQLServer
- 怎樣從SQL Server2008升級到SQL Server 2008 r2SQLServer
- 關於NTP SERVER的配置說明Server
- Revit Server的注意要配置說明Server
- zabbix-server-pgsql docker映象說明ServerSQLDocker
- SQL Server 2008快照備份SQLServer
- SQL Server 2008 優化工具SQLServer優化
- SQL Server 2008備份概述SQLServer
- sql server 2008 是否值得期待?SQLServer
- SQL Server 2008密碼策略SQLServer密碼
- SQL Server 2008 sqlcmd 的使用SQLServer
- SQL Server2008引擎元件SQLServer元件
- Installing SQL Server 2008 on a Windows Server 2008 ClusterSQLServerWindows
- Inside SQL Server系列新版,SQL Server 2008 Internals目錄IDESQLServer
- 支付寶程式碼示例結構說明