软件连接不上数据库,帮忙看下

yumanqing 2009-08-17 11:37:10
这是个很老套的问题:
我的环境是这样的,windows2003 + VS2005以前都是好好的,我装VS2005的时候带了个SQL SERVER 2005,于是好奇我就又装了个SQL SERVER 2005,可是我的软件还是用的 SQL SERVER 2000,链接字符串如下:

"Persist Security Info=false;Initial Catalog=Sales2;User Id=sa;Password=;server=127.0.0.1"

提示错误如下:
在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)"
究竟是怎么回事,急,在线等。。。。。。
...全文
1301 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yumanqing 的回复:]
引用 9 楼 beirut 的回复:
C# codeSqlConnection("server=用户名\\实例名;database=数据库名;uid=sa;pwd=sa");



这个用户名是WINDOWS 的用户名还是 SQL 的用户名,是数据库实例名吗?能不能用IP
[/Quote]

windows用户名 实例名就是数据库实例名

其实要是2000的话很简单
你把SQL服务管理器打开 看服务器上写的什么 复制下来就OK了
bjbchy 2009-08-18
  • 打赏
  • 举报
回复
检查SQL服务里的实例名,肯定是SQL的服务出现问题的。
ks_reny 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
C# codeclass DBConnection
{//定义MyConnection方法,用户在使用时只需调用这个方法就可以连接数据库publicstatic SqlConnection MyConnection()
{//返回数据库连接字符串returnnew SqlConnection("server=用户名//实例名;database=数据库名;uid=sa;pwd¡­
[/Quote]
在我的印象中好像是 \\

sqlconnstr = "server=CMI_RENY\\RENY;database=regof42;User ID=sa;Password=666315";
--小F-- 2009-08-17
  • 打赏
  • 举报
回复
    class DBConnection
{
//定义MyConnection方法,用户在使用时只需调用这个方法就可以连接数据库
public static SqlConnection MyConnection()
{
//返回数据库连接字符串
return new SqlConnection("server=用户名\\实例名;database=数据库名;uid=sa;pwd=sa");
}

}
--小F-- 2009-08-17
  • 打赏
  • 举报
回复
    class DBConnection
{
//定义MyConnection方法,用户在使用时只需调用这个方法就可以连接数据库
public static SqlConnection MyConnection()
{
//返回数据库连接字符串
return new SqlConnection("server=用户名//实例名;database=数据库名;uid=sa;pwd=sa");
}

}
ch315537 2009-08-17
  • 打赏
  • 举报
回复
对的,要指定实例名
SQL77 2009-08-17
  • 打赏
  • 举报
回复
2009-08-15 01:19本文列出了C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点。
1.C#连接Access

程序代码:

using System.Data;

using System.Data.OleDb;

string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";

strConnection+=@"DataSource=C:\BegASPNET\Northwind.mdb";

OleDbConnection objConnection=new OleDbConnection(strConnection);
objConnection.Open();
objConnection.Close();

解释:

连接Access数据库需要导入额外的命名空间,所以有了最前面的两条using命令,这是必不可少的!

strConnection这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源。

“Provider=Microsoft.Jet.OleDb.4.0;”是指数据提供者,这里使用的是Microsoft Jet引擎,也就是Access中的数据引擎,asp.net就是靠这个和Access的数据库连接的。
“Data Source=C:\BegASPNET\Northwind.mdb”是指明数据源的位置,他的标准形式是“Data Source=MyDrive:MyPath\MyFile.MDB”。

PS:

1.“+=”后面的“@”符号是防止将后面字符串中的“\”解析为转义字符。

2.如果要连接的数据库文件和当前文件在同一个目录下,还可以使用如下的方法连接:

strConnection+="Data Source=";strConnection+=MapPath("Northwind.mdb");

3.要注意连接字符串中的参数之间要用分号来分隔。

“OleDbConnection objConnection=new OleDbConnection(strConnection);”这一句是利用定义好的连接字符串来建立了一个链接对象,以后对数据库的操作我们都要和这个对象打交道。

“objConnection.Open();”这用来打开连接。至此,与Access数据库的连接完成。

2.C#连接SQL Server
程序代码:

using System.Data;

using System.Data.SqlClient;..

string strConnection="user id=sa;password=;";

strConnection+="initial catalog=Northwind;Server=YourSQLServer;";

strConnection+="Connect Timeout=30";
SqlConnection objConnection=new SqlConnection(strConnection);..

objConnection.Open();

objConnection.Close();

解释:

连接SQL Server数据库的机制与连接Access的机制没有什么太大的区别,只是改变了Connection对象和连接字符串中的不同参数。

首先,连接SQL Server使用的命名空间不是“System.Data.OleDb”,而是“System.Data.SqlClient”。

其次就是他的连接字符串了,我们一个一个参数来介绍(注意:参数间用分号分隔):

“user id=sa”:连接数据库的验证用户名为sa。他还有一个别名“uid”,所以这句我们还可以写成“uid=sa”。 

“password=”:连接数据库的验证密码为空。他的别名为“pwd”,所以我们可以写为“pwd=”。

这里注意,你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录。如果你的SQL Server设置为Windows登录,那么在这里就不需要使用“user id”和“password”这样的方式来登录,而需要使用“Trusted_Connection=SSPI”来进行登录。

“initial catalog=Northwind”:使用的数据源为“Northwind”这个数据库。他的别名为“Database”,本句可以写成“Database=Northwind”。

“Server=YourSQLServer”:使用名为“YourSQLServer”的服务器。他的别名为“Data Source”,“Address”,“Addr”。如果使用的是本地数据库且定义了实例名,则可以写为“Server=(local)\实例名”;如果是远程服务器,则将“(local)”替换为远程服务器的名称或IP地址。
“Connect Timeout=30”:连接超时时间为30秒。


在这里,建立连接对象用的构造函数为:SqlConnection。

3.C#连接Oracle
程序代码:

using System.Data.OracleClient;using System.Data;//在窗体上添加一个按钮,叫Button1,双击Button1,输入以下代码private void Button1_Click(object sender, System.EventArgs e){string ConnectionString="Data Source=sky;user=system;password=manager;";//写连接串OracleConnection conn=new OracleConnection(ConnectionString);//创建一个新连接try{conn.Open();OracleCommand cmd=conn.CreateCommand();cmd.CommandText="select * from MyTable";//在这儿写sql语句OracleDataReader odr=cmd.ExecuteReader();//创建一个OracleDateReader对象while(odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了 {Response.Write(odr.GetOracleString(1).ToString());//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究}odr.Close();}catch(Exception ee){Response.Write(ee.Message); //如果有错误,输出错误信息}finally{conn.Close(); //关闭连接}}

4.C#连接MySQL

程序代码:

using MySQLDriverCS; // 建立数据库连接MySQLConnection DBConn;DBConn = new MySQLConnection(new MySQLConnectionString("localhost","mysql","root","",3306).AsString);DBConn.Open(); // 执行查询语句MySQLCommand DBComm;DBComm = new MySQLCommand("select Host,User from user",DBConn); // 读取数据MySQLDataReader DBReader = DBComm.ExecuteReaderEx(); // 显示数据try{while (DBReader.Read()){Console.WriteLine("Host = {0} and User = {1}", DBReader.GetString(0),DBReader.GetString(1));}}finally{DBReader.Close();DBConn.Close();} //关闭数据库连接DBConn.Close();

5.C#连接IBM DB2

程序代码:

OleDbConnection1.Open();//打开数据库连接OleDbDataAdapter1.Fill(dataSet1,"Address");//将得来的数据填入dataSetDataGrid1.DataBind();//绑定数据OleDbConnection1.Close();//关闭连接 //增加数据库数据在Web Form上新增对应字段数量个数的TextBox,及一个button,为该按键增加Click响应事件代码如下:this.OleDbInsertCommand1.CommandText = "INSERTsintosADDRESS(NAME,EMAIL, AGE, ADDRESS) VALUES('"+TextBox1.Text+"','"+TextBox2.Text+"','"+TextBox3.Text+"','"+TextBox4.Text+"')";OleDbInsertCommand1.Connection.Open();//打开连接OleDbInsertCommand1.ExecuteNonQuery();//执行该SQL语句OleDbInsertCommand1.Connection.Close();//关闭连接

6.C#连接SyBase


程序代码:

Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=数据库名;User ID=用户名;Data Source=数据源;Extended Properties="";Server Name=ip地址;Network Protocol=Winsock;Server Port Address=5000;
guguda2008 2009-08-17
  • 打赏
  • 举报
回复
2000和2005一起装一定要指定实例名
guguda2008 2009-08-17
  • 打赏
  • 举报
回复
卸了VS2005自带的2005。。。。
flyfly2008 2009-08-17
  • 打赏
  • 举报
回复
启动SQL2000服务管理器
yumanqing 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 beirut 的回复:]
C# codeSqlConnection("server=用户名\\实例名;database=数据库名;uid=sa;pwd=sa");


[/Quote]
这个用户名是WINDOWS 的用户名还是 SQL 的用户名,实例是数据库实例名吗?能不能用IP
fstao 2009-08-17
  • 打赏
  • 举报
回复
连接sqlserver2000或2005,不外乎就是sa、sa密码和ip,另外就是实例,还有就是防火墙这些东西而已,没什么难的。
黄_瓜 2009-08-17
  • 打赏
  • 举报
回复

SqlConnection("server=用户名\\实例名;database=数据库名;uid=sa;pwd=sa");


jingshuaizhjason 2009-08-17
  • 打赏
  • 举报
回复
用vs.net2005连接sql server 2005 出现以下错误:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

网站的数据库连接语句为:Server=127.0.0.1;uid=sa;pwd=xxx;database=xxx
经测试把server=127.0.0.1改为“server=.”或“server=机器名”,都可以正常连接;
所以只有在用IP时不能连接,经分析,解决方法如下:
1.打开Sql Server 2005 “配置工具” 中的“SQL Server 外围应用配置器”,点击“服务和连接的外围应用配置器”;
2.在出来的界面中点击“Database Engine”中的“远程连接”,把连接方式改为“本地连接和远程连接”中的“同时使用tcp/ip和name pipes”;
3.修改后通过“配置工具”中的“SQL Server Configuration Manager”重启Sql Server 2005服务;
注意:一定要重启Sql Server 2005服务修改才会生效;
SQL Server 外围应用配置器—服务和连接外围配置—database englie—远程连接—启用(远程连接的TCP/IP和named pipes)
SQL Server Configuration Manager—SQL2005网络配置—启用TCP/IP和named pipes
在TCP的协议中把IPALL的端口改为1433,就好了

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧