链接服务器错误

时间:2009-01-21 11:55:07

标签: sql-server

我正在使用链接服务器使用MSDTC传输数据

Alter Proc [dbo].[usp_Select_TransferingDatasFromServerCheckingforExample]

@RserverName varchar(100), ----- Server Name  
@RUserid Varchar(100),           ----- server user id
@RPass Varchar(100),              ----- Server Password 
@DbName varchar(100)           ----- Server database    

As

Set nocount on
Set Xact_abort on

Declare @user varchar(100)
Declare @userID varchar(100)
Declare @Db Varchar(100)
Declare @Lserver varchar(100)

Select @Lserver = @@servername
Select @userID = suser_name()
select @User=user

Exec('if exists(Select 1 From [Master].[' + @user + '].[sysservers] where srvname = ''' + 
    @RserverName + ''') begin Exec sp_droplinkedsrvlogin ''' +  @RserverName + ''',''' + @userID +
    ''' exec sp_dropserver ''' + @RserverName + ''' end ')

declare @ColumnList varchar(max)
set @ColumnList = null

Select @ColumnList =  case when @ColumnList is not null then @ColumnList + ',' + quotename(name) else quotename(name) end 
From syscolumns where Id = object_id('Crnot') order by colid   

Set identity_Insert Crnot On
exec ('Insert Into ['+ @RserverName + '].'+ @DbName + '.'+ @user +'.Crnot ('+ @ColumnList +') Select '+ @ColumnList +' from Crnot ')
Set identity_Insert Crnot Off

Exec sp_droplinkedsrvlogin  @RserverName,@userID
Exec sp_dropserver @RserverName

执行此qry时,我收到错误“No transaction Active”

1 个答案:

答案 0 :(得分:1)

检查您的MS DTC配置(从文档剪切和粘贴,最近未检查):

  1. 启动,运行,dcomcnfg.exe

  2. 在“组件服务”窗口中,展开“组件服务...计算机...我的电脑”。

  3. 右键单击“我的电脑”,“属性”。

  4. 单击MSDTC选项卡上的安全配置。

  5. 单击以选中“网络DTC访问”复选框。

  6. 同时设置“允许入站”和“允许出站”复选框

  7. 在“事务管理器通信”组下,单击以选中“无需身份验证”选项。

  8. 验证DTC登录帐户名称是否设置为NT AUTHORITY \ NetworkService。

  9. 点击Ok等

  10. 在您的代码中,Set identity_Insert Crnot仅适用于本地对象。

    它应该是动态SQL INSERT

    的一部分