Share via


MergeArticle クラス

マージ パブリケーションのアーティクルを表します。

継承階層

System.Object
  Microsoft.SqlServer.Replication.ReplicationObject
    Microsoft.SqlServer.Replication.Article
      Microsoft.SqlServer.Replication.MergeArticle

名前空間:  Microsoft.SqlServer.Replication
アセンブリ:  Microsoft.SqlServer.Rmo (Microsoft.SqlServer.Rmo.dll)

構文

'宣言
Public NotInheritable Class MergeArticle _
    Inherits Article
'使用
Dim instance As MergeArticle
public sealed class MergeArticle : Article
public ref class MergeArticle sealed : public Article
[<SealedAttribute>]
type MergeArticle =  
    class 
        inherit Article 
    end
public final class MergeArticle extends Article

MergeArticle 型は、以下のメンバーを公開しています。

コンストラクター

  名前 説明
パブリック メソッド MergeArticle() MergeArticle クラスの新しいインスタンスを作成します。
パブリック メソッド MergeArticle(String, String, String, ServerConnection) 指定された名前、パブリケーション、データベース、および Microsoft SQL Server のインスタンスへの接続を使用して、MergeArticle クラスの新しいインスタンスを作成します。

先頭に戻る

プロパティ

  名前 説明
パブリック プロパティ AllowInteractiveResolver 同期中に競合が発生した場合にサブスクリプションでインタラクティブ競合回避モジュールを呼び出すことができるようにするかどうかを取得します。値の設定も可能です。
パブリック プロパティ ArticleId アーティクルの ID 値を取得します。 (Article から継承されています。)
パブリック プロパティ ArticleResolver アーティクルの同期に使用されるカスタム競合回避モジュールまたはビジネス ロジック ハンドラーの表示名を取得します。値の設定も可能です。
パブリック プロパティ CachePropertyChanges レプリケーション プロパティに加えられた変更をキャッシュするか、またはすぐに適用するかを取得します。値の設定も可能です。 (ReplicationObject から継承されています。)
パブリック プロパティ CheckPermissions サブスクライバーから変更がアップロードされる前に、パブリッシャーで権限がチェックされる方法を取得します。値の設定も可能です。
パブリック プロパティ ColumnTracking データ行の同期のときに競合をどのようにして検出するかを取得します。値の設定も可能です。
パブリック プロパティ CompensateForErrors 同期中にエラーが検出された場合、補正アクションを実行するかどうかを取得します。値の設定も可能です。
パブリック プロパティ ConflictTable マージ アーティクルの同期中に発生する競合の追跡に使用された、テーブルの名前を取得します。
パブリック プロパティ ConnectionContext Microsoft SQL Server のインスタンスへの接続を取得します。値の設定も可能です。 (ReplicationObject から継承されています。)
パブリック プロパティ CreationScript サブスクライバーでレプリケーション先オブジェクトの作成に使われる Transact-SQL スクリプト ファイルの名前と完全なパスを取得または設定します。 (Article から継承されています。)
パブリック プロパティ DatabaseName アーティクルでパブリッシュされるデータとオブジェクトを含むデータベース名を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ DeleteTracking 削除がレプリケートされるかどうかを取得します。値の設定も可能です。
パブリック プロパティ Description アーティクルの説明テキストを取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ DestinationObjectName サブスクライバー側アーティクルのレプリケーション元データベース オブジェクトを取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ DestinationObjectOwner サブスクライバー側アーティクルのレプリケーション元データベース オブジェクトのスキーマ所有者を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ FilterClause アーティクルの水平方向のフィルター選択のために評価される WHERE (Transact-SQL) 句を取得します。値の設定も可能です。
パブリック プロパティ IdentityRangeManagementOption アーティクルに対する ID 範囲の管理オプションを取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ IdentityRangeThreshold 新しい範囲の ID 列値がパブリッシャーまたはサブスクライバーに割り当てられる値を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ IsExistingObject サーバーにオブジェクトが存在するかどうかを取得します。 (ReplicationObject から継承されています。)
パブリック プロパティ MultipleColumnUpdate インフラストラクチャです。複数列を更新するかどうかを示す値を取得します。値の設定も可能です。
パブリック プロパティ Name アーティクルの名前を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ PartitionOption パラメーター化された行フィルターを使用してアーティクルをフィルター選択する場合のフィルター オプションを取得します。値の設定も可能です。
パブリック プロパティ PreCreationMethod パブリッシュされたオブジェクトがサブスクリプション データベース内に既に存在する場合に行う処理を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ ProcessingOrder 同期中のアーティクルの処理順序を取得します。値の設定も可能です。
パブリック プロパティ PublicationName アーティクルが属するパブリケーションの名前を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ PublisherIdentityRangeSize TransArticle オブジェクトの場合、パブリッシャーのテーブル列に割り当てられる ID 値の範囲を取得します。値の設定も可能です。MergeArticle オブジェクトの場合、サーバー サブスクリプションを持つサブスクライバーのテーブル列に割り当てられる ID 値の範囲を取得または設定します。 (Article から継承されています。)
パブリック プロパティ ResolverInfo COM ベースの競合回避モジュールで使用される追加データとパラメーターを取得します。値の設定も可能です。
パブリック プロパティ SchemaOption アーティクルのスキーマ作成オプションを取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ SnapshotObjectName アーティクルの初期スナップショット データを表すデータベース オブジェクトの名前を取得します。
パブリック プロパティ SnapshotObjectOwner アーティクルの初期スナップショット データを表すデータベース オブジェクトの所有者を取得します。
パブリック プロパティ SourceObjectName パブリッシュされるデータベース オブジェクトの名前を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ SourceObjectOwner パブリッシュされるデータベース オブジェクトの所有者を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ SqlServerName このオブジェクトの接続先となる Microsoft SQL Server インスタンスの名前を取得します。 (ReplicationObject から継承されています。)
パブリック プロパティ Status マージ アーティクルの状態を取得します。値の設定も可能です。
パブリック プロパティ StreamBlobColumns バイナリ ラージ オブジェクト (BLOB) 列のレプリケート時にデータ ストリームの最適化が使用されるかどうかを取得します。値の設定も可能です。
パブリック プロパティ SubscriberIdentityRangeSize サブスクライバーのテーブルの ID 列に対して、別の ID 範囲を割り当てることなく挿入可能な新しい行の最大数を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ SubscriberUploadOption サブスクライバー側でクライアント サブスクリプションを使用して行われる更新の動作を取得します。値の設定も可能です。
パブリック プロパティ Type アーティクルの種類を取得します。値の設定も可能です。 (Article から継承されています。)
パブリック プロパティ UserData ユーザーが独自のデータをオブジェクトにアタッチすることを許可するオブジェクト プロパティを取得します。値の設定も可能です。 (ReplicationObject から継承されています。)
パブリック プロパティ VerifyResolverSignature COM ベースの競合回避モジュールのデジタル署名を確認して、信頼できる発行元のものかどうかを調べるオプションを取得します。値の設定も可能です。
パブリック プロパティ VerticalPartition すべての列がテーブル アーティクルにパブリッシュされるかどうかを示す値を取得します。 (Article から継承されています。)

先頭に戻る

メソッド

  名前 説明
パブリック メソッド AddMergeJoinFilter マージ アーティクルに結合フィルターを追加します。
パブリック メソッド AddReplicatedColumns マージ アーティクルに指定された列を追加します。
パブリック メソッド ChangeMergeJoinFilter マージ アーティクルに定義されている結合フィルターを変更します。
パブリック メソッド CommitPropertyChanges キャッシュされているすべてのプロパティ変更ステートメントを、Microsoft SQL Server のインスタンスに送信します。 (ReplicationObject から継承されています。)
パブリック メソッド Create 現在接続されている SQL Server のインスタンス上で、TransArticle オブジェクトまたは MergeArticle オブジェクトの現在のプロパティに基づいて、新しいアーティクルを作成します。 (Article から継承されています。)
パブリック メソッド Decouple 参照先のレプリケーション オブジェクトをサーバーから切断します。 (ReplicationObject から継承されています。)
パブリック メソッド EnumMergeJoinFilters マージ アーティクルに対して定義されている結合フィルターを返します。
パブリック メソッド Equals (Object から継承されています。)
パブリック メソッド GetHashCode (Object から継承されています。)
パブリック メソッド GetType (Object から継承されています。)
パブリック メソッド InitializeSharedPropertiesBasedOnExistingArticles インフラストラクチャです。既存のアーティクルに基づいて共有プロパティを初期化するかどうかを示します。
パブリック メソッド ListReplicatedColumns 左右に分割されたアーティクルに存在する列を返します。
パブリック メソッド Load サーバーから既存のオブジェクトのプロパティを読み込みます。 (ReplicationObject から継承されています。)
パブリック メソッド LoadProperties サーバーから既存のオブジェクトのプロパティを読み込みます。 (ReplicationObject から継承されています。)
パブリック メソッド Refresh オブジェクトのプロパティを再度読み込みます。 (ReplicationObject から継承されています。)
パブリック メソッド Remove 現在接続されている SQL Server のインスタンス上で、TransArticle オブジェクトまたは MergeArticle オブジェクトの現在のプロパティに基づいて、既存のアーティクルを削除します。 (Article から継承されています。)
パブリック メソッド RemoveMergeJoinFilter アーティクルから指定されたマージ結合フィルターを削除します。
パブリック メソッド RemoveReplicatedColumns 左右にパーティション分割されたアーティクルから既存の列を削除します。
パブリック メソッド Script サーバー上で TransArticle オブジェクトまたは MergeArticle オブジェクトを作成または削除するために実行できる Transact-SQL スクリプトを生成します。 (Article から継承されています。)
パブリック メソッド ScriptMergeJoinFilter マージ アーティクルにアタッチされたマージ結合フィルターの Transact-SQL スクリプトを返します。
パブリック メソッド ToString (Object から継承されています。)

先頭に戻る

説明

スレッド セーフ

この型の public static (Microsoft Visual Basic では Shared) のすべてのメンバーは、マルチスレッド操作で安全に使用できます。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

使用例

この例では、3 つのマージ アーティクルと関連する結合フィルターを作成しています。

           // Define the Publisher and publication names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2012";

            // Specify article names.
            string articleName1 = "Employee";
            string articleName2 = "SalesOrderHeader";
            string articleName3 = "SalesOrderDetail";

            // Specify join filter information.
            string filterName12 = "SalesOrderHeader_Employee";
            string filterClause12 = "Employee.EmployeeID = " +
                "SalesOrderHeader.SalesPersonID";
            string filterName23 = "SalesOrderDetail_SalesOrderHeader";
            string filterClause23 = "SalesOrderHeader.SalesOrderID = " +
                "SalesOrderDetail.SalesOrderID";

            string salesSchema = "Sales";
            string hrSchema = "HumanResources";

            MergeArticle article1 = new MergeArticle();
            MergeArticle article2 = new MergeArticle();
            MergeArticle article3 = new MergeArticle();
            MergeJoinFilter filter12 = new MergeJoinFilter();
            MergeJoinFilter filter23 = new MergeJoinFilter();

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            // Create three merge articles that are horizontally partitioned
            // using a parameterized row filter on Employee.EmployeeID, which is 
            // extended to the two other articles using join filters. 
            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Create each article. 
                // For clarity, each article is defined separately. 
                // In practice, iterative structures and arrays should 
                // be used to efficiently create multiple articles.

                // Set the required properties for the Employee article.
                article1.ConnectionContext = conn;
                article1.Name = articleName1;
                article1.DatabaseName = publicationDbName;
                article1.SourceObjectName = articleName1;
                article1.SourceObjectOwner = hrSchema;
                article1.PublicationName = publicationName;
                article1.Type = ArticleOptions.TableBased;

                // Define the parameterized filter clause based on Hostname.
                article1.FilterClause = "Employee.LoginID = HOST_NAME()";

                // Set the required properties for the SalesOrderHeader article.
                article2.ConnectionContext = conn;
                article2.Name = articleName2;
                article2.DatabaseName = publicationDbName;
                article2.SourceObjectName = articleName2;
                article2.SourceObjectOwner = salesSchema;
                article2.PublicationName = publicationName;
                article2.Type = ArticleOptions.TableBased;

                // Set the required properties for the SalesOrderDetail article.
                article3.ConnectionContext = conn;
                article3.Name = articleName3;
                article3.DatabaseName = publicationDbName;
                article3.SourceObjectName = articleName3;
                article3.SourceObjectOwner = salesSchema;
                article3.PublicationName = publicationName;
                article3.Type = ArticleOptions.TableBased;

                if (!article1.IsExistingObject) article1.Create();
                if (!article2.IsExistingObject) article2.Create();
                if (!article3.IsExistingObject) article3.Create();

                // Select published columns for SalesOrderHeader.
                // Create an array of column names to vertically filter out.
                // In this example, only one column is removed.
                String[] columns = new String[1];

                columns[0] = "CreditCardApprovalCode";

                // Remove the column.
                article2.RemoveReplicatedColumns(columns);

                // Define a merge filter clauses that filter 
                // SalesOrderHeader based on Employee and 
                // SalesOrderDetail based on SalesOrderHeader. 

                // Parent article.
                filter12.JoinArticleName = articleName1;
                // Child article.
                filter12.ArticleName = articleName2;
                filter12.FilterName = filterName12;
                filter12.JoinUniqueKey = true;
                filter12.FilterTypes = FilterTypes.JoinFilter;
                filter12.JoinFilterClause = filterClause12;

                // Add the join filter to the child article.
                article2.AddMergeJoinFilter(filter12);

                // Parent article.
                filter23.JoinArticleName = articleName2;
                // Child article.
                filter23.ArticleName = articleName3;
                filter23.FilterName = filterName23;
                filter23.JoinUniqueKey = true;
                filter23.FilterTypes = FilterTypes.JoinFilter;
                filter23.JoinFilterClause = filterClause23;

                // Add the join filter to the child article.
                article3.AddMergeJoinFilter(filter23);
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(
                    "The filtered articles could not be created", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"

' Specify article names.
Dim articleName1 As String = "Employee"
Dim articleName2 As String = "SalesOrderHeader"
Dim articleName3 As String = "SalesOrderDetail"

' Specify join filter information.
Dim filterName12 As String = "SalesOrderHeader_Employee"
Dim filterClause12 As String = "Employee.EmployeeID = " + _
    "SalesOrderHeader.SalesPersonID"
Dim filterName23 As String = "SalesOrderDetail_SalesOrderHeader"
Dim filterClause23 As String = "SalesOrderHeader.SalesOrderID = " + _
    "SalesOrderDetail.SalesOrderID"

Dim salesSchema As String = "Sales"
Dim hrSchema As String = "HumanResources"

Dim article1 As MergeArticle = New MergeArticle()
Dim article2 As MergeArticle = New MergeArticle()
Dim article3 As MergeArticle = New MergeArticle()
Dim filter12 As MergeJoinFilter = New MergeJoinFilter()
Dim filter23 As MergeJoinFilter = New MergeJoinFilter()

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

' Create three merge articles that are horizontally partitioned
' using a parameterized row filter on Employee.EmployeeID, which is 
' extended to the two other articles using join filters. 
Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Create each article. 
    ' For clarity, each article is defined separately. 
    ' In practice, iterative structures and arrays should 
    ' be used to efficiently create multiple articles.

    ' Set the required properties for the Employee article.
    article1.ConnectionContext = conn
    article1.Name = articleName1
    article1.DatabaseName = publicationDbName
    article1.SourceObjectName = articleName1
    article1.SourceObjectOwner = hrSchema
    article1.PublicationName = publicationName
    article1.Type = ArticleOptions.TableBased

    ' Define the parameterized filter clause based on Hostname.
    article1.FilterClause = "Employee.LoginID = HOST_NAME()"

    ' Set the required properties for the SalesOrderHeader article.
    article2.ConnectionContext = conn
    article2.Name = articleName2
    article2.DatabaseName = publicationDbName
    article2.SourceObjectName = articleName2
    article2.SourceObjectOwner = salesSchema
    article2.PublicationName = publicationName
    article2.Type = ArticleOptions.TableBased

    ' Set the required properties for the SalesOrderDetail article.
    article3.ConnectionContext = conn
    article3.Name = articleName3
    article3.DatabaseName = publicationDbName
    article3.SourceObjectName = articleName3
    article3.SourceObjectOwner = salesSchema
    article3.PublicationName = publicationName
    article3.Type = ArticleOptions.TableBased

    ' Create the articles, if they do not already exist.
    If article1.IsExistingObject = False Then
        article1.Create()
    End If
    If article2.IsExistingObject = False Then
        article2.Create()
    End If
    If article3.IsExistingObject = False Then
        article3.Create()
    End If

    ' Select published columns for SalesOrderHeader.
    ' Create an array of column names to vertically filter out.
    ' In this example, only one column is removed.
    Dim columns() As String = New String(0) {}

    columns(0) = "CreditCardApprovalCode"

    ' Remove the column.
    article2.RemoveReplicatedColumns(columns)

    ' Define a merge filter clauses that filter 
    ' SalesOrderHeader based on Employee and 
    ' SalesOrderDetail based on SalesOrderHeader. 

    ' Parent article.
    filter12.JoinArticleName = articleName1
    ' Child article.
    filter12.ArticleName = articleName2
    filter12.FilterName = filterName12
    filter12.JoinUniqueKey = True
    filter12.FilterTypes = FilterTypes.JoinFilter
    filter12.JoinFilterClause = filterClause12

    ' Add the join filter to the child article.
    article2.AddMergeJoinFilter(filter12)

    ' Parent article.
    filter23.JoinArticleName = articleName2
    ' Child article.
    filter23.ArticleName = articleName3
    filter23.FilterName = filterName23
    filter23.JoinUniqueKey = True
    filter23.FilterTypes = FilterTypes.JoinFilter
    filter23.JoinFilterClause = filterClause23

    ' Add the join filter to the child article.
    article3.AddMergeJoinFilter(filter23)

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException( _
        "The filtered articles could not be created", ex)
Finally
    conn.Disconnect()
End Try

この例では、既存のマージ アーティクルを変更してビジネス ロジック ハンドラーにアーティクルを関連付けます。 詳細については、「マージ アーティクルにビジネス ロジック ハンドラーを実装する方法 (RMO プログラミング)」を参照してください。

           // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2012";
            string articleName = "SalesOrderHeader";
            
            // Set the friendly name of the business logic handler.
            string customLogic = "OrderEntryLogic";

            MergeArticle article = new MergeArticle();
            
            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Set the required properties for the article.
                article.ConnectionContext = conn;
                article.Name = articleName;
                article.DatabaseName = publicationDbName;
                article.PublicationName = publicationName;

                // Load the article properties.
                if (article.LoadProperties())
                {
                    article.ArticleResolver = customLogic;
                }
                else
                {
                    // Throw an exception of the article does not exist.
                    throw new ApplicationException(String.Format(
                    "{0} is not published in {1}", articleName, publicationName));
                }
                
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(String.Format(
                    "The business logic handler {0} could not be associated with " +
                    " the {1} article.",customLogic,articleName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try

スレッド セーフ

この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

関連項目

参照

Microsoft.SqlServer.Replication 名前空間

その他の技術情報

アーティクルを定義する方法 (RMO プログラミング)

データとデータベース オブジェクトのパブリッシュ