【问题标题】:An Attempt to attach an auto-named database Error尝试附加自动命名的数据库错误
【发布时间】:2012-03-19 13:09:17
【问题描述】:

“尝试为文件 C:\Users\John\documents\visual studio 2010\Projects\PAS\PAS\bin\Debug//PatAddSys.mdf 附加自动命名数据库失败。同名数据库存在,或者指定的文件无法打开,或者它位于 UNC 共享上。”

这里有什么问题?我的路径有正确的代码(我认为)但仍然出现此错误是我的数据库路径

private string dbPath = Application.StartupPath + "//PatAddSys.mdf";

这是我的数据库的位置

【问题讨论】:

  • 将文件移动到调试文件夹,然后使用该位置。它对我有用。

标签: c# .net database linq-to-sql path


【解决方案1】:

尝试将连接字符串中的用户实例属性设置为 true。您需要将此添加到您的连接字符串中:

User Instance=True

还要确保再次检查您的数据库服务器,因为它可能已经包含同名的数据库。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    使用这个:

    Path.GetFullPath(yourpath_string)
    

    会有用的

    【讨论】:

    • 对我来说是的,类似的答案毫无意义
    【解决方案3】:

    我想可能已经很晚了,但是

    这个字符串给我上面的错误

    <add name="MAB_ERP_2_0.Properties.Settings.MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Database\MabErp2.mdf;Integrated Security=true;"
            providerName="System.Data.SqlClient" />
    

    但是如果添加 |数据目录|在数据库名称之前,它可以正常工作

    <add name="MAB_ERP_2_0.Properties.Settings.MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database\MabErp2.mdf;Integrated Security=true;"
            providerName="System.Data.SqlClient" />
    

    【讨论】:

      【解决方案4】:

      未来的帮助!!

      你已经更正了:

      private string dbPath = Application.StartupPath + "//PatAddSys.mdf";
      

      但只需要做一步就是使用反斜杠“\”而不是斜杠“/” 所以应该是这样的:

      private string dbPath = Application.StartupPath + "\\PatAddSys.mdf";
      

      &感谢这条线为我节省了很多工作:)

      【讨论】:

      • System.IO.Path.​Path​Separator
      【解决方案5】:

      将当前工作目录和连接字符串都更改为正确的以解决它。

      选择位于“服务器资源管理器”中的数据库 然后复制连接字符串,就像在其属性中看到的一样,然后在代码中使用它。

      那么对于当前工作目录,使用相同的路径而不使用数据库的名称。解决方案 -> 属性 -> 调试是当前工作目录路径所在的位置。这适用于 Visual Studio 2015。

      我使用我的连接字符串作为这个

      Private constr As String = "Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
              Directory.GetCurrentDirectory() + "\DBNAME.mdf;" +
              "Integrated Security=True;Connect Timeout=30;User Instance=False"
      

      【讨论】:

        【解决方案6】:

        实际上我已经遇到了这个问题,但我很容易处理它。 如果您的连接字符串是

         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;"
        

        您需要制作自己的 localDB。 先去命令提示符而不是写

        sqllocaldb create MyDatabase
        

        比启动你的数据库

        sqllocaldb start MyDatabase
        

        返回 VS 并将连接字符串更改为

        connectionString="Data Source=(LocalDB)\MyDatabase;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;"
        

        【讨论】:

          【解决方案7】:

          这就是我定义ConnectionString 的方式(不在任何配置文件中,直接在我的类中):

          _path = $@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={_installPath}\Database\EmployeeDB.mdf;Integrated Security=True";
          

          但由于某种原因,当我将其分配给 _installPath:

          private readonly string _installPath = AppDomain.CurrentDomain.BaseDirectory;
          

          我收到此错误:

          system.data.sqlclient.sqlexception (0x80131904) 尝试为文件 EmployeeDB.mdf 附加自动名称数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。错误号:15350,状态:1,类:14


          当我将_installPath 更改为:

          private readonly string _installPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
          

          它不再给我错误了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-03
            • 1970-01-01
            相关资源
            最近更新 更多