创建下面的存储过程进行数据处理:
create proc p_merg
as
declare @srvname varchar(250),@username varchar(250),@pwd varchar(100)--定义游标,取得各远程服务器的信息
declare #tb cursor for select 服务器名,用户名,密码 from 保存远程信息的表
open #tb
fetch next from #tb into @srvname,@username,@pwd
while @@fetch_status=0
begin
--创建链接服务器
exec sp_addlinkedserver 'Link_server','','SQLOLEDB',@srvname
exec sp_addlinkedsrvlogin 'Link_server','false',null,@username,@pwd --数据导入处理,根据你的情况写
insert into 表 select * from Link_server.数据库名..表名 --数据处理完成后删除链接服务器
exec sp_dropserver 'Link_server','droplogins'
fetch next from #tb into @srvname,@username,@pwd
end
close #tb
deallocate #tbgo创建一个JOB,设置每周一执行,JOB的执行语句如下:exec p_merg
create proc p_merg
as
declare @srvname varchar(250),@username varchar(250),@pwd varchar(100)--定义游标,取得各远程服务器的信息
declare #tb cursor for select 服务器名,用户名,密码 from 保存远程信息的表
open #tb
fetch next from #tb into @srvname,@username,@pwd
while @@fetch_status=0
begin
--创建链接服务器
exec sp_addlinkedserver 'Link_server','','SQLOLEDB',@srvname
exec sp_addlinkedsrvlogin 'Link_server','false',null,@username,@pwd --数据导入处理,根据你的情况写
insert into 表 select * from Link_server.数据库名..表名 --数据处理完成后删除链接服务器
exec sp_dropserver 'Link_server','droplogins'
fetch next from #tb into @srvname,@username,@pwd
end
close #tb
deallocate #tbgo创建一个JOB,设置每周一执行,JOB的执行语句如下:exec p_merg
解决方案 »
- 怎么判断一个值是否在另外的一个值里面 在线等。。。
- 怎么实现两个数据库中的两个表实现同步!急.........................................
- VS2005和SQL2000与SQL2005同时安装在一台计算机上,应该怎么安?能不能安?谢谢大家!
- select dateadd(month,6,'2008-08-28') 返回问题
- 如何写关联表查询语句
- 一条SQL语句问题,在线等。
- sql2005解密问题
- 给个idea吧!!
- 如何查询一个SqlServer数据库表的所有唯一约束?exec sp_helpconstraint tablename?
- 如何实现它 SQL一问
- 存储过程中执行 sp_addlinkedserver ?
- 用VBSCRIPT怎么写连接数据库(一台电脑是客户端,另一台是服务器)谢了
之后只有加GO
才能真正提交建立连接服务器
创建下面的存储过程进行数据处理:
create proc p_merg
as
declare @srvname varchar(250),@username varchar(250),@pwd varchar(100)--定义游标,取得各远程服务器的信息
declare #tb cursor for select 服务器名,用户名,密码 from 保存远程信息的表
open #tb
fetch next from #tb into @srvname,@username,@pwd
while @@fetch_status=0
begin
--创建链接服务器
exec sp_addlinkedserver 'Link_server','','SQLOLEDB',@srvname
exec sp_addlinkedsrvlogin 'Link_server','false',null,@username,@pwd --数据导入处理,根据你的情况写
insert into 表 select * from ^这里出错(因为link_server没有建立)Link_server.数据库名..表名 --数据处理完成后删除链接服务器
exec sp_dropserver 'Link_server','droplogins'
fetch next from #tb into @srvname,@username,@pwd
end
close #tb
deallocate #tbgo创建一个JOB,设置每周一执行,JOB的执行语句如下:exec p_merg麻烦你在帮忙给我看看阿谢谢了!!
改正如下:.create proc p_merg
as
declare @srvname varchar(250),@username varchar(250),@pwd varchar(100)--定义游标,取得各远程服务器的信息
declare #tb cursor for select 服务器名,用户名,密码 from 保存远程信息的表
open #tb
fetch next from #tb into @srvname,@username,@pwd
while @@fetch_status=0
begin
--创建链接服务器
exec sp_addlinkedserver 'Link_server','','SQLOLEDB',@srvname
exec sp_addlinkedsrvlogin 'Link_server','false',null,@username,@pwd --数据导入处理,根据你的情况写,用exec来执行处理语句,这样就不会错了.
exec('insert into 表 select * from Link_server.数据库名..表名') --数据处理完成后删除链接服务器
exec sp_dropserver 'Link_server','droplogins'
fetch next from #tb into @srvname,@username,@pwd
end
close #tb
deallocate #tbgo
改正如下:.create proc p_merg
as
declare @srvname varchar(250),@username varchar(250),@pwd varchar(100)--定义游标,取得各远程服务器的信息
declare #tb cursor for select 服务器名,用户名,密码 from 保存远程信息的表
open #tb
fetch next from #tb into @srvname,@username,@pwd
while @@fetch_status=0
begin
--创建链接服务器
exec sp_addlinkedserver 'Link_server','','SQLOLEDB',@srvname
exec sp_addlinkedsrvlogin 'Link_server','false',null,@username,@pwd --数据导入处理,根据你的情况写,用exec来执行处理语句,这样就不会错了.
exec('insert into 表 select * from Link_server.数据库名..表名') --数据处理完成后删除链接服务器
exec sp_dropserver 'Link_server','droplogins'
fetch next from #tb into @srvname,@username,@pwd
end
close #tb
deallocate #tbgo
1.写一个ADDLINKEDSERVER的脚本文件ADDLINKEDSERVER.SQL:
EXEC sp_addlinkedserver 'svrname','','SQLOLEDB',NULL,NULL,'DRIVER={SQL Server};SERVER=server_name;UID=sa;PWD=admin;'
go
exec sp_addlinkedsrvlogin @rmtsrvname='auchan',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword=''
GO
2.再写一个ADDSERVER.BAT文件
ISQL -Usa -P -S%computername% -d db_name -n -i addlinkedserver.sql
3.你可以在SP中调用这个脚本,也可以在JOB中运行这个批处理文件。这样就可以非常的灵活处理。
4.同样,你也可以写一个REMOVE这个LINKEDSERVER的脚本。
1.addlinkedserver
2.retrive data
3.drop linked server
insert 本地库名..表名 select * from OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码').库名.dbo.表名你最好事先添加好所有的服务器,你的sp或脚本,直接 insert xx select * from xx.xx.xx.xx 就可以了