我想创建一个过程,该过程用于将数据从一个服务器数据库表插入另一个服务器数据库表。
为此,我有两个参数@server='ServerName'
和@Database='DbName'
。并且表名是固定的。
我正在尝试这样:
CREATE PROCEDURE Demo
(@server NVARCHAR(100), @Database NVARCHAR(100))
AS
BEGIN
DECLARE @str NVARCHAR(MAX)
SET @str = 'INSERT INTO ['+@server+'].' + @Database + '.DBO.TableName1 (Id, FirstName, LastName, Gender)
SELECT Id, FirstName, LastName, Gender
FROM TableName2'
EXEC sp_executesql @str
END
这对于同一台服务器非常有效,但是对于另一台出现以下错误的服务器:
1206消息,第18级,状态118,过程演示,第74行
Microsoft分布式事务处理协调器(MS DTC)已取消了分布式事务处理。
服务器是链接服务器,两个数据库中的表服务器是相同的。如何更正此脚本?预先感谢。