【发布时间】:2015-03-02 17:28:37
【问题描述】:
我在 SP 中工作,我在不同的服务器中有两张表,一张是主表,另一张是副本,但列较少,我想要的只是每 5 分钟在主表上运行一次 SP为了验证是否已创建新记录,如果是,则获取这些新记录并将它们插入到位于另一台服务器中的副本表中。
搜索解决方案我发现这个脚本在同一台服务器上运行良好,但是当我尝试使用链接服务器运行它时它失败了......请有人帮我解决这个问题。
这是一个得到的错误......
返回链接服务器“ESDBCGW001T”的 OLE DB 提供程序“SQLNCLI” 消息“合作伙伴事务管理器已禁用对 远程/网络事务。”。消息 7391,级别 16,状态 2,程序 sp_newrecords,第 37 行 操作无法执行,因为 链接服务器“LINKEDSERVER”的 OLE DB 提供程序“SQLNCLI”无法使用 开始分布式事务。
所有配置都是完美的,当我在没有变量的情况下运行插入时运行良好,我的意思是,而不是 @val1、@val2 和 @val3 我使用实际值 1、'A'、@987654326 @。
USE [XXX]
GO
/****** Object: StoredProcedure [dbo].[sp_newrecords] Script Date: 03/02/2015 11:11:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <>
-- Create date: <>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_newrecords]
-- Add the parameters for the stored procedure here
AS
BEGIN
DECLARE @val1 int
DECLARE @val2 nvarchar(50)
DECLARE @val3 nvarchar(50)
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE mycur1 CURSOR for
select empid,fname,lname from employee
where empid = 508 --this is for test only
OPEN mycur1
FETCH NEXT FROM mycur1 INTO @val1, @val2 , @val3
WHILE @@Fetch_Status = 0
BEGIN
begin tran /* default read committed isolation level is fine */
if not exists (select * from openquery (linkedserver,'select * from DBNAME.dbo.Employee_backup'))
--insert employee_backup values (@val1, @val2 , @val3)
begin
INSERT into [linkedserver].[DBNAME].[dbo].[Employee_backup] values (@val1, @val2 , @val3)
end
/*if not exists (select * from employee_backup with (updlock, rowlock, holdlock)
where employee_backup.empid = @val1
and employee_backup.fname = @val2 )
--insert employee_backup values (@val1, @val2 , @val3)
INSERT [LINKEDSERVER].[DBNAME].[dbo].[Employee_backup] values (@val1, @val2 , @val3)*/
--else
-- /* update */
commit /* locks are released here */
FETCH NEXT FROM mycur1 INTO @val1, @val2 , @val3`enter code here`
END
CLOSE mycur1
DEALLOCATE mycur1
END
【问题讨论】:
标签: sql-server stored-procedures linked-server