DistributionPublisher クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在接続されているディストリビューターに登録されているPublisherに関する情報を表します。
public ref class DistributionPublisher sealed : Microsoft::SqlServer::Replication::ReplicationObject
public sealed class DistributionPublisher : Microsoft.SqlServer.Replication.ReplicationObject
type DistributionPublisher = class
inherit ReplicationObject
Public NotInheritable Class DistributionPublisher
Inherits ReplicationObject
- 継承
例
この例は、 DistributionPublisher オブジェクトがどのように使われて公開を可能にするかを示しています。
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2012";
DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;
// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the server acting as the Distributor
// and local Publisher.
conn.Connect();
// Define the distribution database at the Distributor,
// but do not create it now.
distributionDb = new DistributionDatabase(distributionDbName, conn);
distributionDb.MaxDistributionRetention = 96;
distributionDb.HistoryRetention = 120;
// Set the Distributor properties and install the Distributor.
// This also creates the specified distribution database.
distributor = new ReplicationServer(conn);
distributor.InstallDistributor((string)null, distributionDb);
// Set the Publisher properties and install the Publisher.
publisher = new DistributionPublisher(publisherName, conn);
publisher.DistributionDatabase = distributionDb.Name;
publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
publisher.PublisherSecurity.WindowsAuthentication = true;
publisher.Create();
// Enable AdventureWorks2012 as a publication database.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
publicationDb.EnabledTransPublishing = true;
publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
}
finally
{
conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2012"
Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase
' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the server acting as the Distributor
' and local Publisher.
conn.Connect()
' Define the distribution database at the Distributor,
' but do not create it now.
distributionDb = New DistributionDatabase(distributionDbName, conn)
distributionDb.MaxDistributionRetention = 96
distributionDb.HistoryRetention = 120
' Set the Distributor properties and install the Distributor.
' This also creates the specified distribution database.
distributor = New ReplicationServer(conn)
distributor.InstallDistributor((CType(Nothing, String)), distributionDb)
' Set the Publisher properties and install the Publisher.
publisher = New DistributionPublisher(publisherName, conn)
publisher.DistributionDatabase = distributionDb.Name
publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
publisher.PublisherSecurity.WindowsAuthentication = True
publisher.Create()
' Enable AdventureWorks2012 as a publication database.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
publicationDb.EnabledTransPublishing = True
publicationDb.EnabledMergePublishing = True
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)
Finally
conn.Disconnect()
End Try
この例は、 DistributionPublisher オブジェクトを使ってディストリビューターでの公開を無効にする方法を示しています。
// Set the Distributor and publication database names.
// Publisher and Distributor are on the same server instance.
string publisherName = publisherInstance;
string distributorName = publisherInstance;
string distributionDbName = "distribution";
string publicationDbName = "AdventureWorks2012";
// Create connections to the Publisher and Distributor
// using Windows Authentication.
ServerConnection publisherConn = new ServerConnection(publisherName);
ServerConnection distributorConn = new ServerConnection(distributorName);
// Create the objects we need.
ReplicationServer distributor =
new ReplicationServer(distributorConn);
DistributionPublisher publisher;
DistributionDatabase distributionDb =
new DistributionDatabase(distributionDbName, distributorConn);
ReplicationDatabase publicationDb;
publicationDb = new ReplicationDatabase(publicationDbName, publisherConn);
try
{
// Connect to the Publisher and Distributor.
publisherConn.Connect();
distributorConn.Connect();
// Disable all publishing on the AdventureWorks2012 database.
if (publicationDb.LoadProperties())
{
if (publicationDb.EnabledMergePublishing)
{
publicationDb.EnabledMergePublishing = false;
}
else if (publicationDb.EnabledTransPublishing)
{
publicationDb.EnabledTransPublishing = false;
}
}
else
{
throw new ApplicationException(
String.Format("The {0} database does not exist.", publicationDbName));
}
// We cannot uninstall the Publisher if there are still Subscribers.
if (distributor.RegisteredSubscribers.Count == 0)
{
// Uninstall the Publisher, if it exists.
publisher = new DistributionPublisher(publisherName, distributorConn);
if (publisher.LoadProperties())
{
publisher.Remove(false);
}
else
{
// Do something here if the Publisher does not exist.
throw new ApplicationException(String.Format(
"{0} is not a Publisher for {1}.", publisherName, distributorName));
}
// Drop the distribution database.
if (distributionDb.LoadProperties())
{
distributionDb.Remove();
}
else
{
// Do something here if the distribition DB does not exist.
throw new ApplicationException(String.Format(
"The distribution database '{0}' does not exist on {1}.",
distributionDbName, distributorName));
}
// Uninstall the Distributor, if it exists.
if (distributor.LoadProperties())
{
// Passing a value of false means that the Publisher
// and distribution databases must already be uninstalled,
// and that no local databases be enabled for publishing.
distributor.UninstallDistributor(false);
}
else
{
//Do something here if the distributor does not exist.
throw new ApplicationException(String.Format(
"The Distributor '{0}' does not exist.", distributorName));
}
}
else
{
throw new ApplicationException("You must first delete all subscriptions.");
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The Publisher and Distributor could not be uninstalled", ex);
}
finally
{
publisherConn.Disconnect();
distributorConn.Disconnect();
}
' Set the Distributor and publication database names.
' Publisher and Distributor are on the same server instance.
Dim publisherName As String = publisherInstance
Dim distributorName As String = subscriberInstance
Dim distributionDbName As String = "distribution"
Dim publicationDbName As String = "AdventureWorks2012"
' Create connections to the Publisher and Distributor
' using Windows Authentication.
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)
Dim distributorConn As ServerConnection = New ServerConnection(distributorName)
' Create the objects we need.
Dim distributor As ReplicationServer
distributor = New ReplicationServer(distributorConn)
Dim publisher As DistributionPublisher
Dim distributionDb As DistributionDatabase
distributionDb = New DistributionDatabase(distributionDbName, distributorConn)
Dim publicationDb As ReplicationDatabase
publicationDb = New ReplicationDatabase(publicationDbName, publisherConn)
Try
' Connect to the Publisher and Distributor.
publisherConn.Connect()
distributorConn.Connect()
' Disable all publishing on the AdventureWorks2012 database.
If publicationDb.LoadProperties() Then
If publicationDb.EnabledMergePublishing Then
publicationDb.EnabledMergePublishing = False
ElseIf publicationDb.EnabledTransPublishing Then
publicationDb.EnabledTransPublishing = False
End If
Else
Throw New ApplicationException( _
String.Format("The {0} database does not exist.", publicationDbName))
End If
' We cannot uninstall the Publisher if there are still Subscribers.
If distributor.RegisteredSubscribers.Count = 0 Then
' Uninstall the Publisher, if it exists.
publisher = New DistributionPublisher(publisherName, distributorConn)
If publisher.LoadProperties() Then
publisher.Remove(False)
Else
' Do something here if the Publisher does not exist.
Throw New ApplicationException(String.Format( _
"{0} is not a Publisher for {1}.", publisherName, distributorName))
End If
' Drop the distribution database.
If distributionDb.LoadProperties() Then
distributionDb.Remove()
Else
' Do something here if the distribition DB does not exist.
Throw New ApplicationException(String.Format( _
"The distribution database '{0}' does not exist on {1}.", _
distributionDbName, distributorName))
End If
' Uninstall the Distributor, if it exists.
If distributor.LoadProperties() Then
' Passing a value of false means that the Publisher
' and distribution databases must already be uninstalled,
' and that no local databases be enabled for publishing.
distributor.UninstallDistributor(False)
Else
'Do something here if the distributor does not exist.
Throw New ApplicationException(String.Format( _
"The Distributor '{0}' does not exist.", distributorName))
End If
Else
Throw New ApplicationException("You must first delete all subscriptions.")
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The Publisher and Distributor could not be uninstalled", ex)
Finally
publisherConn.Disconnect()
distributorConn.Disconnect()
End Try
注釈
DistributionPublisherクラスは、Publisherが使用するディストリビューターへの接続が必要です。
スレッド セーフ
このタイプの公開静的(Microsoft Visual BasicShared)メンバーはマルチスレッド操作に安全です。 インスタンス メンバーがスレッド セーフであるとは限りません。
コンストラクター
| 名前 | 説明 |
|---|---|
| DistributionPublisher() |
DistributionPublisher クラスの新しいインスタンスを作成します。 |
| DistributionPublisher(String, ServerConnection) |
Publisher名を持ち、Publisherが使用するディストリビュータとの接続を持つ新しいインスタンスDistributionPublisherクラスを作成します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| CachePropertyChanges |
レプリケーションプロパティの変更をキャッシュするか、即座に適用するかを取得または設定します。 (継承元 ReplicationObject) |
| ConnectionContext |
Microsoft SQL Serverのインスタンスへの接続を取得または設定します。 (継承元 ReplicationObject) |
| DistributionDatabase |
Publisherが使用する配布データベースの名前を取得するか設定します。 |
| DistributionPublications |
このPublisherにある出版物を手に入れます。 |
| HeterogeneousLogReaderAgentExists |
非SQL Server Publisherに対してログリーダーエージェントジョブが存在するかどうかを示す値を取得します。 |
| HeterogeneousLogReaderAgentProcessSecurity |
ログリーダーエージェントが非SQL Server Publisherで使うセキュリティコンテキストを取得します。 |
| IsExistingObject |
オブジェクトがサーバー上に存在するかどうかを把握します。 (継承元 ReplicationObject) |
| Name |
Microsoft SQL ServerのPublisherインスタンス名を取得するか設定します。 |
| PublisherSecurity |
Publisherに接続する際にレプリケーションエージェントが使用するセキュリティコンテキストを取得します。 |
| PublisherType |
Publisherタイプを取得するか設定します。 |
| RegisteredSubscribers |
Publisherで出版物を購読している購読者を獲得します。 |
| SqlServerName |
このオブジェクトが接続されているMicrosoft SQL Serverインスタンスの名前を取得します。 (継承元 ReplicationObject) |
| Status |
Publisherのステータスを取得します。 |
| ThirdParty |
Publisherが非SQL Server Publisherかどうかを示す値を取得または設定します。 |
| TransPublications |
Publisherで取引出版物を手に入れます。 |
| TrustedDistributorConnection |
ディストリビュータ接続が信頼されているかどうかを示す値を取得または設定します。 |
| UserData |
ユーザーが自分のデータをオブジェクトにアタッチできるオブジェクトプロパティを取得したり設定したりします。 (継承元 ReplicationObject) |
| WorkingDirectory |
出版用のデータやスキーマファイルを格納する作業ディレクトリの名前を取得するか設定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| CheckValidCreation() |
有効な複製の作成を確認します。 (継承元 ReplicationObject) |
| CheckValidDefinition(Boolean) |
定義が有効かどうかを示します。 (継承元 ReplicationObject) |
| CommitPropertyChanges() |
キャッシュされたプロパティ変更文をすべてMicrosoft SQL Serverのインスタンスに送信します。 (継承元 ReplicationObject) |
| Create() |
Publisherをディストリビューターに指定したプロパティで登録します。 |
| CreateHeterogeneousLogReaderAgent() |
非SQL Server Publisher向けにログリーダーエージェントジョブを作成する。 |
| Decouple() |
参照されたレプリケーションオブジェクトをサーバーから切り離します。 (継承元 ReplicationObject) |
| EnumDistributionPublications() |
ディストリビューターに保存されている出版物に関する情報を本Publisherに返却します。 |
| EnumRegisteredSubscribers() |
ディストリビューターに保存されている購読者に関する情報は、このPublisherで返却されます。 |
| EnumTransPublications() |
取引出版物に関する情報は本Publisherのディストリビューターにて返送されます。 |
| GetChangeCommand(StringBuilder, String, String) |
レプリケーションからの変更コマンドを返します。 (継承元 ReplicationObject) |
| GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
レプリケーションからcreateコマンドを返します。 (継承元 ReplicationObject) |
| GetDropCommand(StringBuilder, Boolean) |
レプリケーションからドロップコマンドを返します。 (継承元 ReplicationObject) |
| InternalRefresh(Boolean) |
レプリケーションから内部リフレッシュを開始します。 (継承元 ReplicationObject) |
| Load() |
サーバーから既存のオブジェクトのプロパティを読み込みます。 (継承元 ReplicationObject) |
| LoadProperties() |
サーバーから既存のオブジェクトのプロパティを読み込みます。 (継承元 ReplicationObject) |
| Refresh() |
オブジェクトのプロパティをリロードします。 (継承元 ReplicationObject) |
| Remove(Boolean) |
現在接続されているDistributorからこのPublisherの登録を削除します。 |
| Script(ScriptOptions) |
Publisherのインストールまたはアンインストールに使える Transact-SQL スクリプトを生成します。 |