不同数据库之间的相互链接

MSSQL链接MYSQL数据库方法:
前提条件(系统安装MYODBC,这个可以到MYSQL官网上去下载)

1.使用TSQL建立(建立成功不代表可以查询)
直接使用连接字符串
EXEC master.dbo.sp_addlinkedserver @server = N‘MYSQL1‘, @srvproduct=N‘MySQL‘, @provider=N‘MSDASQL‘, @provstr=N‘DRIVER={MySQL ODBC 3.51 Driver}; SERVER=127.0.0.1; DATABASE=test; USER=root; PASSWORD=root; OPTION=3‘
EXEC master.dbo.sp_addlinkedserver @server = N‘MYSQL2‘, @srvproduct=N‘MySQL‘, @provider=N‘MSDASQL‘, @provstr=N‘DRIVER={MySQL ODBC 5.3 UNICODE Driver}; SERVER=127.0.0.1; DATABASE=test; USER=root; PASSWORD=root; OPTION=3‘
其中 MySQL ODBC 3.51 Driver MySQL ODBC 5.3 UNICODE Driver ,这个需要到“管理”--“ODBC”中查看具体机器上装的MYODBC的版本

在ODBC数据源管理器中--系统DNS建立一个MYSQL的连接
EXEC master.dbo.sp_addlinkedserver @server = N‘MYSQL3‘, @srvproduct=N‘MySQL‘, @provider=N‘MSDASQL‘, @datasrc=N‘odbc2mysql3‘, @catalog=N‘test‘

2.在MSSQL管理器UI中建立
注意(数据源和连接字符串只能用一个,两者是冲突的,这个要特别注意)

链接完成后,对数据的操作方式(现在MYSQL不支持four-part names)

网络上说MYODBC不支持
sql链接服务器链接mysql http://bbs.csdn.net/topics/380106204
OLE DB Providers Tested with SQL Server http://msdn.microsoft.com/en-us/library/ms187072.aspx

-- 把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‘);

时间: 2024-10-26 12:02:38

不同数据库之间的相互链接的相关文章

MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)

MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本章迭代更新) 一.数据库之间的区别 MySQL MySQL概述 关系型数据库.无论数据还是索引都存放在硬盘中.到要使用的时候才交换到内存中.能够处理远超过内存总量的数据. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的 SQL 语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断

Flash, Flex, Air, Flashplayer之间的相互关系是什么

Flash, Flex, Air, Flashplayer之间的相互关系是什么? 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:曾嵘 链接:http://www.zhihu.com/question/20001256/answer/15565376 来源:知乎ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的程序,最终可以编译成SWF.SWC.SWF就是我们常说的Flash动画.但是现在SWF已经不仅仅是动画,而

SQL不同服务器数据库之间的数据操作整理(完整版)

---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2010-06-25 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1

SQLServer服务器数据库之间的数据操作(完整版)

分类: 数据库开发技术 ---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2010-06-25 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Cop

SQL不同服务器数据库之间的数据操作整理(完整版)(转)

---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date   : 2010-06-25 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) --          Jul  9 2008 14:43:34 --    

SQL2008-不同数据库之间的触发器

create trigger tr_update_Table_1   on   rwqd     FOR  UPDATE   As   update dataabc.dbo.Table_1  set NO2='OK' from  dataabc.dbo.Table_1 aa,inserted bb where aa.NO1=bb.xh  go PS: Create Table Student(              --学生表         StudentID int primary ke

关系型数据库和非关系型数据库之间的那些区别(一)

说说关系型数据库和非关系型数据库之间的那些区别 第一弹 就拿现在最流行的两种数据库来说吧:mysql和mongodb(介于关系型和非关系型之间的一种产品,在这里面我们就当做非关系型数据库用来和mysql比较一下) 举个实际好理解的的例子:学生选课的系统(简化来说举出系统里面的两个:学生,课程) 首先说在mysql里面建立的模型是 学生表(student): S Sid name gender age address email college class 1 张三 女 19 a 111 外语 1

整型数组与vector对象之间的相互初始化

#include<iostream> #include<vector> #include<string> using namespace std; int main() { vector<int>::size_type i=0; int arr[10]={0,1,2,3,4,5,6,7,8,9}; //使用整型数组初始化一个vector对象 vector<int> vec(begin(arr),end(arr)); for(auto v:vec)

创建数据库之间的连接

数据库之间的连接:(db_link) 通过一台数据库查询另一台数据的数据 服务端: 开启监听 开启数据库fsdb 使用测试数据:system.xxx 表 客户端: 创建:tnsnames.ora  #tns 名字p1 登录到本地一台数据库(非fsdb) 创建db_link: create database link fsdb_link connect to system identified by oracle using 'p1'; #create database link db_link的