【问题标题】:asp.net/sql server/iis permissionsasp.net/sql server/iis 权限
【发布时间】:2012-01-01 16:22:50
【问题描述】:

我正在开发一个需要访问 SQL Server 数据库的 ASP.NET Web 应用程序。应用程序需要运行的服务器正在运行 Windows Server 2000、SQL Server 2000、IIS6 和 .NET 2.0。

如果我在我的机器上使用 Visual Web Developer 2010 和 Visual Studio 中的测试网络服务器运行网络应用程序,但访问实际网络服务器上的数据库,它工作正常。但是,如果我将此应用程序放在实际的网络服务器上,并尝试通过浏览器访问它,则会收到权限错误,提示我无权访问这些表。

我的应用需要访问两个表。在其中一个上,我使用 SQL Management Studio 更改了权限,以允许公共组选择权限,从而解决了问题。在另一张桌子(非常大的桌子)上,我尝试做同样的事情,但得到一个错误,说它超时等待获得桌子上的锁。有没有办法更改此超时或其他更改权限的方法?

我认为我什至不必更改权限,因为该服务器上有经典的 ASP 应用程序可以访问相同的表。我认为问题在于用于访问表的用户。如果我可以从我的机器访问运行 Web 应用程序的表,并且服务器上的经典 ASP 应用程序可以访问它们,但我的 ASP.NET 应用程序不能,那么我的 ASP.NET 应用程序必须使用不同的用户帐户。如何检查并进行必要的更改?

【问题讨论】:

  • 你应该检查你的连接字符串。它是否使用集成安全性?如果是,则在appdomain中使用的帐户是访问数据库的用户。

标签: asp.net sql-server iis


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

【讨论】:

    【解决方案2】:

    您可以尝试将锁定超时设置为 -1(意味着它永远不会超时)

    SET LOCK_TIMEOUT -1
    GO
    

    您也可以尝试使用查询添加权限

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

    您也可以尝试将asp.net连接字符串中的asp.net用户更改为已有选择权限的用户。

    如果其中任何一个有效,请告诉我,这是一个从 =) 开始的好地方

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多