所以当我调试程序或在我的开发机器上的任何地方使用它时,我正在尝试连接本地文件数据库,它工作得很好。每当我尝试获取文件并在另一台机器上运行时我都会
错误50无法连接到localdb:发生本地数据库运行时错误,指定的LocalDB实例不存在
现在我的问题是,我知道是什么导致了这个问题,我只是不知道如何解决它。
我已经在我的测试机器上安装了SQL Server Express 2016(它没有工作的那台),并且localDb永远不会被初始化。
在我的开发机器上,我可以转到" C:\ Program Files \ Microsoft SQL Server \ 130 \ LocalDB"
但是在我的测试机上我只有" C:\ Program Files \ Microsoft SQL Server \ 130 \"没有LocalDB。
我相信我的问题是我从来没有真正创建sql server实例而只是调用该文件(参见下面的代码),但我不知道如何初始化sql server的本地实例。我搜索并尝试了不同的方法,但没有什么对我有用。
public SqlConnection connectionOpen()
{
string databaseDirectory = Convert.ToString(Directory.GetCurrentDirectory() + @"\gameDatabase.mdf");
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source =(LocalDB)\MSSQLLocalDB; AttachDbFilename ="+databaseDirectory +"; Integrated Security = True";
conn.Open();
return conn;
}
public void connectionClose()
{
string databaseDirectory = Convert.ToString(Directory.GetCurrentDirectory() + @"\gameDatabase.mdf");
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source =(LocalDB)\MSSQLLocalDB; AttachDbFilename ="+databaseDirectory + "; Integrated Security = True";
conn.Close();
}
如上所述,无论exe和mdf文件在哪里(只要它们与我在代码中如何查找mdf文件的目录相同),这在我的本地开发机器上都能完美运行,但是当我尝试在另一台机器上运行它时,我收到连接错误。
任何帮助都会非常感激!我把头发拉出来了!
答案 0 :(得分:0)
对于任何可能遇到这种情况的人,我希望我能告诉你"修复"为我解决了这个问题。
来自用户"目的地数据"
无需道歉。实例名称需要与您的连接字符串匹配。在这种情况下,它是(LocalDB)\ MSSQLLocalDB。这是默认实例。它应该始终可用。这表明您需要下载并安装LocalDB。 LocalDb提供引擎,.mdf具有结构和内容。
基本上我没有在我的测试机器上安装LocalDB,我认为它与SQL Server Express 2016的基本版本捆绑在一起,不是这种情况,而是单独下载。
您需要下载SQL Server Express 2016下载程序,使用自定义安装并选择" LocalDb"从那里,它将下载SqlLoaclDb.MSI运行此,然后再次尝试您的程序,它应该工作。
答案 1 :(得分:0)
你可能错过了其他测试机器/环境中的数据库,可以使用cmd> sqllocaldb create MsSsqlLocalDB
创建MSSqlLocalDB,然后将create
切换为start
并重新运行命令。
首先 - 在开始之前,有4个问题可能导致 常见 LocalDb SqlExpress Sql Server连接错误 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
{ {3}}
我发现最简单的方法是执行以下操作 - 我附上了图片和步骤以寻求帮助。
首先验证您已安装的实例,您可以通过检查注册表 和 运行cmd
来执行此操作cmd> Sqllocaldb.exe i
cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"
如果此步骤失败,您可以使用选项d
cmd>删除Sqllocaldb.exe d" someDb" cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"