读书人

两个sql 服务器上的数据相互传输

发布时间: 2013-09-06 10:17:17 作者: rapoo

两个sql 服务器上的数据互相传输
现在需要两个sql 服务器上的数据互相传输、写的是存错过程建立作业让其自动执行、在执行的过程中如何用sql 判断两个服务器网络是否通呢? sql 服务器 数据 网络
[解决办法]
这个要建链接服务器:

exec sp_addlinkedserver 'DB32', ' ', 'SQLOLEDB', '192.168.3.x\SQLEXPRESS2008R2'
exec sp_addlinkedsrvlogin 'DB32', 'false',null, 'sa', 'xxxxxxx'

--查询
select * from 链接名称.数据库名.dbo.表名

--不用后删除
exec sp_dropserver '数据库名', 'droplogins'




--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset( 'SQLOLEDB', 'sql服务器名 '; '用户名'; '密码 ',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码 ',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
>exec sp_addlinkedserver @server=’别名’,@provider=’sqloledb’,@srvproduct=’’,@datasrc=’远程服务器IP’




远程注册成功:(亲测)

--exec sp_addlinkedserver '注册名','','SQLOLEDB','远程数据库名'
--exec sp_addlinkedsrvlogin '注册名','false',null,'用户名','密码'


--go

[解决办法]

--打开高级选项,允许即席查询
EXEC SP_CONFIGURE 'show advanced options',1
RECONFIGURE
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1
RECONFIGURE
GO

DECLARE @test INT

SELECT TOP(1) @test = 1
FROM OPENDATASOURCE
(
'SQLOLEDB',
'Persist Security Info=False;User ID=xx;Password=xxxxx;Initial Catalog=master;Data Source=127.0.0.1,1433'
).master.dbo.spt_values T

--关闭选项
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
RECONFIGURE
EXEC SP_CONFIGURE 'show advanced options',0
RECONFIGURE

IF (@test = 1)
PRINT 'sucess!'
ELSE
PRINT 'failed'
GO

[解决办法]
用linkserver,


[解决办法]
引用:
传输应该问题、假如两个网络不通、 执行传输的时候会报错的、我是想在互相传输之前、就是像用ping网路似得、判断下网络、如果网络通就传、如果网络不通、那个数据传输的代码就不执行了。。

好像没什么直接的方法。把测试代码放在TRY...CATCH...中,将通或不通的结果值赋给变量。再往下判断:
DECLARE @test INT

BEGIN TRY
EXEC SP_CONFIGURE 'show advanced options',1
RECONFIGURE
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1
RECONFIGURE

SELECT TOP(1) @test = 1
FROM OPENDATASOURCE
(
'SQLOLEDB',
'Persist Security Info=False;User ID=xx;Password=xxxxx;Initial Catalog=master;Data Source=127.0.0.1,1433'
).master.dbo.spt_values T

--关闭选项
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
RECONFIGURE
EXEC SP_CONFIGURE 'show advanced options',0
RECONFIGURE
END TRY
begin CATCH
SET @test = 0
--关闭选项
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
RECONFIGURE
EXEC SP_CONFIGURE 'show advanced options',0
RECONFIGURE
END CATCH

IF (@test = 1)
PRINT 'sucess!'
ELSE
PRINT 'failed'


GO


读书人网 >SQL Server

热点推荐