ReplicationDatabase 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
복제 토폴로지에서 게시 또는 구독 데이터베이스를 나타냅니다.
public ref class ReplicationDatabase sealed : Microsoft::SqlServer::Replication::ReplicationObject
public sealed class ReplicationDatabase : Microsoft.SqlServer.Replication.ReplicationObject
type ReplicationDatabase = class
inherit ReplicationObject
Public NotInheritable Class ReplicationDatabase
Inherits ReplicationObject
- 상속
예제
이 예제에서는 배포자를 설치할 때 배포 데이터베이스를 만듭니다. 또한 AdventureWorks 데이터베이스에서 병합 및 트랜잭션 게시를 사용할 수 있습니다.
// 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
다음은 배포 데이터베이스의 속성을 변경하는 예제입니다.
// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;
ReplicationServer distributor;
DistributionDatabase distributionDb;
// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(distributorName);
try
{
// Open the connection.
conn.Connect();
distributor = new ReplicationServer(conn);
// Load Distributor properties, if it is installed.
if (distributor.LoadProperties())
{
// Password supplied at runtime.
distributor.ChangeDistributorPassword(password);
distributor.AgentCheckupInterval = 5;
// Save changes to the Distributor properties.
distributor.CommitPropertyChanges();
}
else
{
throw new ApplicationException(
String.Format("{0} is not a Distributor.", publisherInstance));
}
// Create an object for the distribution database
// using the open Distributor connection.
distributionDb = new DistributionDatabase(distributionDbName, conn);
// Change distribution database properties.
if (distributionDb.LoadProperties())
{
// Change maximum retention period to 48 hours and history retention
// period to 24 hours.
distributionDb.MaxDistributionRetention = 48;
distributionDb.HistoryRetention = 24;
// Save changes to the distribution database properties.
distributionDb.CommitPropertyChanges();
}
else
{
// Do something here if the distribution database does not exist.
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException("An error occured when changing Distributor " +
" or distribution database properties.", ex);
}
finally
{
conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance
Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase
' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(distributorName)
Try
' Open the connection.
conn.Connect()
distributor = New ReplicationServer(conn)
' Load Distributor properties, if it is installed.
If distributor.LoadProperties() Then
' Password supplied at runtime.
distributor.ChangeDistributorPassword(password)
distributor.AgentCheckupInterval = 5
' Save changes to the Distributor properties.
distributor.CommitPropertyChanges()
Else
Throw New ApplicationException( _
String.Format("{0} is not a Distributor.", publisherInstance))
End If
' Create an object for the distribution database
' using the open Distributor connection.
distributionDb = New DistributionDatabase(distributionDbName, conn)
' Change distribution database properties.
If distributionDb.LoadProperties() Then
' Change maximum retention period to 48 hours and history retention
' period to 24 hours.
distributionDb.MaxDistributionRetention = 48
distributionDb.HistoryRetention = 24
' Save changes to the distribution database properties.
distributionDb.CommitPropertyChanges()
Else
' Do something here if the distribution database does not exist.
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException("An error occured when changing Distributor " + _
" or distribution database properties.", ex)
Finally
conn.Disconnect()
End Try
다음은 AdventureWorks 데이터베이스에서 병합 및 트랜잭션 게시를 사용하지 않도록 설정하고 배포 데이터베이스를 삭제하는 예제입니다.
// 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
설명
ReplicationDatabase 게시 또는 구독 데이터베이스를 나타내는 데 사용할 수 있습니다. ReplicationDatabase 는 master, tempdb, msdb 및 model과 같은 시스템 데이터베이스를 나타내는 데 사용할 수 없습니다. 배포 데이터베이스는 로 DistributionDatabase표시됩니다.
스레드 보안
이 형식의 모든 공용 정적(Shared
Microsoft Visual Basic의 경우) 멤버는 다중 스레드 작업에 안전합니다. 인스턴스 구성원은 스레드로부터의 안전성이 보장되지 않습니다.
생성자
ReplicationDatabase() |
ReplicationDatabase 클래스의 새 인스턴스를 초기화합니다. |
ReplicationDatabase(String, ServerConnection) |
데이터베이스가 있는 서버에 대한 연결을 제공하고 지정된 데이터베이스 이름을 사용하여 ReplicationDatabase 클래스의 새 인스턴스를 초기화합니다. |
속성
AllowMergePublication |
병합 복제를 사용하여 데이터베이스를 게시할 수 있는지 여부를 지정합니다. |
CachePropertyChanges |
복제 속성에 대한 변경 내용을 캐시할지 아니면 즉시 적용할지를 가져오거나 설정합니다. (다음에서 상속됨 ReplicationObject) |
CompatibilityLevel |
데이터베이스에 호환되는 동작이 있는 SQL Server 최소 버전을 가져옵니다. |
ConnectionContext |
Microsoft SQL Server 인스턴스에 대한 연결을 가져오거나 설정합니다. (다음에서 상속됨 ReplicationObject) |
DBOwner |
현재 연결에 사용되는 로그인에 데이터베이스에 대한 소유권이 있는지 여부를 가져옵니다. |
DBReadOnly |
데이터베이스가 읽기 전용인지 여부를 가져옵니다. |
EnabledMergePublishing |
데이터베이스를 병합 게시에 사용할 수 있는지 여부를 가져오거나 설정합니다. |
EnabledTransPublishing |
데이터베이스를 트랜잭션 또는 스냅샷 게시에 사용할 수 있는지 여부를 가져오거나 설정합니다. |
HasPublications |
데이터베이스에 기존 게시가 있는지 여부를 가져옵니다. |
HasPullSubscriptions |
데이터베이스에 기존 끌어오기 구독이 있는지 여부를 가져옵니다. |
IsExistingObject |
서버에 개체가 있는지 여부를 가져옵니다. (다음에서 상속됨 ReplicationObject) |
LogReaderAgentExists |
게시 데이터베이스에 대해 로그 판독기 에이전트가 만들어졌는지 여부를 가져옵니다. |
LogReaderAgentName |
기존 로그 판독기 에이전트의 이름을 가져오거나, 게시 데이터베이스에 대한 새 로그 판독기 에이전트를 만들 때 이름을 설정합니다. |
LogReaderAgentProcessSecurity |
배포자에서 로그 판독기 에이전트 작업이 실행되는 Microsoft Windows 계정을 가져옵니다. |
LogReaderAgentPublisherSecurity |
게시자에 연결하기 위해 로그 판독기 에이전트에서 사용하는 로그인을 가져옵니다. |
MergePublications |
복제 데이터베이스에 정의된 병합 게시를 반환합니다. |
MergePullSubscriptions |
복제 데이터베이스에 정의된 병합 끌어오기 구독을 반환합니다. |
Name |
복제 데이터베이스의 이름을 가져오거나 설정합니다. |
QueueReaderAgentExists |
데이터베이스에 대한 큐 판독기 에이전트 작업이 있는지 여부를 가져옵니다. |
QueueReaderAgentProcessSecurity |
배포자에서 큐 판독기 에이전트 작업이 실행되는 Microsoft Windows 계정을 가져옵니다. |
SqlServerName |
이 개체가 연결된 Microsoft SQL Server 인스턴스의 이름을 가져옵니다. (다음에서 상속됨 ReplicationObject) |
TransPublications |
복제 데이터베이스에 정의된 트랜잭션 또는 스냅샷 게시를 반환합니다. |
TransPullSubscriptions |
복제 데이터베이스에 정의된 트랜잭션 또는 스냅샷 게시에 대한 끌어오기 구독을 나타냅니다. |
UserData |
사용자가 자신의 고유 데이터를 개체에 연결할 수 있도록 하는 개체 속성을 가져오거나 설정합니다. (다음에서 상속됨 ReplicationObject) |
메서드
CheckValidCreation() |
유효한 복제 만들기를 확인합니다. (다음에서 상속됨 ReplicationObject) |
CheckValidDefinition(Boolean) |
정의가 유효한지 여부를 나타냅니다. (다음에서 상속됨 ReplicationObject) |
CommitPropertyChanges() |
캐시된 모든 속성 변경 문을 Microsoft SQL Server 인스턴스로 보냅니다. (다음에서 상속됨 ReplicationObject) |
CreateLogReaderAgent() |
트랜잭션 복제를 사용하여 게시된 데이터베이스에 대한 로그 판독기 에이전트를 만듭니다. |
CreateQueueReaderAgent() |
배포 데이터베이스에 대한 큐 판독기 에이전트 작업을 만듭니다. |
Decouple() |
참조된 복제 개체를 서버에서 분리합니다. (다음에서 상속됨 ReplicationObject) |
EnumConflictTables(String) |
복제 데이터베이스를 사용하는 모든 병합 게시 및 구독에 대한 충돌 정보를 반환합니다. |
EnumMergeConflictCounts(String, String, String) |
병합 게시 또는 구독 데이터베이스에 저장된 충돌 정보를 반환합니다. |
EnumMergePublications() |
복제 데이터베이스를 사용하는 병합 게시 목록을 반환합니다. |
EnumMergePullSubscriptions() |
이 복제 데이터베이스를 사용하는 모든 병합 끌어오기 구독을 반환합니다. |
EnumPublicationArticles(String) |
복제 데이터베이스에 있는 게시된 개체의 복제 정보를 반환합니다. |
EnumReplicationSchemaBoundViews() |
데이터베이스에 있는 모든 사용자 정의 스키마 바운드 뷰 개체를 반환합니다. |
EnumReplicationStoredProcedures() |
데이터베이스에 있는 모든 사용자 정의 저장 프로시저 개체를 반환합니다. |
EnumReplicationTables() |
데이터베이스에 있는 모든 사용자 정의 테이블 개체를 반환합니다. |
EnumReplicationUserDefinedAggregates() |
데이터베이스에 있는 사용자 정의 집계 목록을 반환합니다. |
EnumReplicationUserDefinedFunctions() |
데이터베이스에 있는 사용자 정의 함수 목록을 반환합니다. |
EnumReplicationViews() |
데이터베이스에 있는 사용자 정의 뷰 개체 목록을 반환합니다. |
EnumTransConflictCounts(String, String, String) |
업데이트 트랜잭션 게시 또는 구독 데이터베이스에 저장된 충돌 정보를 반환합니다. |
EnumTransPublications() |
데이터베이스를 사용하는 트랜잭션 및 스냅샷 게시 목록을 반환합니다. |
EnumTransPullSubscriptions() |
데이터베이스를 사용하는 트랜잭션 및 스냅샷 끌어오기 구독 목록을 반환합니다. |
GetChangeCommand(StringBuilder, String, String) |
복제에서 변경 명령을 반환합니다. (다음에서 상속됨 ReplicationObject) |
GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
복제에서 생성 명령을 반환합니다. (다음에서 상속됨 ReplicationObject) |
GetDropCommand(StringBuilder, Boolean) |
복제에서 삭제 명령을 반환합니다. (다음에서 상속됨 ReplicationObject) |
InternalRefresh(Boolean) |
복제에서 내부 새로 고침을 시작합니다. (다음에서 상속됨 ReplicationObject) |
LinkPublicationForUpdateableSubscription(String, String, String, String, PublisherConnectionSecurityContext) |
업데이트할 수 있는 구독의 동기화 트리거에서 게시자에 연결할 때 사용하는 구성 및 보안 정보를 설정합니다. |
Load() |
서버에서 기존 개체의 속성을 로드합니다. (다음에서 상속됨 ReplicationObject) |
LoadProperties() |
서버에서 기존 개체의 속성을 로드합니다. (다음에서 상속됨 ReplicationObject) |
ReadSubscriptionFailoverMode(String, String, String) |
트랜잭션 또는 스냅샷 게시에 대한 업데이트 구독의 장애 조치(failover) 모드를 반환합니다. |
Refresh() |
개체의 속성을 다시 로드합니다. (다음에서 상속됨 ReplicationObject) |
Script(ScriptOptions) |
의 속성 ReplicationDatabase에 따라 데이터베이스에서 복제 게시 및 구독을 사용하거나 사용하지 않도록 설정하는 Transact-SQL 스크립트를 반환합니다. |
ScriptReplicationDBOption(ScriptOptions) |
의 속성 ReplicationDatabase에 따라 데이터베이스에서 복제 옵션을 사용하거나 사용하지 않도록 설정하는 Transact-SQL 스크립트를 반환합니다. |
WriteSubscriptionFailoverMode(String, String, String, FailoverMode) |
트랜잭션 또는 스냅샷 게시에 대한 업데이트 구독의 장애 조치(failover) 모드를 설정합니다. |