你的數據庫對象允許任何用戶訪問嗎?如果是
那麼你的數據庫就會有安全缺陷
你需要取消用戶自定義數據庫對象的公共讀取權限
由於數據庫的設計
所有用戶都被當作公共成員
從公共數據庫中取消用戶自定義數據庫對象公共讀取權限的辦法就是創建一個用戶自定義數據庫
做法如下
把你的用戶自定義數據庫放入一個系統提供的數據庫
系統提供的數據庫有
db_owner
db_accessadmin
db_securityadmin
db_ddladmin
db_backupoperator
db_datareader
db_datawriter
db_denydatareader和db_denydatawriter
把你的用戶自定義數據庫添加到將作為開發環境的db_datareader和db_datawriter中
如果你已經有一個可以添加和/或刪除用戶自定義數據庫對象的開發環境
你就只需要取消這個權限或是把你的用戶自定義數據庫添加到db_ddladmin系統數據庫中
把數據庫用戶作為數據庫成員添加到你的用戶自定義數據庫中
取消所有的公共權限
不要向公共用戶發出DENY命令
如果你向公共用戶發出了DENY命令
用戶將不能讀取用戶自定義數據庫的對象
用REVOKE命令代替DENY命令來取消讀取公共數據庫的權限
這樣設置後
數據庫的用戶就是用戶自定義數據庫的成員了
用戶自定義數據庫具有讀取用戶自定義數據庫對象的權限
因此這個用戶自定義數據庫允許數據庫用戶讀取用戶自定義數據庫的對象
以下是實施上面的方法的具體步驟
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21983.html