我正在使用VS2010 Beta 2来创建IIS托管的WCF服务。我添加了一个SQL Server数据库文件,用作一个简单的数据存储,然后生成一些Linq to SQL类来与之交互。
当Linq to SQL尝试连接到数据库时,我遇到了问题。我在下面收到以下错误:
数据库'master'中的CREATE DATABASE权限被拒绝。 尝试为文件c:\ Source \ SampleApp \ App_Data \ GameData.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。
要解决以前的问题,我已经将web.config更改为不使用用户实例:
<add name="GameDataConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\GameData.mdf;Integrated Security=True;User Instance=False"
providerName="System.Data.SqlClient" />
我的第一反应是应用程序池的用户帐户(NETWORK SERVICE)无法打开文件,因此我已授予对数据库文件和日志文件的完全控制权,但这没有帮助。
有趣的是,如果我将应用程序池更改为在本地系统下运行,一切正常。还有什么我必须授予NETWORK SERVICE访问权限吗?
答案 0 :(得分:2)
Yopu必须使用Sql Management Studio Express并添加网络服务帐户作为登录。然后在指定的数据库上为其分配DBO权限,或者只是为其指定sysadmin角色。请注意,在安装SQL Server 2005任何版本时,您都有初始选项来设置服务的登录帐户。如果您指定网络服务。默认情况下,网络服务帐户将被授予sysadmin角色。
希望这有帮助
答案 1 :(得分:1)
如果您未使用<identity impersonate="true"/>
,则您的应用程序池用户无权访问您的数据库。
您还可以创建数据库用户(SQL身份验证)并将其凭据(用户名/密码)修复到连接字符串中。这就是我通常做的事情。