首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用|DataDirectory|时无法导入此数据库

使用|DataDirectory|时无法导入此数据库
EN

Stack Overflow用户
提问于 2014-11-17 01:53:04
回答 3查看 3K关注 0票数 0

我尝试在本地数据库中添加我的值(通过添加基于->服务的数据库创建)。

我的代码:

代码语言:javascript
复制
//string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\VS_MyProjects\DBAppliaction\DBAppliaction\Database1.mdf;Integrated Security=True";
            string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;";

            string query = "INSERT INTO [dbo].[Table] (Test) " +
                   "VALUES (@Test) ";


            // create connection and command
            using (SqlConnection cn = new SqlConnection(connectionString))
            using (SqlCommand cmd = new SqlCommand(query, cn))
            {
                // define parameters and their values
                cmd.Parameters.Add("@Test", SqlDbType.NChar, 10).Value = "test";

                // open connection, execute INSERT, close connection
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
            }

当我使用到我的数据库的完整路径时,一切都是正常的。在“显示数据表”中显示我的附加值。但是,当我在path |DataDirectory|中使用并按下“显示数据表”中的“更新”按钮来验证是否添加了我的值时,我看到了错误:“此数据库无法导入。它是不受支持的SQL Server版本或不受支持的数据库兼容性”。为什么?

EN

回答 3

Stack Overflow用户

发布于 2014-11-17 02:40:29

连接字符串中缺少初始目录键/值对。这意味着当LocalDB附加数据库文件MDF时,将使用其完整路径名,并且在程序的后续运行中附加失败。相反,如果提供初始目录值,则后续运行仅使用该目录

因此将连接字符串更改为

代码语言:javascript
复制
string connectionString = @"Data Source=(LocalDB)\v11.0;
                            AttachDbFilename=|DataDirectory|\Database1.mdf;
                            Initial Catalog=LogicalNameOfYourDatabase
                            Integrated Security=True;";

当然,第一个问题(数据显然未保存)是由DataDirectory替换字符串的行为以及Visual Studio处理附加到项目的MDF文件的方式引起的(如another answer here中所述)

票数 0
EN

Stack Overflow用户

发布于 2015-05-26 10:08:40

我在使用VS2012和SQL2014时遇到了类似的问题。从本质上讲,VS中的SQL工具不是SQL服务器的最新版本。修复方法是在我的开发PC上本地安装SQL2014管理工具。

票数 0
EN

Stack Overflow用户

发布于 2016-12-14 20:15:22

试试这个:

代码语言:javascript
复制
string connectionString = @"Data Source=(LocalDB)\v11.0;
                        AttachDbFilename="+System.IO.Path.GetFullPath("Database1.mdf")+";
                        Initial Catalog=LogicalNameOfYourDatabase
                        Integrated Security=True;";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26960145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档