MergeSynchronizationAgent クラス
レプリケーション マージ エージェントの機能を提供します。
継承階層
System. . :: . .Object
System. . :: . .MarshalByRefObject
Microsoft.SqlServer.Replication..::..MergeSynchronizationAgent
名前空間: Microsoft.SqlServer.Replication
アセンブリ: Microsoft.SqlServer.Replication (Microsoft.SqlServer.Replication.dll)
構文
'宣言
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
<ComVisibleAttribute(True)> _
<GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")> _
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public Class MergeSynchronizationAgent _
Inherits MarshalByRefObject _
Implements IDisposable, IMergeSynchronizationAgent
'使用
Dim instance As MergeSynchronizationAgent
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
[GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public class MergeSynchronizationAgent : MarshalByRefObject,
IDisposable, IMergeSynchronizationAgent
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
[ComVisibleAttribute(true)]
[GuidAttribute(L"ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
[PermissionSetAttribute(SecurityAction::Demand, Name = L"FullTrust")]
public ref class MergeSynchronizationAgent : public MarshalByRefObject,
IDisposable, IMergeSynchronizationAgent
[<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)>]
[<ComVisibleAttribute(true)>]
[<GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")>]
[<PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")>]
type MergeSynchronizationAgent =
class
inherit MarshalByRefObject
interface IDisposable
interface IMergeSynchronizationAgent
end
public class MergeSynchronizationAgent extends MarshalByRefObject implements IDisposable, IMergeSynchronizationAgent
MergeSynchronizationAgent 型は、以下のメンバーを公開しています。
プロパティ
名前 | 説明 | |
---|---|---|
AlternateSynchronizationPartnerCollection | サブスクリプションの代替同期パートナーを取得します。 | |
AltSnapshotFolder | サブスクリプションの代替スナップショット フォルダを取得します。値の設定も可能です。 | |
ComErrorCollection | レプリケーション エージェントで発生したエラーのコレクションを取得します。 | |
Distributor | サブスクリプションのディストリビュータとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。 | |
DistributorAddress | DistributorNetwork プロパティが指定されている場合にディストリビュータへの接続に使用されるネットワーク アドレスを取得します。値の設定も可能です。 | |
DistributorEncryptedPassword | インフラストラクチャです。 | |
DistributorLogin | SQL Server 認証を使用してディストリビュータに接続するときに使用されるログイン名を取得します。値の設定も可能です。 | |
DistributorNetwork | ディストリビュータに接続するときに使用されるクライアントの Net-Library を取得します。値の設定も可能です。 | |
DistributorPassword | SQL Server 認証を使用してディストリビュータに接続するときに使用されるパスワードを設定します。 | |
DistributorSecurityMode | ディストリビュータに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。 | |
DownloadGenerationsPerBatch | パブリッシャからサブスクライバに変更をダウンロードする間に、1 つのバッチで処理される生成結果の数を取得します。値の設定も可能です。生成結果は、アーティクルごとに変更の論理グループとして定義されます。 | |
DynamicSnapshotLocation | このサブスクライバのパーティション スナップショットの場所を取得します。値の設定も可能です。 | |
ExchangeType | 同期中のデータ交換の方法を取得します。値の設定も可能です。 | |
FileTransferType | 初期スナップショット ファイルをサブスクライバに転送する方法を取得します。値の設定も可能です。 | |
HostName | HOST_NAME 関数を使用するパラメータ化されたフィルタを評価するときにマージ エージェントが使用する値を取得します。値の設定も可能です。 | |
InputMessageFile | インフラストラクチャです。 | |
InternetLogin | Web 同期でインターネット認証を使用してパブリッシャに接続するときに使用されるログイン名を取得します。値の設定も可能です。 | |
InternetPassword | Web 同期でインターネット認証を使用してパブリッシャに接続するときに使用される InternetLogin プロパティのパスワードを設定します。 | |
InternetProxyLogin | Web 同期でインターネット プロキシ サーバーを使用して Web サーバーに接続するときに使用されるログイン名を取得します。値の設定も可能です。 | |
InternetProxyPassword | Web 同期でインターネット プロキシ サーバーを使用して Web サーバーに接続するときに使用されるログイン名を設定します。 | |
InternetProxyServer | Web 同期で Web サーバーに接続するときに使用されるインターネット プロキシ サーバーの名前を取得します。値の設定も可能です。 | |
InternetSecurityMode | Web 同期で Web サーバーに接続するときに使用される HTTP 認証方法を取得します。値の設定も可能です。 | |
InternetTimeout | Web サーバーに接続するときの HTTP タイムアウトを取得します。値の設定も可能です。 | |
InternetUrl | Web 同期用に構成された Web サービスの URL を取得します。値の設定も可能です。 | |
LastUpdatedTime | レプリケーション エージェントが最後にサブスクリプションの同期をとったときのタイムスタンプを取得します。 | |
LoginTimeout | 接続が確立されるまで待機する最大秒数を取得します。値の設定も可能です。 | |
MetadataRetentionCleanup | メタデータをクリーンアップするかどうかを取得します。値の設定も可能です。 | |
Output | エージェントの出力ファイルを返します。値の設定も可能です。 | |
OutputMessageFile | インフラストラクチャです。 | |
OutputVerboseLevel | エージェントの出力ファイルに書き込まれる情報の詳細さのレベルを取得します。値の設定も可能です。 | |
ProfileName | エージェントが使用するプロファイルの名前を取得します。値の設定も可能です。 | |
Publication | パブリケーションの名前を取得します。値の設定も可能です。 | |
Publisher | サブスクリプションのパブリッシャとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。 | |
PublisherAddress | PublisherNetwork プロパティが指定されている場合にパブリッシャへの接続に使用されるネットワーク アドレスを取得します。値の設定も可能です。 | |
PublisherChanges | 前回の同期の間にサブスクライバで適用されたパブリッシャの変更の合計数を取得します。 | |
PublisherConflicts | 前回の同期の間にパブリッシャで発生した競合の合計数を取得します。 | |
PublisherDatabase | パブリケーション データベースの名前を取得します。値の設定も可能です。 | |
PublisherEncryptedPassword | インフラストラクチャです。 | |
PublisherFailoverPartner | パブリケーション データベースとのデータベース ミラーリング セッションに参加しているフェールオーバー パートナーの SQL Server インスタンスを取得します。値の設定も可能です。 | |
PublisherLogin | SQL Server 認証を使用してパブリッシャに接続するときに使用されるログイン名を取得します。値の設定も可能です。 | |
PublisherNetwork | パブリッシャに接続するときに使用されるクライアントの Net-Library を取得します。値の設定も可能です。 | |
PublisherPassword | SQL Server 認証を使用してパブリッシャに接続するときに使用されるパスワードを設定します。 | |
PublisherSecurityMode | パブリッシャに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。 | |
QueryTimeout | 内部クエリがタイムアウトになるまでの秒数を取得します。値の設定も可能です。 | |
SecureDistributorEncryptedPassword | インフラストラクチャです。 | |
SecurePublisherEncryptedPassword | インフラストラクチャです。 | |
SecureSubscriberEncryptedPassword | インフラストラクチャです。 | |
Subscriber | サブスクライバとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。 | |
SubscriberChanges | 前回の同期の間にパブリッシャで適用されたサブスクライバの変更の合計数を取得します。 | |
SubscriberConflicts | 前回の同期の間にパブリッシャで発生した競合の合計数を取得します。 | |
SubscriberDatabase | サブスクリプション データベースの名前を取得します。値の設定も可能です。 | |
SubscriberDatabasePath | インフラストラクチャです。 | |
SubscriberDataSourceType | サブスクライバとして使用されるデータ ソースの種類を取得します。値の設定も可能です。 | |
SubscriberEncryptedPassword | インフラストラクチャです。 | |
SubscriberLogin | SQL Server 認証を使用してサブスクライバに接続するときに使用されるログイン名を取得します。値の設定も可能です。 | |
SubscriberPassword | SQL Server 認証を使用してサブスクライバに接続するときに使用されるパスワードを設定します。 | |
SubscriberSecurityMode | サブスクライバに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。 | |
SubscriptionType | サブスクリプションがプッシュ サブスクリプションかプル サブスクリプションかを取得します。値の設定も可能です。 | |
SyncToAlternate | 同期の対象が代替同期パートナーかどうかを取得します。値の設定も可能です。 | |
UploadGenerationsPerBatch | サブスクライバからパブリッシャに変更をアップロードする間に、1 つのバッチで処理される生成結果の数を取得します。値の設定も可能です。生成結果は、アーティクルごとに変更の論理グループとして定義されます。 | |
UseInteractiveResolver | 調整時に対話型の競合回避モジュールを使用するかどうかを取得します。値の設定も可能です。 | |
UseWebSynchronization | Web 同期が使用されるかどうかを取得します。値の設定も可能です。 | |
Validate | 同期の最後にサブスクライバ データのデータを検証するかどうかを取得します。値の設定も可能です。 | |
WorkingDirectory | FTP を使用する場合にスナップショット ファイルにアクセスできる作業ディレクトリを取得します。値の設定も可能です。 |
先頭に戻る
メソッド
名前 | 説明 | |
---|---|---|
Abort | インフラストラクチャです。 | |
ClearAllTraceFlags | インフラストラクチャです。 | |
ClearTraceFlag | インフラストラクチャです。 | |
CreateObjRef | (MarshalByRefObject から継承されています。) | |
Dispose() () () () | インフラストラクチャです。 | |
Dispose(Boolean) | インフラストラクチャです。 | |
EnableTraceFlag | インフラストラクチャです。 | |
Equals | (Object から継承されています。) | |
Finalize | インフラストラクチャです。 (Object. . :: . .Finalize() () () () をオーバーライドします。) | |
GetHashCode | (Object から継承されています。) | |
GetLifetimeService | (MarshalByRefObject から継承されています。) | |
GetType | (Object から継承されています。) | |
InitializeLifetimeService | (MarshalByRefObject から継承されています。) | |
IsSnapshotRequired | パブリッシャまたはディストリビュータとサブスクライバに接続して、エージェントの次回の同期の際に新しいスナップショットが適用されるかどうかを示します。 | |
MemberwiseClone() () () () | (Object から継承されています。) | |
MemberwiseClone(Boolean) | (MarshalByRefObject から継承されています。) | |
ProcessMessagesAtPublisher | インフラストラクチャです。 | |
ProcessMessagesAtSubscriber | インフラストラクチャです。 | |
Synchronize | マージ エージェントを開始してサブスクリプションを同期します。 | |
ToString | (Object から継承されています。) |
先頭に戻る
説明
MergeSynchronizationAgent クラスでは、次のレプリケーション タスクを実行するための機能がサポートされています。
サブスクリプションの同期をとります。
同期中にアップロード フェーズのみを実行するか、ダウンロード フェーズのみを実行するか、それとも両方のフェーズを実行するかを指定します。
必要なデータがサブスクリプションにあることを検証します。
サブスクリプションの初期スナップショットを適用するときに使用できる別のスナップショット フォルダを指定します。
MergeSynchronizationAgent クラスは、SQL Server 2000 および SQL Server 2005 の両方で実行中のパブリッシャとサブスクライバで使用できます。
MergeSynchronizationAgent クラスは、SQL Server 2000 で実行中のディストリビュータでは使用できません。
使用例
次の例では、プッシュ サブスクリプションの同期をとるために、SynchronizationAgent プロパティからアクセスされる MergeSynchronizationAgent クラスのインスタンスで Synchronize メソッドを呼び出しています。
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2008R2Replica";
string publicationDbName = "AdventureWorks2008R2";
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
MergeSubscription subscription;
try
{
// Connect to the Publisher
conn.Connect();
// Define the subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = publicationDbName;
subscription.PublicationName = publicationName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.SubscriberName = subscriberName;
// If the push subscription exists, start the synchronization.
if (subscription.LoadProperties())
{
// Check that we have enough metadata to start the agent.
if (subscription.SubscriberSecurity != null)
{
// Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize();
}
else
{
throw new ApplicationException("There is insufficent metadata to " +
"synchronize the subscription. Recreate the subscription with " +
"the agent job or supply the required agent properties at run time.");
}
}
else
{
// Do something here if the push subscription does not exist.
throw new ApplicationException(String.Format(
"The subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Dim subscription As MergeSubscription
Try
' Connect to the Publisher
conn.Connect()
' Define the subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = publicationDbName
subscription.PublicationName = publicationName
subscription.SubscriptionDBName = subscriptionDbName
subscription.SubscriberName = subscriberName
' If the push subscription exists, start the synchronization.
If subscription.LoadProperties() Then
' Check that we have enough metadata to start the agent.
If Not subscription.SubscriberSecurity Is Nothing Then
' Synchronously start the Merge Agent for the subscription.
' Log agent messages to an output file.
subscription.SynchronizationAgent.Output = "mergeagent.log"
subscription.SynchronizationAgent.OutputVerboseLevel = 2
subscription.SynchronizationAgent.Synchronize()
Else
Throw New ApplicationException("There is insufficent metadata to " + _
"synchronize the subscription. Recreate the subscription with " + _
"the agent job or supply the required agent properties at run time.")
End If
Else
' Do something here if the push subscription does not exist.
Throw New ApplicationException(String.Format( _
"The subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
conn.Disconnect()
End Try
次の例では、マージ サブスクリプションの同期をとるために MergeSynchronizationAgent クラスのインスタンスを使用しています。CreateSyncAgentByDefault の値を false にしてプル サブスクリプションが作成されているため、追加のプロパティを指定する必要があります。
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string distributorName = distributorInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2008R2Replica";
string publicationDbName = "AdventureWorks2008R2";
string hostname = @"adventure-works\garrett1";
string webSyncUrl = "https://" + publisherInstance + "/SalesOrders/replisapi.dll";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
MergeSynchronizationAgent agent;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription exists, then start the synchronization.
if (subscription.LoadProperties())
{
// Get the agent for the subscription.
agent = subscription.SynchronizationAgent;
// Check that we have enough metadata to start the agent.
if (agent.PublisherSecurityMode == null)
{
// Set the required properties that could not be returned
// from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated;
agent.DistributorSecurityMode = SecurityMode.Integrated;
agent.Distributor = publisherName;
agent.HostName = hostname;
// Set optional Web synchronization properties.
agent.UseWebSynchronization = true;
agent.InternetUrl = webSyncUrl;
agent.InternetSecurityMode = SecurityMode.Standard;
agent.InternetLogin = winLogin;
agent.InternetPassword = winPassword;
}
// Enable agent output to the console.
agent.OutputVerboseLevel = 1;
agent.Output = "";
// Synchronously start the Merge Agent for the subscription.
agent.Synchronize();
}
else
{
// Do something here if the pull subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be " +
"synchronized. Verify that the subscription has " +
"been defined correctly.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim hostname As String = "adventure-works\garrett1"
Dim webSyncUrl As String = "https://" + publisherInstance + "/SalesOrders/replisapi.dll"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Dim agent As MergeSynchronizationAgent
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription exists, then start the synchronization.
If subscription.LoadProperties() Then
' Get the agent for the subscription.
agent = subscription.SynchronizationAgent
' Check that we have enough metadata to start the agent.
If agent.PublisherSecurityMode = Nothing Then
' Set the required properties that could not be returned
' from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated
agent.Distributor = publisherInstance
agent.DistributorSecurityMode = SecurityMode.Integrated
agent.HostName = hostname
' Set optional Web synchronization properties.
agent.UseWebSynchronization = True
agent.InternetUrl = webSyncUrl
agent.InternetSecurityMode = SecurityMode.Standard
agent.InternetLogin = winLogin
agent.InternetPassword = winPassword
End If
' Enable agent logging to the console.
agent.OutputVerboseLevel = 1
agent.Output = ""
' Synchronously start the Merge Agent for the subscription.
agent.Synchronize()
Else
' Do something here if the pull subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be " + _
"synchronized. Verify that the subscription has " + _
"been defined correctly.", ex)
Finally
conn.Disconnect()
End Try
スレッド セーフ
この型の public static (Visual Basic では Shared) のメンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。