首页 > 解决方案 > 无法连接到本地数据库 SQL

问题描述

我使用 SQL Server(本地数据库)创建的本地数据库存在问题。我可以连接到我计算机上的数据库,但如果我尝试连接到另一台计算机,我会收到以下错误消息: 在此处输入图像描述

我想要一个本地数据库来存储数据,我不需要服务器来管理数据库。

这是我的连接字符串:

`<connectionStrings>
    <add name="stocksDB" connectionString="Data Source= (LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\myDB.mdf;Integrated Security=True;" providerName="System.Data.SqlClient"/>
  </connectionStrings>`

我在先决条件中包含了“SQL Server 2012 Express LocalDB”。

在此处输入图像描述

我做错什么了?

标签: c#sqlsql-serverdatabase-connectionlocal

解决方案


如果您有两台计算机(假设它们的计算机名称是“pc_a”和“pc_b”,它们联网在一起并且程序在计算机“pc_a”上运行并且数据库驻留在计算机“pc_b”上,那么您的连接字符串需要包括计算机“pc_b”的机器名称。

即使它是本地机器,您也可以提供机器名称,因此如果程序与数据库在同一台机器上运行,或者如果程序在一台机器上运行而数据库在另一台机器上,那么下面的代码将起作用,这么久因为两台机器是联网的,并且您运行程序的帐户可以访问机器、实例和数据库。

请注意,在下面的示例中,安装 SQL 时使用了“默认”实例名称 (MSSQLSERVER)。当数据库实例名称是默认名称时,您不得显式提供实例名称(如果这样做,您将收到所显示的错误)。唯一一次显式提供实例名称是它不是默认实例名称。下面的代码可以处理任何一种情况(通过将 dbInstanceName 变量设置为“”或实例名称,例如“\SQLEXPRESS”)。请参阅 SO SQL Server:如何查找所有 localdb 实例名称。当它怀疑时,尝试一个空的实例名称和一个您认为是实例名称的名称,看看什么是有效的。

string databaseMachineName = "pc_b";
string databaseInstanceName = ""; 
string dbName = "stocksDb";

using (SqlConnection sqlConnection = new SqlConnection("Data Source=" + databaseMachineName + databaseInstanceName + "; Initial Catalog=" + dbName + "; Integrated Security=True;Connection Timeout=10"))
{
   .
   .
   .
}

推荐阅读