2012-01-01 99 views
1

我正在開發需要訪問SQL Server數據庫的ASP.NET Web應用程序。應用程序需要運行的服務器正在運行Windows Server 2000,SQL Server 2000,IIS6和.NET 2.0。asp.net/sql服務器/ iis權限

如果我在Visual Studio Developer 2010中使用Visual Studio中的測試Web服務器在我的機器上運行Web應用程序,但在實際Web服務器上訪問數據庫時,它工作正常。但是,如果我將此應用放在實際的Web服務器上,並嘗試通過瀏覽器訪問它,則會出現權限錯誤,說我無法訪問這些表。

我的應用程序需要訪問兩個表格。在其中一人中,我更改了SQL Management Studio的權限以允許公共組選擇權限,並解決了問題。在另一張桌子(非常大的桌子)上,我試圖做同樣的事情,但得到一個錯誤,說它超時等待鎖定桌子。有沒有辦法改變這個超時或其他方式來更改權限?

我不認爲我甚至不得不更改權限,因爲那個服務器上有經典的ASP應用程序訪問相同的表。我認爲這個問題是用來訪問表的用戶。如果我可以從我的機器訪問運行Web應用程序的表,並且服務器上的傳統ASP應用程序可以訪問它們,但是我的ASP.NET應用程序不能,我的ASP.NET應用程序必須使用不同的用戶帳戶。我如何檢查並做出必要的更改?

+0

你應該檢查你的連接字符串。它使用集成安全性嗎?如果是,則在AppDomain中使用的帳戶是訪問數據庫的用戶。 – rene 2012-01-01 16:30:50

回答

0

你可以嘗試鎖定超時設置爲-1(這意味着它永遠不會超時)

SET LOCK_TIMEOUT -1 
GO 

而且你還可以嘗試添加權限使用查詢

sp_addrolemember @rolename = 'db_datareader', @membername = 'YourAspApp' 

你也可以嘗試在asp.net連接字符串中將您的asp.net用戶更改爲已具有選擇權限的用戶。

讓我知道如果任何奏效,它與=啓動)

1

關於你的權限錯誤的好地方,這可能是因爲你的機器上的應用程序的訪問與您的權限的數據庫,具有集成的Windows登錄。

通常,Web應用程序應該使用技術用戶訪問數據庫,該數據庫在web.config文件中指定的連接字符串部分中。這就像

<configuration> 
    <connectionStrings> 
    <add name="myConnsStr" connectionString="server=myserver.example.com;database=mydatabase;uid=tech_account;pwd=tech_account_password" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
... 
</configuration> 

你的樣子是怎麼樣的?

對於另一個,是的,在T-SQL中進行權限更改。如果您不確定如何操作,請在設計器中進行更改,然後在單擊確定之前,使用標題區域中的腳本按鈕。將更改腳本編寫到剪貼板,然後嘗試在新的查詢窗口中運行。您可以在選項對話框中查詢超時。