Chinaunix首页 | 论坛 | 博客
  • 博客访问: 489926
  • 博文数量: 99
  • 博客积分: 3621
  • 博客等级: 中校
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 16:29
文章存档

2012年(21)

2011年(28)

2010年(50)

分类: Mysql/postgreSQL

2010-10-20 15:57:40

在MSSQL SERVER2005后,提供了链接服务器。利用它可以对异类数据库和MSSQL进行交互,使用起来非常方便。操作步骤如下:
1:创建MYSQL数据库的ODBC数据源,名称为CPC,选择一个默认的数据库。
2:SQL代码如下
 
 

-- 创建链接服务器

EXEC sp_addlinkedserver @server ='MySQLTest', @srvproduct='MySQL',@provider ='MSDASQL', @datasrc ='cpc'
GO

-- 创建或更新 SQL Server 本地实例上的登录名与远程服务器中安全帐户之间的映射。

-- 好像没什么用,不做这一步也能进行数据交互

EXEC sp_addlinkedsrvlogin @rmtsrvname='MySQLTest',@useself='false',@locallogin='sa',@rmtuser='cpc',@rmtpassword='123'
go

-- 把SQL SERVER里的TT表的记录插入到MYSQL的T1表里,这这里也可以插入具体值。

 INSERT OPENQUERY(MySQLTest,'select * from t1') select * from TT;
 INSERT OPENQUERY(MySQLTest,'select * from t1') values (99,99,99);
 
 -- 对T1表进行UPDATE操作

 UPDATE OPENQUERY(MySQLTest,'select value from t1') set value=value +100;
 
 -- 对T1表进行DELETE 操作,不明白为什么一次只能删除一条,

 DELETE OPENQUERY (MySQLTest, 'SELECT * FROM t1 WHERE hour = 99');
  DELETE OPENQUERY (MySQLTest, 'SELECT * FROM t1 ');
 
 -- DELETE OPENQUERY (MySQLTest, 'SELECT * FROM t1 WHERE hour > 2'); --这样是不行的,报错

 /*
 链接服务器"MySQLTest"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "键列信息不足或不正确。更新影响到多行。"。
消息 7345,级别 16,状态 1,第 1 行
链接服务器 "MySQLTest" 的 OLE DB 访问接口 "MSDASQL" 无法从表 "SELECT * FROM t1 WHERE hour > 2" 删除数据。更新操作不满足架构要求。
*/

 -- 对T1表进行查询操作

 select * from openquery(MySQLTest,'select * from t1');
 
 -- 把MYSQL的T1表的记录写回到MSSQL

 insert into TT select * from openquery(MySQLTest,'select * from t1');
go

-- 释放掉链接服务

EXEC sp_dropserver 'MySQLTest','droplogins'
go


一个疑问,为什么一次不能删除多条记录。

正在找原因。

阅读(7424) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

xw3102013-04-22 15:14:55

INSERT OPENQUERY(MySQLTest,'select * from t1') values (99,99,99);
插入英文也可以了,但是无法插入中文,要么显示?,要么为空;

请帮忙,谢谢!

xw3102013-04-12 18:22:12

我用SQLSERVER链接服务器实现MSSQL和MYSQL数据交互过程中,
select *  FROM  OPENQUERY(masmysql, 'select * from massi.sms_sent_5')
这个没有问题。

但是,
INSERT INTO OPENQUERY(masmysql,'select * from massi.SMS_OUTBOX') select '4841','','138','test11',0,15,0,'2013-04-12','P000000000000014'

报错如下:

服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MSDA

chinaunix网友2010-10-21 10:03:11

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com