程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL問題匯編(2)

SQL問題匯編(2)

編輯:關於SqlServer
 還有其它值得提到的新特性嗎?

我們還增加了DENY語句,可以被管理員用來禁止某個用戶對一個對象的所有訪問權限。在SQL
Server 6.5中你可以在一行上運行兩次REVOKE語句來在某種程度上仿效DENY語句。

在SQL Server 7.0中,如果你想阻止某人查看某一個表,你可以使用DENY來禁止他的SELECT權限。使用DENY語句時應當非常小心。舉個例子:假如你在AUTHORS表上有SELECT和INSERT的權限,而且作為某個NT組的成員,你還擁有UPDATE權限。然而,你所在的另一個NT組被DENY語句禁止了INSERT和UPDATE權限。結果是,你只有SELECT權限了。DENY語句會禁止對數據庫對象的訪問,因此你要確保沒有對PUBLIC組使用DENY語句,因為任何用戶都總是PUBLIC組中的成員。許多沒有經驗的管理員這樣做了,然後他們只好打電話來向我們求助。

DENY不僅可以用於數據庫對象,它還可以用於登錄名。例如,你授予了NT組“domain
users”登錄到SQL Server的權限。Joe剛剛被解雇了但是他還不知道。你不能簡單地使用REVOKE語句來取消Joe的登錄權限,因為他沒有被單獨授予登錄權限,而是和其他成員一起作為“domain
users”組中的一個成員被一起授予登錄權限。這時你就可以特別地對Joe使用DENY語句。這樣他不能登錄到SQL
Server了,而同一個組的其他成員仍然可以。

應用程序角色是如何工作的?

可能解釋應用程序角色的最好方式是在實際情況中說明。比方說你想做一個職工工資單的應用程序,可以允許用戶更新工資。當然你不希望允許用戶簡單地登錄到SQL
Server中然後更改工資。如果雇員能夠那樣做的話,他就可能試圖去更改他自己的工資了。更合適的方法是使用一個工資單應用程序,它能夠執行特定的安全檢查,例如,不允許用戶更新他們自己的工資。

它是這樣工作的。你的工資單應用程序以使用者的安全級別登錄到SQL
Server,以便服務器審計追蹤工具能夠知道到底是誰在登錄到SQL Server。然後你的應用程序切換到適當的數據庫並調用系統存儲過程“sp_setapprole”來啟動應用程序角色。應用程序角色是受密碼保護的,所以你需要把密碼作為參數傳遞給sp_setapprole。當數據在網上傳輸時,你也可以對密碼進行加密。

一旦啟動了應用程序角色,用戶現有的權限被關閉,應用程序角色的安全權限被相應打開。你的應用程序現在就可以使用應用程序角色來執行修改數據庫的操作了。

需要注意的一個問題是,應用程序角色是特定於連接的。假如你同時打開了兩個到SQL
Server的連接,你必須保證每個連接的應用程序角色都被打開了。使用應用程序角色時,一旦打開連接並轉換到適當的數據庫後,第一件事情就是調用“sp_setapprole”存儲過程。如果不啟動應用程序角色,你就不能夠訪問任何應用程序角色所專有的數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved