我有一个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身份验证。
答案 0 :(得分:2)
在IIS中,找到您网站的应用程序池,并将凭据设置为您要用于连接数据库的Windows帐户。
答案 1 :(得分:1)
ypu在您的连接字符串上使用您的AD用户,请参阅Integrated Security = SSPI项目?如果为true,则表示当前的Windows帐户凭据用于身份验证。
您确定您的用户有权在该实体上创建数据库吗?
答案 2 :(得分:1)
最直接,可移植/可部署的解决方案是切换到SQL Server身份验证。
在SSMS中,展开服务器的安全选项卡,然后添加具有合适名称和密码的用户。请务必取消选中“必须在下次登录时更改密码”复选框。
然后,展开数据库的安全选项卡,添加用户,并将其添加到任何必要的角色。对于调试,您可能只想将其添加到db owner角色。
这很有用,因为所有相关设置都存储在您的应用配置和数据库本身中,使得deployent变得简单,并且您无需担心在密码过期时保持应用用户帐户更新等等。