【问题标题】:Permission denied for ASP.NET app to access databaseASP.NET 应用程序访问数据库的权限被拒绝
【发布时间】:2012-09-27 00:29:14
【问题描述】:

我有一个 Sitefinity ASP.NET 网站,它有一个数据库 Db1。我已将数据库附加到 SQL Server Management Studio。

当我运行 ASP.NET 应用程序时,它似乎没有访问数据库的权限。 Sitefinity 无法连接到现有数据库,然后尝试创建一个新数据库,它会抛出此错误:

数据库“master”中的 CREATE DATABASE 权限被拒绝

连接字符串是:

<add connectionString="data source=localhost\sqlexpress;Integrated Security=SSPI;initial catalog=Db1" providerName="System.Data.SqlClient" dbType="MsSql" name="Sitefinity" />

在 SQL Management Studio 中,我使用 Windows 身份验证连接到 localhost\SQLEXPRESS 实例。

我认为问题是,我需要授予 ASP.NET 进程用户访问数据库Db1 的权限。在哪里可以找到该用户以及如何授予权限?

我也不确定应用程序是否应该使用正确的 SQL Server 用户而不是 Windows 身份验证来连接。

【问题讨论】:

  • 我会亲自为您的应用程序创建一个特定的身份验证,并在您的连接字符串中指定它。如果并且当您移动到不同的环境(例如 dev、qa、production 或 dr)并且数据库不是本地数据库时,您无论如何都需要使用非集成的东西。
  • @RobA 如何为我的应用创建身份验证?我在这里尝试了接受的答案:stackoverflow.com/questions/666828/… 但查询只是坐在那里说“调试查询”,直到我停止它。

标签: asp.net sql-server ssms sitefinity


【解决方案1】:

在 IIS 中,找到您网站的应用程序池,并将凭据设置为您要用于连接数据库的 Windows 帐户。

【讨论】:

    【解决方案2】:

    最直接、可移植/可部署的解决方案是切换到 SQL Server 身份验证。

    在 SSMS 中,展开 服务器 的安全选项卡,并添加具有合适名称和密码的用户。请务必取消选中“下次登录时必须更改密码”复选框。

    然后,展开数据库的安全选项卡,添加用户,并将其添加到任何必要的角色中。对于调试,您可能只想将其添加到数据库所有者角色。

    这很有帮助,因为所有相关设置都存储在您的应用配置和数据库本身中,使部署变得轻而易举,而且您无需担心在密码过期时保持应用用户帐户更新等问题。

    【讨论】:

      【解决方案3】:

      ypu 在您的连接字符串上使用您的 AD 用户,请参阅 Integrated Security=SSPI 项?如果为 true,则表示当前的 Windows 帐户凭据用于身份验证。

      您确定您的用户有权在该实例上创建数据库吗?

      【讨论】:

      • 使用我的 Windows 用户帐户(管理员),我可以登录 SQLServer 并通过 Management Studio 创建/读取/修改数据库,这是否意味着我可以在连接字符串上使用集成安全性?
      • Administrator 是帐户的名称吗?你如何连接到你的 Windows 盒子?当连接到 sql server 时,你不应该输入任何密码(你应该使用 windows 身份验证模式)。还有UAC问题,我想你在W7上?看看这个链接:blogs.msdn.com/b/dparys/archive/2009/09/17/…
      • +1 感谢您的帮助,我可以使用 SQL Server Auth 而不是 Windows。
      • 哦,是的,这也是一个不错的选择。我以为你不想用它
      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 2018-01-09
      • 2017-09-06
      • 1970-01-01
      • 2018-04-06
      • 2019-11-15
      • 2014-06-03
      相关资源
      最近更新 更多