5 个解决方案
#1
不在同一服务器上
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','st1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','stsoft'
go
--访问不同电脑上的数据库
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','st1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','stsoft'
go
--访问不同电脑上的数据库
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
#2
在第五台服务器上执行以下语句
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
分别连接四个服务器的数据库
再用
insert into tb
select * FROM srv_lnk1.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk2.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk3.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk4.数据库名.dbo.TB
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
分别连接四个服务器的数据库
再用
insert into tb
select * FROM srv_lnk1.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk2.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk3.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk4.数据库名.dbo.TB
#3
--任意一台服务器上执行:
insert openrowset('sqloledb','服务器5';'sa';'密码',库.dbo.表)
select * from openrowset('sqloledb','服务器1';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器2';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器3';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器4';'sa';'密码',库.dbo.表)
insert openrowset('sqloledb','服务器5';'sa';'密码',库.dbo.表)
select * from openrowset('sqloledb','服务器1';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器2';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器3';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器4';'sa';'密码',库.dbo.表)
#4
该怎么建立复制?怎么避免这四台服务器复制的时候不相互覆盖?
数据不同,怎么会覆盖?
如果用发布/订阅,你考虑用"合并复制"
数据不同,怎么会覆盖?
如果用发布/订阅,你考虑用"合并复制"
#5
谢谢诸位,我使用乐发布/订阅,发布的时候过滤一下数据就不会覆盖掉别的数据库的数据了。谢谢诸位
#1
不在同一服务器上
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','st1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','stsoft'
go
--访问不同电脑上的数据库
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','st1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','stsoft'
go
--访问不同电脑上的数据库
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
#2
在第五台服务器上执行以下语句
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
分别连接四个服务器的数据库
再用
insert into tb
select * FROM srv_lnk1.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk2.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk3.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk4.数据库名.dbo.TB
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
分别连接四个服务器的数据库
再用
insert into tb
select * FROM srv_lnk1.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk2.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk3.数据库名.dbo.TB
UNION ALL
select * FROM srv_lnk4.数据库名.dbo.TB
#3
--任意一台服务器上执行:
insert openrowset('sqloledb','服务器5';'sa';'密码',库.dbo.表)
select * from openrowset('sqloledb','服务器1';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器2';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器3';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器4';'sa';'密码',库.dbo.表)
insert openrowset('sqloledb','服务器5';'sa';'密码',库.dbo.表)
select * from openrowset('sqloledb','服务器1';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器2';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器3';'sa';'密码',库.dbo.表)
union all
select * from openrowset('sqloledb','服务器4';'sa';'密码',库.dbo.表)
#4
该怎么建立复制?怎么避免这四台服务器复制的时候不相互覆盖?
数据不同,怎么会覆盖?
如果用发布/订阅,你考虑用"合并复制"
数据不同,怎么会覆盖?
如果用发布/订阅,你考虑用"合并复制"
#5
谢谢诸位,我使用乐发布/订阅,发布的时候过滤一下数据就不会覆盖掉别的数据库的数据了。谢谢诸位