ReplicationDatabase Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un database di pubblicazioni o abbonamenti in una topologia di replicazione.
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
- Ereditarietà
Esempio
Questo esempio crea il database di distribuzione quando il Distributore viene installato. Consente inoltre la pubblicazione di fusione e transazioni sul database 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
Questo esempio modifica le proprietà del database di distribuzione.
// 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
Questo esempio disabilita la pubblicazione di fusione e transazioni nel database AdventureWorks e elimina il database di distribuzione.
// 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
Commenti
ReplicationDatabase può essere utilizzato per rappresentare una pubblicazione o un database in abbonamento. ReplicationDatabase non possono essere utilizzati per rappresentare database di sistema, come master, tempdb, msdb e model. Un database di distribuzione è rappresentato da DistributionDatabase.
Sicurezza dei Thread
Qualsiasi membro pubblico statico (Sharedin Microsoft Visual Basic) di questo tipo è sicuro per operazioni multithread. Non è garantito che tutti i membri dell'istanza siano thread-safe.
Costruttori
| Nome | Descrizione |
|---|---|
| ReplicationDatabase() |
Inizializza una nuova istanza della classe ReplicationDatabase. |
| ReplicationDatabase(String, ServerConnection) |
Inizializza una nuova istanza della ReplicationDatabase classe con il nome del database specificato, fornendo una connessione al server su cui si trova il database. |
Proprietà
| Nome | Descrizione |
|---|---|
| AllowMergePublication |
Specifica se il database può essere pubblicato tramite replicazione tramite fusione. |
| CachePropertyChanges |
Ottiene o stabilisce se memorizzare le modifiche apportate alle proprietà di replicazione o applicarle immediatamente. (Ereditato da ReplicationObject) |
| CompatibilityLevel |
Ottiene la versione minima di SQL Server con cui il database ha un comportamento compatibile. |
| ConnectionContext |
Ottiene o imposta la connessione a un'istanza di Microsoft SQL Server. (Ereditato da ReplicationObject) |
| DBOwner |
Ottiene se il login usato dalla connessione attuale ha diritti di proprietà sul database. |
| DBReadOnly |
Capisce se il database è di sola lettura o meno. |
| EnabledMergePublishing |
Ottiene o imposta se il database è abilitato per la pubblicazione tramite fusione o meno. |
| EnabledTransPublishing |
Prende o stabilisce se il database è abilitato per la pubblicazione transazionale o snapshot o meno. |
| HasPublications |
Determina se il database ha o meno pubblicazioni esistenti. |
| HasPullSubscriptions |
Determina se il database ha o meno abbonamenti pull esistenti. |
| IsExistingObject |
Ottiene se l'oggetto esiste o meno sul server. (Ereditato da ReplicationObject) |
| LogReaderAgentExists |
Ottiene se l'Agente Lettore di Log è stato creato o meno per il database della pubblicazione. |
| LogReaderAgentName |
Ottiene il nome di un Agente Lettore di Log esistente o imposta il nome quando si crea un nuovo Agente Lettore di Log per un database pubblicato. |
| LogReaderAgentProcessSecurity |
Ottiene l'account Microsoft Windows sotto cui il lavoro Log Reader Agent viene eseguito presso il distributore. |
| LogReaderAgentPublisherSecurity |
Ottiene l'accesso usato dall'Agente del Lettore di Log per connettersi al Publisher. |
| MergePublications |
Restituisce le pubblicazioni di fusione definite nel database di replicazione. |
| MergePullSubscriptions |
Restituisce le sottoscrizioni di merge pull definite nel database di replicazione. |
| Name |
Ottiene o imposta il nome del database di replicazione. |
| QueueReaderAgentExists |
Ottiene se esiste o meno un lavoro di Agent Lettore di Coda per il database. |
| QueueReaderAgentProcessSecurity |
Ottiene l'account Microsoft Windows sotto cui il lavoro Agent del Lettore della Coda viene eseguito presso il Distributore. |
| SqlServerName |
Ottiene il nome dell'istanza di Microsoft SQL Server a cui è collegato questo oggetto. (Ereditato da ReplicationObject) |
| TransPublications |
Restituisce le pubblicazioni transazionali o snapshot definite nel database di replicazione. |
| TransPullSubscriptions |
Rappresenta le iscrizioni pull a una pubblicazione transazionale o snapshot definita nel database di replicazione. |
| UserData |
Ottiene o imposta una proprietà oggetto che permette agli utenti di allegare i propri dati all'oggetto. (Ereditato da ReplicationObject) |
Metodi
| Nome | Descrizione |
|---|---|
| CheckValidCreation() |
Controlla la valida creazione della replica. (Ereditato da ReplicationObject) |
| CheckValidDefinition(Boolean) |
Indica se la definizione è valida. (Ereditato da ReplicationObject) |
| CommitPropertyChanges() |
Invia tutte le istruzioni di modifica delle proprietà nella cache all'istanza di Microsoft SQL Server. (Ereditato da ReplicationObject) |
| CreateLogReaderAgent() |
Crea un lavoro di Agent Lettore di Log per un database pubblicato con replica transazionale. |
| CreateQueueReaderAgent() |
Crea un lavoro di Agent Lettore di Coda per il database di distribuzione. |
| Decouple() |
Disaccoppia l'oggetto di replica di riferimento dal server. (Ereditato da ReplicationObject) |
| EnumConflictTables(String) |
Restituisce informazioni sui conflitti per tutte le pubblicazioni di fusione e gli abbonamenti che utilizzano il database di replicazione. |
| EnumMergeConflictCounts(String, String, String) |
Restituisce informazioni sui conflitti memorizzate in un database di pubblicazioni o abbonamenti a fusione. |
| EnumMergePublications() |
Restituisce un elenco delle pubblicazioni di fusione che utilizzano il database di replicazione. |
| EnumMergePullSubscriptions() |
Restituisce tutte le sottoscrizioni di merge pull che utilizzano questo database di replica. |
| EnumPublicationArticles(String) |
Restituisce informazioni di replica per oggetti pubblicati nel database di replica. |
| EnumReplicationSchemaBoundViews() |
Restituisce tutti gli oggetti di vista definiti dallo schema nel database. |
| EnumReplicationStoredProcedures() |
Restituisce tutti gli oggetti stored procedure definiti dall'utente nel database. |
| EnumReplicationTables() |
Restituisce tutti gli oggetti della tabella definiti dall'utente nel database. |
| EnumReplicationUserDefinedAggregates() |
Restituisce un elenco di aggregati definiti dall'utente nel database. |
| EnumReplicationUserDefinedFunctions() |
Restituisce un elenco di funzioni definite dall'utente nel database. |
| EnumReplicationViews() |
Restituisce un elenco degli oggetti di vista definiti dall'utente nel database. |
| EnumTransConflictCounts(String, String, String) |
Restituisce informazioni sui conflitti memorizzate in un database di pubblicazioni transazionali o abbonamenti in aggiornamento. |
| EnumTransPublications() |
Restituisce un elenco di pubblicazioni transazionali e snapshot che utilizzano il database. |
| EnumTransPullSubscriptions() |
Restituisce un elenco di abbonamenti transazionali e snapshot pull che utilizzano il database. |
| GetChangeCommand(StringBuilder, String, String) |
Restituisce il comando change dalla replicazione. (Ereditato da ReplicationObject) |
| GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
Restituisce il comando create dalla replicazione. (Ereditato da ReplicationObject) |
| GetDropCommand(StringBuilder, Boolean) |
Restituisce il comando drop dalla replicazione. (Ereditato da ReplicationObject) |
| InternalRefresh(Boolean) |
Avvia un aggiornamento interno dalla replicazione. (Ereditato da ReplicationObject) |
| LinkPublicationForUpdateableSubscription(String, String, String, String, PublisherConnectionSecurityContext) |
Imposta le informazioni di configurazione e sicurezza utilizzate dai trigger di sincronizzazione degli abbonamenti aggiornabili durante la connessione al Publisher. |
| Load() |
Carica le proprietà di un oggetto esistente dal server. (Ereditato da ReplicationObject) |
| LoadProperties() |
Carica le proprietà di un oggetto esistente dal server. (Ereditato da ReplicationObject) |
| ReadSubscriptionFailoverMode(String, String, String) |
Restituisce la modalità di failover per un abbonamento aggiornato a una pubblicazione transazionale o snapshot. |
| Refresh() |
Ricarica le proprietà dell'oggetto. (Ereditato da ReplicationObject) |
| Script(ScriptOptions) |
Restituisce uno script Transact-SQL per abilitare o disabilitare la pubblicazione di repliche e gli abbonamenti sul database basati sulle proprietà di ReplicationDatabase. |
| ScriptReplicationDBOption(ScriptOptions) |
Restituisce uno script Transact-SQL per abilitare o disabilitare le opzioni di replica nel database basate sulle proprietà di ReplicationDatabase. |
| WriteSubscriptionFailoverMode(String, String, String, FailoverMode) |
Imposta la modalità di failover per un aggiornamento di abbonamento a una pubblicazione transazionale o snapshot. |