2012-01-01 71 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中进行权限更改。如果您不确定如何操作,请在设计器中进行更改,然后在单击确定之前,使用标题区域中的脚本按钮。将更改脚本编写到剪贴板,然后尝试在新的查询窗口中运行。您可以在选项对话框中查询超时。