请问,存储过程和触发器的问题(跨库)

xh5151 2003-07-10 12:36:19
如果一个存储过程或着触发器中要操作另一个服务器里的一张表该什么写,会不会产生不良的后果~


谢谢
...全文
44 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
longji 2003-07-10
  • 打赏
  • 举报
回复
1、先建立对另一个服务大的连接:
--建立连接服务器
exec sp_addlinkedserver @server = N'netname',--你给这个连接起的别名
@srvproduct = N' ',
@provider = N'SQLOLEDB',
@datasrc = N'10.42.4.54', --另一个服务器的IP地址
@catalog = N'pubs'--你要连接操作的数据库

--建立登录,第一个sa处是你本机的用户名,第二个sa是另一个服务器的用户名,最后一个空格处是另一个服务器上的登陆密码
exec sp_addlinkedsrvlogin N'netycjxc', false, N'sa', N'sa', N''
2、进行你的常规操作,要操作另一个数据库的表时,只要如此引用:
[netname].[pubs].dbo.表名,也就是“服务器别名.数据库.角色.表名”就可以了
CrazyFor 2003-07-10
  • 打赏
  • 举报
回复
建立链接服务器

EXEC sp_addlinkedserver
'别名',
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
GO

insert into b(col1,col2....)
select col1,col2,col3.... from 别名...table
xh5151 2003-07-10
  • 打赏
  • 举报
回复
up~~
xh5151 2003-07-10
  • 打赏
  • 举报
回复
那如果我要在触发器里操作呢,有什么办法吗?
pengdali 2003-07-10
  • 打赏
  • 举报
回复
但不能用在触发器里!!!
pengdali 2003-07-10
  • 打赏
  • 举报
回复
使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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