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

注釈

スレッド セーフ

このタイプの公開静的(Microsoft Visual BasicShared)メンバーはマルチスレッド操作に安全です。 インスタンス メンバーがスレッド セーフであるとは限りません。

コンストラクター

名前 説明
MergeArticle()

MergeArticle クラスの新しいインスタンスを作成します。

MergeArticle(String, String, String, ServerConnection)

指定された名前、公開、データベース、そしてMicrosoft SQL Serverインスタンスへの接続を持つMergeArticleクラスの新しいインスタンスを作成します。

プロパティ

名前 説明
AllowInteractiveResolver

同期中に競合が発生した場合にサブスクリプションがインタラクティブリゾルバを呼び出すかどうかを設定します。

ArticleId

記事IDの値を取得します。

(継承元 Article)
ArticleResolver

記事同期時に使用するカスタムコンフリクトリゾルバやビジネスロジックハンドラーのフレンドリーな名前を取得したり設定したりします。

CachePropertyChanges

レプリケーションプロパティの変更をキャッシュするか、即座に適用するかを取得または設定します。

(継承元 ReplicationObject)
CheckPermissions

Publisherで変更をアップロードする前にどのように権限を確認しているかを取得または設定します。

ColumnTracking

データ行の同期時に競合がどのように検出されるかを取得または設定します。

CompensateForErrors

は同期中にエラーが発生した場合に補償アクションが取られるかどうかを決めます。

ConflictTable

マージ記事の同期時に発生する競合を追跡するテーブル名を取得します。

ConnectionContext

Microsoft SQL Serverのインスタンスへの接続を取得または設定します。

(継承元 ReplicationObject)
CreateArticleAsHeterogeneous

異種記事を作成するかどうかを示す値を取得または設定します。

(継承元 Article)
CreationScript

サブスクライバーで宛先オブジェクトを作成するために使われる Transact-SQL スクリプトファイルの名前とフルパスを取得します。

(継承元 Article)
DatabaseName

記事に掲載されたデータとオブジェクトを含むデータベース名を取得するか設定します。

(継承元 Article)
DeleteTracking

削除が複製されるかどうかを取得または設定します。

Description

記事のテキスト説明を取得または設定します。

(継承元 Article)
DestinationObjectName

Subscriberで記事のソースデータベースオブジェクトを取得するか設定します。

(継承元 Article)
DestinationObjectOwner

Subscriberで記事のソースデータベースオブジェクトのスキーマ所有者を取得するか設定します。

(継承元 Article)
FilterClause

記事を水平にフィルタリングするために評価される WHERE(Transact-SQL) 節を取得します。

IdentityRangeManagementOption

記事のアイデンティティ範囲管理オプションを取得するか設定します。

(継承元 Article)
IdentityRangeThreshold

新しい識別カラムの値の範囲がPublisherまたはSubscriberに割り当てられる値を取得または設定します。

(継承元 Article)
IsExistingObject

オブジェクトがサーバー上に存在するかどうかを把握します。

(継承元 ReplicationObject)
MultipleColumnUpdate

複数の列を更新するかどうかを示す値を取得または設定します。

Name

記事名を取得するか設定します。

(継承元 Article)
PartitionOption

パラメータ化された行フィルターで記事をフィルタリングした際にフィルタリングオプションを取得または設定します。

PreCreationMethod

公開されたオブジェクトがすでにサブスクリプションデータベースに存在している場合に、実行するアクションを取得したり設定したりします。

(継承元 Article)
ProcessingOrder

同期中に記事の処理順序を取得したり設定したりします。

PublicationName

記事が所属する出版物の名前を取得するか設定します。

(継承元 Article)
PublisherIdentityRangeSize

Publisherでテーブルの列に割り当てられる識別値の範囲を取得したり設定したりします。

(継承元 Article)
ResolverInfo

COMベースのコンフリクト解決装置で使用される追加データやパラメータを取得したり設定したりします。

SchemaOption

記事のスキーマ作成オプションを取得または設定します。

(継承元 Article)
SnapshotObjectName

記事の初期スナップショットデータを表すデータベースオブジェクトの名前を取得します。

SnapshotObjectOwner

記事の初期スナップショットデータを表すデータベースオブジェクトの所有者を取得します。

SourceObjectName

公開されるデータベースオブジェクトの名前を取得したり設定したりします。

(継承元 Article)
SourceObjectOwner

公開されるデータベースオブジェクトの所有者を取得するか設定します。

(継承元 Article)
SqlServerName

このオブジェクトが接続されているMicrosoft SQL Serverインスタンスの名前を取得します。

(継承元 ReplicationObject)
Status

マージ記事のステータスを取得するか設定します。

StreamBlobColumns

データストリーム最適化がバイナリの大きなオブジェクト(BLOB)列の複製に使われるかどうかを決定します。

SubscriberIdentityRangeSize

サブスクライバーのテーブルの識別列に挿入できる最大数の新しい行数を取得または設定し、その後に別の識別範囲を割り当てる必要があります。

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

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

(継承元 Article)
Decouple()

参照されたレプリケーションオブジェクトをサーバーから切り離します。

(継承元 ReplicationObject)
EnumMergeJoinFilters()

マージ記事用に定義されたジョインフィルターを返します。

GetChangeCommand(StringBuilder, String, String)

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

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

レプリケーションからcreateコマンドを返します。

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

レプリケーションからドロップコマンドを返します。

(継承元 ReplicationObject)
InitializeSharedPropertiesBasedOnExistingArticles()

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

InternalRefresh(Boolean)

レプリケーションから内部リフレッシュを開始します。

(継承元 ReplicationObject)
ListReplicatedColumns()

縦に分割された記事に存在する列を返します。

Load()

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

(継承元 ReplicationObject)
LoadProperties()

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

(継承元 ReplicationObject)
Refresh()

オブジェクトのプロパティをリロードします。

(継承元 ReplicationObject)
Remove()

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

(継承元 Article)
RemoveMergeJoinFilter(String)

記事から指定されたマージジョインフィルターを削除します。

RemoveReplicatedColumns(Array)

縦分割された記事から既存の列を削除します。

Script(ScriptOptions)

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

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

マージ記事に添付されたマージジョインフィルターの Transact-SQL スクリプトを返します。

適用対象

こちらもご覧ください