求一存储过程的写法.

dlmeijianyu 2009-07-17 09:56:05
加精
现有2个服务器:
服务器A: IP:1.1.1.0 Database:AAA TableName:AAAA User:AAAAA Password:AAAAA
服务器B: IP:1.1.2.0 DataBase:BBB TableName:BBBB User:BBBBB Password:BBBBB
要求:写一存储过程,将服务器A的表AAAA的数据复制到服务器B中的表BBBB中去.两个表完全一样.
小弟初学SQL,跨服务器的写法不知道改怎么写,请各位大侠指点.

方法1:将存储过程写在服务器B上.
CREATE PROC EXAMPLE
BEGIN TRAN
DELETE FROM BBBBB
IF @@ERROR <> O GOTO EXITPROC

INSERT INTO BBBBB
( SELECT *
FROM <=此处的写法
)
IF @@ERROR <> O GOTO EXITPROC

IF @@ERROR <> 0
GOTO EXITPROC
ELSE
BEGIN
COMMIT TRAN
RETURN
END
EXITPROC :
RETURN
方法2:将存储过程写在服务器A上.
CREATE PROC EXAMPLE2
DELETE FROM <=此出的写法
INSERT INTO <=此出的写法
(SELECT *
FROM AAAA
...全文
1358 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
caomeng2010 2010-07-09
  • 打赏
  • 举报
回复
記號記號
w3274666197 2010-06-25
  • 打赏
  • 举报
回复
学习了 很不错
mhc1314 2009-07-23
  • 打赏
  • 举报
回复
z学习
huohuli008 2009-07-23
  • 打赏
  • 举报
回复
Mark~~
xiaoxiangqing 2009-07-23
  • 打赏
  • 举报
回复
study
  • 打赏
  • 举报
回复
好.参考一下.
tibetjungle 2009-07-22
  • 打赏
  • 举报
回复
Oracle上的dblink可以完全满足你的要求。
使用步骤:
1、在B库的存储过程中建的dblink,语句如下:

create database link yourdblinkname connect to yourusername identified by yourpassword using '(description=(address=(PROTOCOL=tcp)(HOST=10.25.10.159)(PORT=1528))(connect_data = (sid = yoursid)))';

2、在存储过程中将A表数据导入B表

insert into table table_b( field_list )
select field_list from table_a@yourdblinkname

3、销毁dblink

drop database link yourdblinkname
zouyx317 2009-07-22
  • 打赏
  • 举报
回复
值得注意的是,如果用第一种方法, 如果用的是IP地址做连接服务器名是
前缀请加[],如:

Insert into BBB.dbo.BBB
select * from [1.1.1.0].AAA.dbo.AAA
zouyx317 2009-07-22
  • 打赏
  • 举报
回复
这个问题我基本天天遇到的,呵呵
我知道有三种方法可以实现,上面很多高手说实现都给出代码来了
1.的用增加 链接服务器的方法
2.用OpenRowSet函数来实现
3. 用OpenDataSource函数来实现
「已注销」 2009-07-22
  • 打赏
  • 举报
回复
我也是初学者,抱歉
手抓饼加辣 2009-07-22
  • 打赏
  • 举报
回复
mar
sharpidd 2009-07-21
  • 打赏
  • 举报
回复
学习了
r11222 2009-07-21
  • 打赏
  • 举报
回复
mark
nowitzki41 2009-07-21
  • 打赏
  • 举报
回复
mark
hanjk1234 2009-07-21
  • 打赏
  • 举报
回复
数据库.......
SinGooCMS 2009-07-21
  • 打赏
  • 举报
回复
代码不出来??

if object_id('InsertInToWebServerData') is not null
drop proc InsertInToWebServerData
go

create procedure InsertInToWebServerData
@thedate varchar(10) --需要加入内容的时间,一般是用做比较的,格式:2009-06-30
as
declare @colname varchar(4000),@sql varchar(4000)
set @colname=''
set @sql=''
select @colname=@colname+name+',' from syscolumns where id=object_id('FileCollection') order by colorder
set @colname= substring(@colname,len('AutoID,,'),len(@colname)-len('AutoID,')-1) --查找出不包括AutoID在内的字段
--以下是插入数据到网站服务器数据库中
set @sql='insert into openrowset(''SQLOLEDB'',''59.53.91.xxx '';''用户名'';''用户密码'',数据库名.dbo.表名)( ' + @colname+ ' ) select ' + @colname + ' from 本地表名 where convert(varchar(10),CreateDate,120)='''+@thedate+''''
exec (@sql)
SinGooCMS 2009-07-21
  • 打赏
  • 举报
回复
异地服务器内容更新吧.我们网站也需要更新.写了个存储过程.根据时间来更新的


if object_id('InsertInToWebServerData') is not null
drop proc InsertInToWebServerData
go

create procedure InsertInToWebServerData
@thedate varchar(10) --需要加入内容的时间,一般是用做比较的,格式:2009-06-30
as
declare @colname varchar(4000),@sql varchar(4000)
set @colname=''
set @sql=''
select @colname=@colname+name+',' from syscolumns where id=object_id('FileCollection') order by colorder
set @colname= substring(@colname,len('AutoID,,'),len(@colname)-len('AutoID,')-1) --查找出不包括AutoID在内的字段
--以下是插入数据到网站服务器数据库中
set @sql='insert into openrowset(''SQLOLEDB'',''59.53.xx.xxx '';''用户名'';''用户密码'',数据库名.dbo.表名)( ' + @colname+ ' ) select ' + @colname + ' from 本地表名 where convert(varchar(10),CreateDate,120)='''+@thedate+''''
exec (@sql)

龙之子明京 2009-07-21
  • 打赏
  • 举报
回复
用不着楼上那么麻烦!直接在数据库中右击导出数据,然后选择源数据库和目的数据库,建立连接后,瞬间就导完数万条数据!
sharon8259 2009-07-21
  • 打赏
  • 举报
回复
站着看
gentlebrother 2009-07-21
  • 打赏
  • 举报
回复
nark
加载更多回复(52)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧