无法打开登录请求的数据库“DigitSite.mdf”。登录失败。用户'Lenaire-PC \ Lenaire'登录失败

时间:2012-10-18 23:52:47

标签: sql-server connection-string

连接字符串:

Server=(local);Database=DigitSite.mdf;Integrated Security=true 

我尝试了一堆其他连接字符串,它们有相同的错误,或者甚至没有尝试登录我提供的数据库。我不确定这是一个IIS问题,还是sql问题或连接字符串问题。

在IIS7中,此应用程序池设置为本地系统

我的虚拟目录映射正确

对于路径凭据,我使用了“应用程序用户(传递身份验证),我已经指定了一个用户,但都没有工作,在身份验证中我已关闭匿名身份验证并启用了模拟

在sql中,我确保我尝试登录的用户具有该数据库的正确安全性,如“db owner”。我已经尝试创建一个用户登录到sql as(sql Server 2008R2),但是在尝试登录该用户时出现错误。有任何建议吗?

这似乎是一个常见的问题,但是我花了5个多小时来研究这个问题并且搞砸了设置,所以我对于如何让它发挥作用有点蠢蠢欲动。感谢。

2 个答案:

答案 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魔术都不会覆盖数据库更改。为了解决这个问题,我会永久地将数据库附加到服务器上。