C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: SQL Server 2008 にて トランザクションが掛け


(過去ログ 76 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■45221 / inTopicNo.1)  SQL Server 2008 にて トランザクションが掛け
  
□投稿者/ ANTE (1回)-(2010/01/06(Wed) 14:48:52)

分類:[データベース全般] 

SQL Server 2008 にて トランザクションが掛けられません。

以下は概要です。

データベースサーバーが2つあります

ここではAとBとしましょう。

AからBのテーブル内を参照したり、追加、更新処理を行うため、
AからBへリンクサーバーを設定しました。

無事にAからBのサーバー内のテーブル内の参照や追加、更新処理を行えたのですが、
以下のようにトランザクションを掛けた後、更新処理を行うと以下のエラーにて落ちてしまいます。

BEGIN TRANSACTION

INSERT INTO  *******.*****.***.ANTE_TEST1
        (
          [SEQ]
         ,[項目1]
         ,[項目2]
         ,[項目3]
         ,[項目4]
         ,[項目5]
         ,[項目6]
         ,[項目7]
         ,[項目8]
         ,[項目9]
        ) VALUES
        (       
         12     
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        )
ROLLBACK TRANSACTION

メッセージ 8501、レベル 16、状態 3、行 3
「サーバー '***********' の MSDTC は使用できません。」

リンクサーバーを設定した、AからBへの更新処理内では
トランザクションはかけられないのでしょうか?

引用返信 編集キー/
■45230 / inTopicNo.2)  Re[1]: SQL Server 2008 にて トランザクションが掛け
□投稿者/ オショウ (497回)-(2010/01/06(Wed) 17:16:40)
No45221 (ANTE さん) に返信
> メッセージ 8501、レベル 16、状態 3、行 3
> 「サーバー '***********' の MSDTC は使用できません。」
>
> リンクサーバーを設定した、AからBへの更新処理内では
> トランザクションはかけられないのでしょうか?

  と言う以前に、MS DTCについてお調べになりましたか?

  MS DTCはいろいろ問題が多く、他の有識者の方の突っ込みもあろうかと・・・

  以下、マイクロソフトのMSDNからの抜粋(SQL Server 2005 ですが・・・)
2.5.3 Windows で MS DTC が一部無効になっている
Microsoft 分散トランザクション コーディネータ (MS DTC) は、Windows で構成されていない部分があるので、
アプリケーションを使用して分散トランザクションに SQL Server 2005 のリソースを追加できない場合がありま
す。分散トランザクションを使用するリンク サーバー、分散クエリ、およびリモート ストアド プロシージャが、
この問題の影響を受ける場合があります。このような問題を回避するには、SQL Server 2005 がインストールされ
ているサーバーで MS DTC を完全に有効にする必要があります。

MS DTC を完全に有効にするには、以下の手順を実行します。
1.コントロール パネルで [管理ツール]、[コンポーネント サービス] の順にダブルクリックします。

2.[コンソール ルート] の左ペインで、[コンポーネント サービス]、[コンピュータ] を順に展開します。

3.[マイ コンピュータ] を右クリックして [プロパティ] をクリックします。

4.[MSDTC] タブをクリックして [セキュリティの構成] をクリックします。

5.[セキュリティの設定] の下のすべてのチェック ボックスをオンにします。

6.[DTC ログオン アカウント] のアカウントが NT AUTHORITY\NetworkService に設定されていることを確認します。

● INSERT ...で実行している内容は、ストアド?
  で、それをキックしているのは、トリガ?
  賛否両論ありますが、CLRで記述するのも一興かと・・・

以上。参考まで
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -