對 SQL Server 不 dbo 權限的題目

宣布日期 2012-03-17 16:46:27

對 sql server 數據庫查問數據或履行存儲進程時,呈現近似 "不dbo權限"、"找不到 dbo.XXX 工具"等的處置體例

1. 呈現這個題目的緣由是由于以后毗連數據庫的登任命戶不是 dbo 權限,以是此用戶不能操縱統統者為 dbo 的工具。為甚么不開放 dbo 權限:由于若是客戶的法式有題目(比方有注入縫隙)、或數據庫暗碼泄露等,若是以后用戶有 dbo 權限的話,會給數據庫辦事器帶來寧靜隱患,以是我司的數據庫都不開放 dbo 權限,而咱們給用戶開放了datareader、datawriter、ddladmin 等權限,這些權限普通環境下是充足的。

2. 用戶在初始化數據的時辰,比方經由進程企業辦理器履行導入數據的 SQL ,或經由進程某些網站裝置法式初始化的時辰,這些原始的初始化數據中的工具統統者能夠是 dbo ,這將會致使在初始化數據后,數據庫的以后登任命戶不權限操縱這些工具。

3. 對以上題目,處置體例以下:
  1. 在您對數據庫的布局停止了變動后,要注重數據庫工具(如數據表、存儲進程等)的統統者應當是您的數據庫用戶名,而不是 dbo ,若是您發明有某些工具的統統者是 dbo ,這時候您應當登錄我司的數據庫節制面板,而后找到“修復工具統統者”的按鈕,點擊一下便能夠將統統工具的統統者設置為您的以后登任命戶。
  (注重:體系表、體系存儲進程 等不必處置,只要本身成立的表、存儲進程、視圖等才要處置)
4. 在您的法式中,要注重以下方面
  在查問、更新、刪除數據,履行存儲進程等統統操縱中,不要利用 "dbo.表名"、"dbo.存儲進程名" 等停止操縱,
  而改成間接用 "表名"、"存儲進程"名等停止操縱,便是不要帶有工具統統者的局部,如:
  select * from dbo.table1 應當改成 select * from table1
  更多請做近似點竄~