连接字符串:
Server=(local);Database=DigitSite.mdf;Integrated Security=true
我尝试了一堆其他连接字符串,它们有相同的错误,或者甚至没有尝试登录我提供的数据库。我不确定这是一个IIS问题,还是sql问题或连接字符串问题。
在IIS7中,此应用程序池设置为本地系统
我的虚拟目录映射正确
对于路径凭据,我使用了“应用程序用户(传递身份验证),我已经指定了一个用户,但都没有工作,在身份验证中我已关闭匿名身份验证并启用了模拟
在sql中,我确保我尝试登录的用户具有该数据库的正确安全性,如“db owner”。我已经尝试创建一个用户登录到sql as(sql Server 2008R2),但是在尝试登录该用户时出现错误。有任何建议吗?
这似乎是一个常见的问题,但是我花了5个多小时来研究这个问题并且搞砸了设置,所以我对于如何让它发挥作用有点蠢蠢欲动。感谢。
答案 0 :(得分:3)
SQL Server通常使用逻辑数据库名称,例如您在服务器实例上创建数据库(或者在SQL Server Management Studio中附加现有的.mdf
文件并为其指定逻辑数据库名称),您永远不必处理文件名等。
所以你的连接字符串应该是这样的:
Server=(local);Database=DigitSite;Integrated Security=true
仅使用逻辑数据库名称DigitSite
- 而不是实际的文件名(SQL Server将为您管理文件 - 请不要搞乱!)
答案 1 :(得分:1)
SQL Server有两个地方为登录分配权限。一个是服务器级别,一个是数据库级别。您必须在两个位置都拥有适当的权限。
对于此错误,看起来服务器上的登录是好的,但数据库不喜欢登录。您正在使用'Lenaire-PC \ Lenaire'的Windows登录名,因此请确保该用户是“db_owner”角色的成员。
USE [DigiSite]
GO
EXEC sp_addrolemember N'db_owner', N'Lenaire-PC\Lenaire'
如果这不起作用,您需要提供有关您的设置,SQL版本等的更多信息。这似乎不寻常。
此外,确保每次构建项目时,构建过程或Visual Studio魔术都不会覆盖数据库更改。为了解决这个问题,我会永久地将数据库附加到服务器上。