错误提示:在建立与服务器的连接时出错。在连接到SQL SERVER2005时,在默认的设置下SQL Server不允许进行远程连接可能会导致此失败。(provider:命名管道提供程序,error:40-无法打开到sql server的连接)
描述:telnet 127.0.0.1 1433是通的。sql2000的补丁我也打了。程序是用c#2.0写的,我的电脑上装没这个问题,客户的电脑上装总有这个问题。急等!!!!
描述:telnet 127.0.0.1 1433是通的。sql2000的补丁我也打了。程序是用c#2.0写的,我的电脑上装没这个问题,客户的电脑上装总有这个问题。急等!!!!
2、sql2000 用户名密码之类都正确吗?
这个网站试试:http://jc-dreaming.javaeye.com/blog/524518
打开《配置工具》在打开、《SQL Server 外围应用配置器》→打开《服务和链接的外围程序配置》
然后如图上一样启动了服务就可以了
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace YinMangageServer.Core
{
/// <summary>
/// DbObject 的摘要说明。
/// </summary>
public abstract class DbObject
{
protected SqlConnection Connection;
private string connectionString;
public DbObject(string newConnectionString)
{
connectionString = newConnectionString;
Connection = new SqlConnection(connectionString);
}
/// <summary>
/// Protected property that exposes the connection string
/// to inheriting classes. Read-Only.
/// </summary>
protected string ConnectionString
{
get
{
return connectionString;
}
}
private SqlCommand BuildIntCommand(string storedProcName,
IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(storedProcName, parameters); command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, /* Size */
ParameterDirection.ReturnValue, false, /* is nullable */
0, /* byte precision */
0, /* byte scale */
string.Empty, DataRowVersion.Default, null)); return command;
}
private SqlCommand BuildQueryCommand(string storedProcName,
IDataParameter[] parameters)
{
SqlCommand command =
new SqlCommand(storedProcName, Connection);
command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters)
{
command.Parameters.Add(parameter);
} return command; }
protected int RunProcedure(string storedProcName,
IDataParameter[] parameters,
out int rowsAffected)
{
int result;
Connection.Open();
SqlCommand command = BuildIntCommand(storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
Connection.Close(); return result;
}
protected SqlDataReader RunProcedure(string storedProcName,
IDataParameter[] parameters)
{
SqlDataReader returnReader;
Connection.Open();
SqlCommand command = BuildQueryCommand(storedProcName, parameters);
command.CommandType = CommandType.StoredProcedure; returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
return returnReader;
}
protected DataSet RunProcedure(string storedProcName,
IDataParameter[] parameters,
string tableName)
{
DataSet dataSet = new DataSet();
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
Connection.Close();
return dataSet;
}
protected void RunProcedure(string storedProcName,
IDataParameter[] parameters,
DataSet dataSet,
string tableName)
{
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildIntCommand(storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
Connection.Close();
}
}
}-------
class ModuleConfig
{
public static string GetSettings()
{ //存储数据库配置信息的文件地址是当前目录
string filePath = Environment.CurrentDirectory + "/DbInfo.txt";
StreamReader sr = new StreamReader(filePath);
string s1 = "server=" + sr.ReadLine() + ";database=YinDb;uid=" + sr.ReadLine() + ";pwd=" + sr.ReadLine() + ";";
return s1;
}
}
2、打开服务器配置管理器看看TCP/IP协议设置的有没有问题
3、检查端口是不是默认的1433
4、检查防火墙
return s1; s1处设置断点,看看有没有其他乱七八糟的字符
连不上用
System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources()
遍历局域网的数据库,取Server字段,然后让用户选一个吧
1。服务器是否启用TCP/IP协议了?
2。启用TCP/IP协议之后,其端口号是否是1433(有时候系统不会自动设置的,需要手动设置)
ps。服务器开了没啊
{
public static string GetSettings()
{ //存储数据库配置信息的文件地址是当前目录
string filePath = Environment.CurrentDirectory + "/DbInfo.txt";
StreamReader sr = new StreamReader(filePath);
string s1 = "server=" + sr.ReadLine() + ";database=YinDb;uid=" + sr.ReadLine() + ";pwd=" + sr.ReadLine() + ";connect timeout=30";
return s1;
}
}
试试,可能他那的配置不好,需要一点延时connect timeout=30