2012-09-26 80 views
2

我有一个Sitefinity ASP.NET网站,其中有一个数据库Db1。我将数据库连接到SQL Server Management Studio。ASP.NET应用程序访问数据库的权限被拒绝

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

CREATE DATABASE permission denied in database 'master'

连接字符串:

<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

我会亲自为您的应用程序创建一个特定的身份验证,并在您的连接字符串中指定该身份验证。如果并且当你移动到不同的环境,如dev,qa,production或dr,并且数据库不在本地时,则需要使用非集成的东西。 –

+0

@RobA如何为我的应用程序创建一个身份验证?我已经尝试在这里接受的答案:http://stackoverflow.com/questions/666828/create-a-new-db-user-in-sql-server-2005但查询只是坐在那里说“调试查询”,直到我停下来。 – ServerBloke

回答

1

最直接的,便携式/可部署的解决方案是切换到SQL Server身份验证。

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

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

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

+0

谢谢,这解决了它。 – ServerBloke

1

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

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

+0

使用我的Windows用户帐户(管理员),我可以登录到SQLServer并通过Management Studio创建/读取/修改数据库,这是否意味着我可以在连接字符串上使用集成安全性? – ServerBloke

+0

是管理员帐户的名称?你如何连接到你的窗口框?当连接到sql server时,你不应该输入任何密码(你应该使用windows身份验证模式)。 还有UAC问题,我想你在W7上?看看这个链接:http://blogs.msdn.com/b/dparys/archive/2009/09/17/create-database-permission-denied-in-database-master-my-fix.aspx – Diego

+0

+ 1感谢您的帮助,我使用SQL Server Auth而不是Windows。 – ServerBloke

2

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