2

我有一个包含数据库的 Sitefinity ASP.NET 网站Db1。我将数据库附加到 SQL Server Management Studio。

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

数据库“主”中的 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 身份验证进行连接。

4

3 回答 3

2

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

于 2012-09-26T16:24:02.750 回答
1

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

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

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

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

于 2012-09-26T16:29:14.457 回答
1

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

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

于 2012-09-26T15:25:04.320 回答