(一)先讲解建立类似dblink功能方法:
--以后不再使用时删除链接服务器
exec sp_droplinkedsrvlogin 'DBLink',null
exec sp_dropserver 'DBLink'
--建立连接
EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='Server2' --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --帐号
'thankyoubobby' --密码
Select * from DBVIP.pubs.dbo.orders
/ORACLE
Exec sp_droplinkedsrvlogin demo,Null
Exec sp_dropserver demo
go
EXEC sp_addlinkedserver
@server ='demo',
@srvproduct='Oracle',
@provider='MSDAORA',
@datasrc='ServiceName'
EXEC sp_addlinkedsrvlogin
'demo',
'false',
NULL,
'userid',
'password'
go
SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )
UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')
SET name = 'hello';
INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')
VALUES ('hello');
DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');
(二)SQL 2008用作业实现同步详解
1.用作业来实现 数据库的同步,首先就要知道怎么建立连接 还有就是必须有这个权限了
先学习下连接数据库的基本操作。然后把他放在在job中定时执行就好了。就OK了
只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 sp_addlinkedsrvlogin。
[sql]
www.2cto.com
-- 适合不同服务器数据之间的操作
--以后不再使用时删除链接服务器
exec sp_droplinkedsrvlogin 'DBLink',null
exec sp_dropserver 'DBLink'
--建立连接
EXEC sp_addlinkedserver 'DBLink' ,' ','SQLOLEDB','192.168.107.8'
EXEC sp_addlinkedsrvlogin 'DBLink ', 'false ',null, 'sa ', '123!@#qwe'
-- 通过在之前加入DBLink连接关键字就可以轻松的访问到远程主机的数据库的资料如下
select top 5 * from DBLink.CSSMCUR.dbo.Base_UserOrg
/*
ID CreatedOn CreatedBy ModifiedOn ModifiedBy SysVersion User Org www.2cto.com
-------------------- ----------------------- -------------------------------------------------- ----------------------- -------------------------------------------------- -------------------- -------------------- --------------------
1001008040001848 2010-08-04 10:19:10.000 Enterprise Administrator 2010-08-04 10:19:10.000 Enterprise Administrator 0 1001008040001842 1001008040000059
1001008040001849 2010-08-04 10:19:10.000 Enterprise Administrator 2010-08-04 10:19:10.000 Enterprise Administrator 0 1001008040001844 1001008040000059
1001008040001850 2010-08-04 10:19:10.000 Enterprise Administrator 2010-08-04 10:19:10.000 Enterprise Administrator 0 1001008040001846 1001008040000059
1001008124760507 2010-08-11 17:02:55.000 Enterprise Administrator 2010-08-11 17:02:55.000 Enterprise Administrator 0 1001008124760229 1001008040000059
1001008124760508 2010-08-11 17:02:55.000 Enterprise Administrator 2010-08-11 17:02:55.000 Enterprise Administrator 0 1001008124760229 1001008040000238
(5 行受影响)
*/
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) www.2cto.com
select *from 本地表
--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A
www.2cto.com
--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表
具体操作如下:
a)新建作业。如下图:
a、 新建作业。如下图:
www.2cto.com
b、 点击【新建作业】对话框的【常规】选项卡,填写 SQL JOB的名称。如下图
c、 点击【新建作业】对话框的【步骤】选项卡,填写 步骤名称。
d、 进行作业的第一个步骤------建立数据库连接操作。如下图:
e、 进行作业的第下一个步骤。如下图:
e、设置作业执行计划
f、点击确定,完成SQL JOB的开发。
g、完成后作业下面就多了刚开发的作业。如下:
h、作业制作完成后,可以立即让它执行。如果不让它执行,它也会在按照制定频率执行。测试作业: