MergeArticle クラス

定義

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

public ref class MergeArticle sealed : Microsoft::SqlServer::Replication::Article
public sealed class MergeArticle : Microsoft.SqlServer.Replication.Article
type MergeArticle = class
    inherit Article
Public NotInheritable Class MergeArticle
Inherits Article
継承

この例では、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

この例では、既存のマージ アーティクルを変更してビジネス ロジック ハンドラーにアーティクルを関連付けます。 詳細については、「 sp_helpmergearticlecolumn (Transact-SQL)」を参照してください。

// 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 (Microsoft Visual Basic では Shared) のすべてのメンバーは、マルチスレッド操作で安全に使用できます。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

コンストラクター

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)
CreateArticleAsHeterogeneous

アーティクルを異種混合で作成するかどうかを示す値を取得または設定します。

(継承元 Article)
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

パブリッシャーのテーブル列に割り当てられる 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(MergeJoinFilter)

マージ アーティクルに結合フィルターを追加します。

AddReplicatedColumns(Array)

マージ アーティクルに指定された列を追加します。

ChangeMergeJoinFilter(MergeJoinFilter, MergeJoinFilter)

マージ アーティクルに定義されている結合フィルターを変更します。

CheckValidCreation()

有効なアーティクルの作成を確認します。

(継承元 Article)
CheckValidDefinition(Boolean)

定義が有効かどうかを示します。

(継承元 Article)
CommitPropertyChanges()

キャッシュされたすべてのプロパティ変更ステートメントを Microsoft SQL Serverのインスタンスに送信します。

(継承元 ReplicationObject)
Create()

オブジェクトまたは オブジェクトの現在のプロパティに基づいて、SQL Serverの現在接続されているインスタンスに新しいアーティクルをTransArticleMergeArticle作成します。

(継承元 Article)
Decouple()

参照先のレプリケーション オブジェクトをサーバーから切断します。

(継承元 ReplicationObject)
EnumMergeJoinFilters()

マージ アーティクルに対して定義されている結合フィルターを返します。

GetChangeCommand(StringBuilder, String, String)

レプリケーションの変更コマンドを返します。

(継承元 ReplicationObject)
GetCreateCommand(StringBuilder, Boolean, ScriptOptions)

レプリケーションの作成コマンドを返します。

(継承元 ReplicationObject)
GetDropCommand(StringBuilder, Boolean)

レプリケーションの削除コマンドを返します。

(継承元 ReplicationObject)
InitializeSharedPropertiesBasedOnExistingArticles()

既存のアーティクルに基づいて共有プロパティを初期化するかどうかを示します。

InternalRefresh(Boolean)

レプリケーションで内部更新を開始します。

(継承元 ReplicationObject)
ListReplicatedColumns()

左右に分割されたアーティクルに存在する列を返します。

Load()

サーバーから既存のオブジェクトのプロパティを読み込みます。

(継承元 ReplicationObject)
LoadProperties()

サーバーから既存のオブジェクトのプロパティを読み込みます。

(継承元 ReplicationObject)
Refresh()

オブジェクトのプロパティを再度読み込みます。

(継承元 ReplicationObject)
Remove()

オブジェクトまたは オブジェクトの現在のプロパティに基づいて、SQL Serverの現在接続されているインスタンスの既存のアーティクルをTransArticleMergeArticle削除します。

(継承元 Article)
RemoveMergeJoinFilter(String)

アーティクルから指定されたマージ結合フィルターを削除します。

RemoveReplicatedColumns(Array)

左右にパーティション分割されたアーティクルから既存の列を削除します。

Script(ScriptOptions)

サーバー上のオブジェクトまたはオブジェクトを作成または削除 TransArticle するために実行できる Transact-SQL スクリプトを MergeArticle 生成します。

(継承元 Article)
ScriptMergeJoinFilter(MergeJoinFilter, ScriptOptions)

マージ アーティクルにアタッチされているマージ結合フィルターの Transact-SQL スクリプトを返します。

適用対象

こちらもご覧ください