我今天在使用 Visual Studio 2008 開發一個 ASP.NET 的專案,資料庫是用 SQL Server 2000 SP4,但是當我想進入除錯模式(F5)進行測試的時候,卻發生【EXECUTE 使用權限在物件 'sp_sdidebug',資料庫 'master',擁有者 'dbo' 上被拒絕。】的錯誤,如下圖:
英文的錯誤訊息是:
EXECUTE permission denied on object 'sp_sdidebug', database 'master', owner 'dbo'.
上網查了一下發現原來 SQL Server 2000 從 SP3 之後就改成「如果不是資料庫的擁有者,就無法除錯預儲程序(Stored Procedure)」,進而導致 VS2008 在進入除錯模式的時候會發生例外狀況(Exception)。
而我們通常在「開發時期」都是用 sa 帳戶或信任連線與 SQL Server 連接,所以之前從未遇過此問題,而這個案子是用「最小權限」的方式在開發,也就是在 web.config 中所設定的連線參數只能連接至專案的那個資料庫而已,所以才會出現這個錯誤。
相關連結