日期:2014-05-18  浏览次数:20406 次

请教:怎么在一个transaction中更新另一台服务器上的表结构
EXEC   sp_addlinkedsrvlogin   @descServerName,   'false ',   NULL,   @descServerUser,   @descServerPassword

ALTER   TABLE   Order_Commerce.dbo.ReceiveOrderInfo
ADD   CONSTRAINT   pk_ReceiveOrderInfo   PRIMARY   KEY(ordergroup_id)


sp_addlinkedsrvlogin不能在transaction中使用


------解决方案--------------------
1.在被链接的服务器上创建存储过程并赋权
create proc usp_execsql @sql nvarchar(4000)
as
if @sql is not null
exec(@sql)
2.--创建链接服务器
exec sp_addlinkedserver 'srv_lnk ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'srv_lnk ', 'false ',null, '用户名 ', '密码 '
go
3.执行语句
exec srv_lnk.数据库.dbo.usp_execsql 'alter table 表 add 字段名 int '
go

------解决方案--------------------
也可用sp_executesql执行修改语句.
而且要把链接服务器属性中的RPC和RPC输出选中.