Nasıl yapılır: Bir yayını (rmo programlama) oluştur
Yayınlar aracılığıyla kullanarak oluşturabileceğiniz Çoğaltma Yönetim Nesneleri (rmo).Bir yayın oluşturmak için kullandığınız rmo sınıfları, oluşturduğunuz yayın türüne bağlıdır.
Güvenlik Notu |
---|
Mümkün olduğunda, zamanında güvenlik kimlik bilgileri bilgilerini girmesini ister.Kimlik bilgileri saklamanız gerekir kullanın Şifreleme Hizmetleri tarafından sağlanan WindowsMicrosoft .net Framework. |
Bir anlık görüntü veya işlem yayın oluşturmak için
Bir bağlantı oluşturmak Yayımcı kullanarak ServerConnection WalkTree
Örneğini ReplicationDatabase yayın veritabanı için sınıf, küme ConnectionContext örnek için özellik ServerConnection Adım 1 ve çağrı LoadProperties yöntem.If LoadProperties returns false, verify that the database exists.
If the EnabledTransPublishing property is false, küme it to true.
Bir işlem için yayın, değerini LogReaderAgentExists özellik.Bu özellik ise true, zaten bir günlük okuma Aracısı iş var Bu veritabanı.Bu özellik ise false, aşağıdakileri yapın:
Set Login ve Password veya SecurePassword alanları, LogReaderAgentProcessSecurity için kimlik bilgileri sağlamak için Microsoft altında çalışacağı Windows hesabını Günlük Okuyucu Aracısı çalıştırır.
Not
Ayar LogReaderAgentProcessSecurity üye tarafından yayın oluşturulduğunda gerekli değildir sysadmin sabit sunucu rolü.Bu durum, Aracısı sql Server Agent hesabı taklit.Daha fazla bilgi için bkz: Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Set SqlStandardLogin ve SqlStandardPassword ya da SecureSqlStandardPassword alanları, LogReaderAgentPublisherSecurity bağlanmak için sql Server kimlik doğrulaması kullanırkenYayımcı.
Call CreateLogReaderAgent yöntem, Günlük Okuyucu Aracısı oluşturmak için iş için veritabanı
Örneğini TransPublication , sınıf ve küme bu nesne için aşağıdaki özellikleri:
The ServerConnection from step 1 for ConnectionContext.
Yayımlanmış bir veritabanı için adı DatabaseName.
Yayın için bir ad Name.
A PublicationType of either Transactional or Snapshot.
The Login and Password fields of SnapshotGenerationAgentProcessSecurity to provide the credentials for the Windows account under which the Snapshot Agent runs.Anlık Görüntü Aracısı bağlantıları için yerel Dağıtımcı ve tüm uzak bağlantılar için Windows kimlik doğrulaması kullanılırken yaptığında, bu hesap da kullanılır.
Not
Ayar SnapshotGenerationAgentProcessSecurity üye tarafından yayın oluşturulduğunda gerekli değildir sysadmin sabit sunucu rolü.Bu durum, Aracısı sql Server Agent hesabı taklit.Daha fazla bilgi için bkz: Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) SqlStandardLogin Ve SqlStandardPassword ya da SecureSqlStandardPassword alanları, SnapshotGenerationAgentPublisherSecurity bağlanmak için sql Server kimlik doğrulaması kullanırkenYayımcı.
(İsteğe bağlı) Dahil mantıksal or işleçni kullanın (| Visual C# içinde ve Or Visual Basic) ve mantıksal özel veya işleç (^ Visual C# içinde ve Xor Visual Basic) için küme PublicationAttributes için değer Attributes özellik.
(İsteğe bağlı) Yayımcının adını PublisherName zaman yayımcı bir sql Server Publisher.
Call Create yöntem oluşturmak yayın.
Güvenlik Notu Publisher ile yapılandırırken bir uzak Dağıtımcı, sağlanan da dahil olmak üzere tüm özellikleri için değerleri SnapshotGenerationAgentProcessSecurity, için dağıtıcı düz metin olarak gönderilirYayımcı ve kendi arama önce Uzak dağıtımcı arasında bağlantı şifrelemelidir Create yöntem.Daha fazla bilgi için bkz: SQL Server bağlantıları şifreleme.
Call CreateSnapshotAgent yöntem, anlık görüntü Aracısı oluşturmak için iş için yayın.
Bir birleştirme yayın oluşturmak için
Bir bağlantı oluşturmak Yayımcı kullanarak ServerConnection WalkTree
Örneğini ReplicationDatabase yayın veritabanı için sınıf, küme ConnectionContext örnek için özellik ServerConnection Adım 1 ve çağrı LoadProperties yöntem.If LoadProperties returns false, verify that the database exists.
If EnabledMergePublishing Property is false, küme it to true, and call CommitPropertyChanges.
Örneğini MergePublication , sınıf ve küme bu nesne için aşağıdaki özellikleri:
The ServerConnection from step 1 for ConnectionContext.
Yayımlanmış bir veritabanı için adı DatabaseName.
Yayın için bir ad Name.
The Login and Password fields of SnapshotGenerationAgentProcessSecurity to provide the credentials for the Windows account under which the Snapshot Agent runs.Anlık Görüntü Aracısı bağlantıları için yerel Dağıtımcı ve tüm uzak bağlantılar için Windows kimlik doğrulaması kullanılırken yaptığında, bu hesap da kullanılır.
Not
Ayar SnapshotGenerationAgentProcessSecurity üye tarafından yayın oluşturulduğunda gerekli değildir sysadmin sabit sunucu rolü.Daha fazla bilgi için bkz: Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Dahil mantıksal or işleçni kullanın (| Visual C# içinde ve Or Visual Basic) ve mantıksal özel veya işleç (^ Visual C# içinde ve Xor Visual Basic) için küme PublicationAttributes için değer Attributes özellik.
Call Create yöntem oluşturmak yayın.
Güvenlik Notu Publisher ile yapılandırırken bir uzak Dağıtımcı, sağlanan da dahil olmak üzere tüm özellikleri için değerleri SnapshotGenerationAgentProcessSecurity, için dağıtıcı düz metin olarak gönderilirYayımcı ve kendi arama önce Uzak dağıtımcı arasında bağlantı şifrelemelidir Create yöntem.Daha fazla bilgi için bkz: SQL Server bağlantıları şifreleme.
Call CreateSnapshotAgent yöntem, anlık görüntü Aracısı oluşturmak için iş için yayın.
Örnek
Bu örnek AdventureWorks veritabanı işlemsel yayım için sağlar, bir günlük okuyucu Aracısı tanımlar işve AdvWorksProductTran yayın oluşturur.Bir makale bu yayın için tanımlanmış olmalıdır.Günlük Okuyucu Aracısı oluşturmak için gereken kimlik bilgilerini Windows hesap iş ve anlık görüntü Aracısı iş zamanında iletilir.rmo anlık görüntü ve işlemsel makaleleri tanımlamak için nasıl kullanılacağını öğrenmek için bkz: Nasıl yapılır: Bir makalesi (rmo programlama) tanımla.
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2008R2";
string publisherName = publisherInstance;
ReplicationDatabase publicationDb;
TransPublication publication;
// Create a connection to the Publisher using Windows Authentication.
ServerConnection conn;
conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Enable the AdventureWorks database for transactional publishing.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
// If the database exists and is not already enabled,
// enable it for transactional publishing.
if (publicationDb.LoadProperties())
{
if (!publicationDb.EnabledTransPublishing)
{
publicationDb.EnabledTransPublishing = true;
}
// If the Log Reader Agent does not exist, create it.
if (!publicationDb.LogReaderAgentExists)
{
// Specify the Windows account under which the agent job runs.
// This account will be used for the local connection to the
// Distributor and all agent connections that use Windows Authentication.
publicationDb.LogReaderAgentProcessSecurity.Login = winLogin;
publicationDb.LogReaderAgentProcessSecurity.Password = winPassword;
// Explicitly set authentication mode for the Publisher connection
// to the default value of Windows Authentication.
publicationDb.LogReaderAgentPublisherSecurity.WindowsAuthentication = true;
// Create the Log Reader Agent job.
publicationDb.CreateLogReaderAgent();
}
}
else
{
throw new ApplicationException(String.Format(
"The {0} database does not exist at {1}.",
publicationDb, publisherName));
}
// Set the required properties for the transactional publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// Specify a transactional publication (the default).
publication.Type = PublicationType.Transactional;
// Activate the publication so that we can add subscriptions.
publication.Status = State.Active;
// Enable push and pull subscriptions and independent Distribition Agents.
publication.Attributes |= PublicationAttributes.AllowPull;
publication.Attributes |= PublicationAttributes.AllowPush;
publication.Attributes |= PublicationAttributes.IndependentAgent;
// Specify the Windows account under which the Snapshot Agent job runs.
// This account will be used for the local connection to the
// Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin;
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword;
// Explicitly set the security mode for the Publisher connection
// Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = true;
if (!publication.IsExistingObject)
{
// Create the transactional publication.
publication.Create();
// Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent();
}
else
{
throw new ApplicationException(String.Format(
"The {0} publication already exists.", publicationName));
}
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"The publication {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publisherName As String = publisherInstance
Dim publicationDb As ReplicationDatabase
Dim publication As TransPublication
' Create a connection to the Publisher using Windows Authentication.
Dim conn As ServerConnection
conn = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Enable the AdventureWorks database for transactional publishing.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
' If the database exists and is not already enabled,
' enable it for transactional publishing.
If publicationDb.LoadProperties() Then
If Not publicationDb.EnabledTransPublishing Then
publicationDb.EnabledTransPublishing = True
End If
' If the Log Reader Agent does not exist, create it.
If Not publicationDb.LogReaderAgentExists Then
' Specify the Windows account under which the agent job runs.
' This account will be used for the local connection to the
' Distributor and all agent connections that use Windows Authentication.
publicationDb.LogReaderAgentProcessSecurity.Login = winLogin
publicationDb.LogReaderAgentProcessSecurity.Password = winPassword
' Explicitly set authentication mode for the Publisher connection
' to the default value of Windows Authentication.
publicationDb.LogReaderAgentPublisherSecurity.WindowsAuthentication = True
' Create the Log Reader Agent job.
publicationDb.CreateLogReaderAgent()
End If
Else
Throw New ApplicationException(String.Format( _
"The {0} database does not exist at {1}.", _
publicationDb, publisherName))
End If
' Set the required properties for the transactional publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' Specify a transactional publication (the default).
publication.Type = PublicationType.Transactional
'Enable push and pull subscriptions and independent Distribition Agents.
publication.Attributes = _
publication.Attributes Or PublicationAttributes.AllowPull
publication.Attributes = _
publication.Attributes Or PublicationAttributes.AllowPush
publication.Attributes = _
publication.Attributes Or PublicationAttributes.IndependentAgent
' Activate the publication so that we can add subscriptions.
publication.Status = State.Active
' Specify the Windows account under which the Snapshot Agent job runs.
' This account will be used for the local connection to the
' Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword
' Explicitly set the security mode for the Publisher connection
' Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = True
If Not publication.IsExistingObject Then
' Create the transactional publication.
publication.Create()
' Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent()
Else
Throw New ApplicationException(String.Format( _
"The {0} publication already exists.", publicationName))
End If
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"The publication {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
Bu örnek, AdventureWorks veritabanını birleştirme yayımlama sağlar ve AdvWorksSalesOrdersMerge yayın oluşturur.Makaleler yine de bu yayın için tanımlanmış olmalıdır.Windows hesap Anlık Görüntü Aracısı oluşturmak için gereken kimlik bilgilerini iş zamanında iletilir.rmo birleştirme makaleleri tanımlamak için nasıl kullanılacağını öğrenmek için bkz: Nasıl yapılır: Bir makalesi (rmo programlama) tanımla.
// Set the Publisher, publication database, and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2008R2";
ReplicationDatabase publicationDb;
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Enable the database for merge publication.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
if (publicationDb.LoadProperties())
{
if (!publicationDb.EnabledMergePublishing)
{
publicationDb.EnabledMergePublishing = true;
}
}
else
{
// Do something here if the database does not exist.
throw new ApplicationException(String.Format(
"The {0} database does not exist on {1}.",
publicationDb, publisherName));
}
// Set the required properties for the merge publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// Enable precomputed partitions.
publication.PartitionGroupsOption = PartitionGroupsOption.True;
// Specify the Windows account under which the Snapshot Agent job runs.
// This account will be used for the local connection to the
// Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin;
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword;
// Explicitly set the security mode for the Publisher connection
// Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = true;
// Enable Subscribers to request snapshot generation and filtering.
publication.Attributes |= PublicationAttributes.AllowSubscriberInitiatedSnapshot;
publication.Attributes |= PublicationAttributes.DynamicFilters;
// Enable pull and push subscriptions.
publication.Attributes |= PublicationAttributes.AllowPull;
publication.Attributes |= PublicationAttributes.AllowPush;
if (!publication.IsExistingObject)
{
// Create the merge publication.
publication.Create();
// Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent();
}
else
{
throw new ApplicationException(String.Format(
"The {0} publication already exists.", publicationName));
}
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"The publication {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publicationDb As ReplicationDatabase
Dim publication As MergePublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Enable the database for merge publication.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
If publicationDb.LoadProperties() Then
If Not publicationDb.EnabledMergePublishing Then
publicationDb.EnabledMergePublishing = True
End If
Else
' Do something here if the database does not exist.
Throw New ApplicationException(String.Format( _
"The {0} database does not exist on {1}.", _
publicationDb, publisherName))
End If
' Set the required properties for the merge publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' Enable precomputed partitions.
publication.PartitionGroupsOption = PartitionGroupsOption.True
' Specify the Windows account under which the Snapshot Agent job runs.
' This account will be used for the local connection to the
' Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword
' Explicitly set the security mode for the Publisher connection
' Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = True
' Enable Subscribers to request snapshot generation and filtering.
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowSubscriberInitiatedSnapshot
publication.Attributes = publication.Attributes Or _
PublicationAttributes.DynamicFilters
' Enable pull and push subscriptions
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowPull
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowPush
If Not publication.IsExistingObject Then
' Create the merge publication.
publication.Create()
' Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent()
Else
Throw New ApplicationException(String.Format( _
"The {0} publication already exists.", publicationName))
End If
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"The publication {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try