使用 SQLServer 连接数据库时出错
Posted
技术标签:
【中文标题】使用 SQLServer 连接数据库时出错【英文标题】:Error connecting to database using SQLServer 【发布时间】:2013-01-11 09:57:23 【问题描述】:在 Visual Studio 2010 上,我有一个尝试连接的数据库,但是当我尝试连接时:
db.Open();
它启动了这个错误:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)
我尝试按照this 链接所说的做,但我仍然犯同样的错误。
有什么想法吗?
编辑:防火墙已关闭。
连接字符串: mysqlProject.Properties.Settings.Default.dbConnectionString = "Data Source=|DataDirectory|\db.sdf"
服务器已启动:
EDIT2:
这是失败的代码:
public void FillData()
// 1 step. Open connection
// SqlConnection c = new SqlConnection("Data Source=" +db.Connection.DataSource);
SqlConnection c = new SqlConnection(MySQLProject.Properties.Settings.Default.dbConnectionString);
try
c.Open();
// 2 step. Create new DataAdapter
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM USER", c))
// 3 step. Use DataAdapter to fill table
DataTable t = new DataTable();
a.Fill(t);
// 4 step. Render data on the DataGridView
dataGridViewUsers.DataSource = t;
catch (SqlException e)
MessageBox.Show(e.Message);
编辑 nº 1000:
好的,我使用了这个连接字符串:
string con2 = @"Server=.\SQLExpress;AttachDbFilename=|DataDirectory|db.sdf;Database=db;Trusted_Connection=Yes;";
然后它说:
:____(
好的,现在我知道.sdf
是用于 CE Sql 语句的。但是,我无法创建.mdf
,不知道具体原因...我应该更改为CE Sql 语句吗?
【问题讨论】:
验证您的连接字符串.... 无效的附加数据库名称,意味着 db.dsf 应该被替换,例如使用 aspnet.mdf。你快到了;) 但是我的数据库是.sdf,而不是.mdf...所以我应该创建一个新的吗? .sdf 用于 SqlCeStatements,不是吗?是的,快到了 :P PS: 无法创建 .mdf 数据库!!! 是的,.mdf 用于 express... .sdf 用于 CE(精简版)。其实后缀不应该起到作用……但它是一个标准 【参考方案1】:最典型的原因是:
服务器未运行 连接字符串有错字(部分字母错误)所以当连接到不存在或关闭的服务器时,会出现此消息
编辑:请尝试检查:SQL Server Express connection string for Entity Framework Code First,因为您的 conn 字符串似乎不完整:
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|aspnetdb.sdf;
User Instance=true"
【讨论】:
如果我关注那个线程,假设是因为这个,我们的连接字符串没有正确的格式来使用 SqlConnection(看起来像那样),我将它更改为 SqlCeConnection ,它说这个错误:解析查询时出错。 [令牌行号 = 1,令牌行偏移量 = 15,错误令牌 = USER]SqlCeConnection
适用于 SQL Compact 版本,正如我现在所看到的,这不是您的情况。但它很可能是不完整的连接字符串
同样,此消息始终意味着 ADO.NET 的连接字符串不正确。因此,在服务器运行时,我们必须调整连接字符串。这是目前问题的地方
如果我使用这个字符串:connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|aspnetdb.sdf; User Instance=true" .\ 启动错误,所以我把它改成了//。可以吗?
不! .\InstanceName 表示 localhost\InstanceName。所以把它改成你的服务器(你的工作站)的名字【参考方案2】:
这只是意味着找不到服务器。
检查连接字符串 服务器根本没有运行 检查防火墙【讨论】:
【参考方案3】:仅适用于发现相同问题的人:
由于我无法创建 .mdf
数据库,只有 .sdf
一个,正如 @Radim Köhler 所说,.sdf
数据库我不得不使用 SqlCe...
实例。我的连接字符串说:
@"Data Source=|DataDirectory|db.sdf;Persist Security Info=False;"
我是这样连接的:
SqlCeConnection c = new SqlCeConnection(con3); //MySQLProject.Properties.Settings.Default.dbConnectionString);
c.Open();
【讨论】:
以上是关于使用 SQLServer 连接数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章
在与SQL Server建立连接时出现与网络相关的或特定实例的错误
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 错误号: 2 严重性: 20 状态: 0
SQL--Navicat Premium 连接其他电脑出错命名管道提供程序;无法打开与SQL Server的连接[1326].(1326)