100分求助!!!◎_◎ 眼睛都瞪出来了,还没有解决这个问题:SQLServer之间的数据更新问题!!!!
现在有两个服务器都是Sqlserver 2000。
名称是:ServerA和ServerB,其中都有个名称为Test的数据库
都是使用Windows认证的方式进行连接。
使用C#的SqlConnection对象连接到数据库ServerA的Test,要根据ServerA的Test来更新ServerB中Test中的表
Test 数据库中有表: T_User
结构:
U_ID
U_Name
U_Sex
我的连接字符串:
SQL code
Password=;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=TEST;Data Source=ServerA;
我的SQL语句:
SQL code
INSERT INTO OPENDATASOURCE('SQLOLEDB.1','Password=;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=TEST;Data Source=ServerB;').Test.dbo.T_User
FROM T_User
出错。提示就是OLEDB驱动错误,没有其他信息。有时侯还会导致服务器运行缓慢,发生TIME OUT 情况。
我使用这样如此简单的SELECT语句都不行:
SQL code
SELECT * FROM OPENDATASOURCE('SQLOLEDB.1','Password=;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=TEST;Data Source=ServerB;').Test.dbo.T_User
在ServerA中执行相同的SQL语句就没有问题。
十分奇怪,我尝试着把连接字符串中的Integrated Security,Persist Security Info,Initial Catalog删除,都无法解决。
------解决方案--------------------友情帮顶
------解决方案--------------------顶帮!
------解决方案--------------------
建议你用SQLSERVER的链接服务器来处理连接问题,可以在ServerA上建立ServerB的链接,假设你将链接名取为B,
此时你查询表只需要用
select * B.dbo.T_User,
更新SQL类似
------解决方案--------------------
在同一个SQL SERVER管理工具下操作两个数据库,应该就没问题了,你能连接上就可以操作了
------解决方案--------------------没有遇到过!帮顶!
------解决方案-------------------- 1. 配置windows的ODBC数据源:
开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择CENTURE SQLBASE 3.01 32-BIT DRIVERS-NT &WIN95—》进入ODBC SQLBASE DRIVER SETUP画面:
自定义数据源名称(随意如: SQLBASETEST)—》数据库名称(必选!)—》
SERVER NAME: 输入SQLBASE DATABASE的SERVER名称
DEFAULT USER NAME : 输入SQLBASE DATABASE的用户
其他选择默认值,选择OK(确认)即可!
配置和测试ODBC完成!
2. 配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:MICROSOFT OLE DB PROVIDER FOR ODBC DRIVERS; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的SQLBASE数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入SQLBASE的数据库用户名和密码—》服务器选项标签页可默认—》确定。
4. 准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该SQLBASE数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[SQLBASE用户].[表名]。更详细具体的使用这里不再赘述。
------解决方案--------------------没出现过这问题,我一台服务器操作十几台数据库
------解决方案--------------------Data Source 一般输入IP
------解决方案--------------------<add key="guba" value="server=(local);initial catalog=数据库名;persist security info=False;user id=sa;password=zhx;workstation id=server;packet size=4096"/>
<add key="guba_hz" value="server=(192.168.1.12);initial catalog=数据库名;persist security info=False;user id=sa;password=zhx;workstation id=server;packet size=4096"/>