【问题标题】:Trouble connecting to SQL Server Express database连接到 SQL Server Express 数据库时出现问题
【发布时间】:2013-10-23 21:38:27
【问题描述】:

在我安装在 IIS 7 上的 Web 应用程序中,我需要连接到 SQL Server Express 数据库文件(仅用于测试目的。)我在 web.config 文件中使用以下连接字符串:

<configuration>
  <connectionStrings>
    <add name="MyDbConnection" connectionString="data source=.\SQLEXPRESS;Integrated Security=true;AttachDBFilename='C:\Users\UserName\CSharp\WebApp004_TestDB\App_Data\Database1.mdf';User Instance=true;Connection Timeout=15" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

我还为 C:\Users\UserName\CSharp\WebApp004_TestDB\App_Data 文件夹设置了 NTFS 权限,如下所示:

  • IIS_IUSRS = 完全控制
  • IUSR = 完全控制
  • NT SERVICE\MSSQL$SQLEXPRESS = 完全控制
  • IIS AppPool\[MyAppPoolName] = FullControl

这仍然没有帮助。当我尝试通过我的 C# 代码连接到该数据库时,出现异常:

尝试为文件附加自动命名的数据库 C:\Users\UserName\CSharp\WebApp004_TestDB\App_Data\Database1.mdf 失败的。存在同名数据库,或指定文件不能 被打开,或者它位于 UNC 共享上。

请注意,相同的代码可以在另一台安装了实际 SQL Server 的机器上运行(在我使用数据库用户名和密码的地方使用不同的连接字符串。)

知道我在这里缺少什么吗?

【问题讨论】:

  • 猜测帐户 sql server 正在运行,因为在您的用户文件夹中看不到该文件。鉴于它很遥远,这很有可能。通常的解决方案是将文件移动到带有服务器的机器上,并放入帐户有权访问的文件夹中。
  • @TonyHopkinson:谢谢,好点子。实际上,如果我将 .mdf 文件移动到“C:\Folder1”并使其公开可用,它就可以工作。为什么它不喜欢我的用户文件夹?我认为应该设置这些 ACL 权限。
  • 如果您在同一台机器上,您可以在可以看到您的用户文件夹的帐户下运行 sql server。不过可能需要设置一个。但是无法从共享中附加,因此不同的机器已经出局,从磁盘还原也有类似的问题。放弃,只是移动了文件,然后使用了那个路径,太脆弱了,管理员一直用活动目录等破坏它。
  • @TonyHopkinson:是的,我想我也会放弃,只使用公用文件夹。不过很奇怪,因为我似乎已经设置了所有必要的权限,我可以在用户子树中的原始文件夹中遇到这些权限......
  • 在我们的例子中,它与 sql server 运行的内置帐户有关。我们采取了快速、简单、灵活和易于管理的方式。诚然,胆怯和不冒险,再次,它仍然有效。 :)

标签: asp.net sql-server permissions sql-server-express


【解决方案1】:

看看这个Connection Strings

【讨论】:

  • 只有链接的答案是不受欢迎的,只有链接的答案是错误的、误导性的或与问题无关的,真的很不受欢迎。
  • 只是想提供帮助,他们“乐购”说每一个小帮助:)
猜你喜欢
  • 1970-01-01
  • 2020-12-31
  • 2020-10-02
  • 2014-09-12
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
相关资源
最近更新 更多