﻿# 開發 ASP.NET 使用 SQL Server 2000 要注意權限是否足夠

我今天在使用 Visual Studio 2008 開發一個 ASP.NET 的專案，資料庫是用 SQL Server 2000 SP4，但是當我想進入除錯模式(F5)進行測試的時候，卻發生【EXECUTE 使用權限在物件 'sp\_sdidebug'，資料庫 'master'，擁有者 'dbo' 上被拒絕。】的錯誤，如下圖：

![EXECUTE 使用權限在物件 'sp\_sdidebug'，資料庫 'master'，擁有者 'dbo' 上被拒絕。 ](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/215ce39c9fe510b61bea-image_3.png)

英文的錯誤訊息是：

```
EXECUTE permission denied on object 'sp_sdidebug', database 'master', owner 'dbo'.
```

上網查了一下發現原來 SQL Server 2000 從 SP3 之後就改成「如果不是資料庫的擁有者，就無法除錯預儲程序(Stored Procedure)」，進而導致 VS2008 在進入除錯模式的時候會發生例外狀況(Exception)。

而我們通常在「開發時期」都是用 sa 帳戶或信任連線與 SQL Server 連接，所以之前從未遇過此問題，而這個案子是用「最小權限」的方式在開發，也就是在 web.config 中所設定的連線參數只能連接至專案的那個資料庫而已，所以才會出現這個錯誤。

**相關連結**

-   PRB: A Database User Cannot Debug Stored Procedures That Another User Owns
