C# SQL Server 2016本地数据库连接问题

C# SQL Server 2016本地数据库连接问题,c#,sql-server,localdb,C#,Sql Server,Localdb,我用.mdf数据库文件(13.00.4001版)创建了一个应用程序 如果我在编译应用程序的同一台计算机上运行该应用程序,一切都会很好。但若我尝试在安装了SQL Server LocalDb 2016的第二台计算机上运行它,它将不起作用,并表示在该计算机上找不到SQL Server 有什么问题吗?我不明白为什么 如果我尝试在安装了SQL Server 2014 LocalDB和2016的PC上运行应用程序,日志会显示 无法打开,因为它是版本852。此服务器支持782及更早版本。不支持降级路径 我真

我用
.mdf
数据库文件(13.00.4001版)创建了一个应用程序

如果我在编译应用程序的同一台计算机上运行该应用程序,一切都会很好。但若我尝试在安装了SQL Server LocalDb 2016的第二台计算机上运行它,它将不起作用,并表示在该计算机上找不到SQL Server

有什么问题吗?我不明白为什么

如果我尝试在安装了SQL Server 2014 LocalDB和2016的PC上运行应用程序,日志会显示

无法打开,因为它是版本852。此服务器支持782及更早版本。不支持降级路径

我真的不明白为什么会有这些问题

用于生成连接字符串的代码:

"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + 
Directory.GetCurrentDirectory() + 
@"\Dati.mdf; Integrated Security=True"

听起来好像您正试图将代码从一台机器移动到另一台机器,但并没有移动数据库。这意味着您需要在第二台计算机上创建一个新的数据库,然后获取新的连接字符串,该字符串将在第二台计算机上工作


请参阅有关创建数据库的指南,但首先安装SQLServerManagementStudio(请参阅)。您可能需要创建某种配置文件来放入新的连接字符串。是关于该主题的指南。

版本13.00.4001对应于。当您尝试在另一台计算机上还原/连接数据库时,请确保不仅安装了相同的版本,而且还安装了相同的SP/CU

要验证版本,可以连接到实例并发出:

print @@version;

它将为您提供有关该实例的构建、版本、SP/CU、比特度等的所有必要信息。

我通过删除现有MSSQLSLocalDB实例并使用此命令行重新创建它来解决问题

sqllocaldb删除MSSQLLocalDB

sqllocaldb创建MSSQLLocalDB


现在一切都很好。

我从VisualStudio创建db,当我编译它时,我将完整的out目录移到另一台机器上。到目前为止,它一直在发挥作用。我还有其他运行良好的应用程序,您不能在较旧版本的SQL Server上使用SQL Server 2016实例中的数据库文件-因此您不能将该
.mdf
文件与SQL Server 2014 LocalDB一起使用-您必须确保使用的是2016版本的LocalDB(这是您遇到的第二个错误)我已经在机器上安装了2016和2014本地db。我还尝试了另一台只安装了2016的机器,但它不起作用。您需要检查连接字符串,确保它们指向一个有效、已安装且正在运行的SQL Server LocalDB实例,并且必须确保这是2016版本的LocalDBConnection字符串:“数据源=(LocalDB)\MSSQLLocalDB;AttachDbFilename=“+Directory.GetCurrentDirectory()+@”\Dati.mdf;Integrated Security=true如果安装了两个版本的SQL Server,则有两个实例,如果LocalDB与其他SQL Server DB的工作方式相同,则连接字符串需要反映这一点。我怀疑(LocalDB)您的连接字符串可能不正确。请阅读此内容并查看实例的名称:。我将在您的问题中添加连接字符串(以后请自己添加)我已在我的辅助计算机上安装了此版本,但它没有连接到此实例似乎我还没有安装任何Think如果它是LocalDB实例,您可以列出它们并使用console工具
sqllocaldb.exe
检查它们的版本。对于普通实例,您可以在SQL Server配置管理器中找到它们。是的,它是LocalDB我尝试使用SqlLocalDb版本的实例,结果是:Microsoft SQL Server 2012(11.0.2318.0)Microsoft SQL Server 2014(12.0.2000.8),但如果我进入已安装程序列表,则会出现SqlLocalDb 2016,如果我尝试重新安装它,它会告诉我已安装,并返回另一行,其中包含Windows Api调用“RegGetValueW”返回的错误代码:0。您可能已安装LocalDB 2016,但是否已创建此版本的实例?请尝试
sqllocaldb c“Inst2016”13.0
,以便使用2016版本。