2009-01-21 172 views
1

我使用鏈接的服務器傳輸執行此QRY我得到的錯誤,當使用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 

「無交易活動」

回答

1

檢查MS DTC配置數據(剪切和粘貼一個文檔,未選中最近):

  1. 開始,運行,DCOMCNFG.EXE

  2. 在「組件服務」窗口中,展開「組件服務...計算機...我的電腦」。

  3. 用鼠標右鍵單擊我的電腦,屬性。

  4. 單擊MSDTC選項卡上的安全配置。

  5. 單擊以選中網絡DTC訪問複選框。

  6. 同時設置允許入站和出站允許複選框

  7. 根據事務管理器通信組,單擊以選中不要求進行驗證選項。

  8. 確認DTC登錄帳戶名稱已設置爲NT AUTHORITY \ NetworkService。

  9. 點擊Ok等

在你的代碼,Set identity_Insert Crnot只適用於本地對象。

它應該是動態SQL的一部分INSERT