Yayın oluşturma
Bu konuda bir yayın oluşturmak açıklar SQL Server 2012kullanarak SQL Server Management Studio, Transact-SQL, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo).
Bu Konuda
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
Güvenlik
Bir yayın oluşturun ve makaleleri kullanarak tanımlamak için:
SQL Server Management Studio
Transact-SQL
Çoğaltma Yönetimi Nesneleri'ni (rmo)
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
- Yayın ve madde adları aşağıdaki karakterleri dahil olamaz: % *, [,], | :, " , ? , ' , \ , / , < , >. Veritabanındaki nesneleri şu karakterlerden herhangi birini içeren ve bunları çoğaltmak istediğiniz nesne adı farklı bir makale adı belirtmeniz gerekir Makalesi özellikleri - <yazı > kullanılabilir iletişim kutusu Makaleler Sayfa Sihirbazı'nda.
Güvenlik
Mümkün olduğunda, zamanında güvenlik kimlik bilgilerini girmesini ister. Kimlik bilgileri saklamanız gerekir kullanın Şifreleme Hizmetleri tarafından sağlanan MicrosoftWindows.net Framework.
[Top]
SQL Server Management Studio Kullanarak
Yayınları oluşturma ve yeni yayın sihirbazını makaleleri tanımlayın. Bir yayın oluşturduktan sonra görüntülemek ve yayını özellikleri değiştirmek Yayını özellikleri - <yayın > iletişim kutusu. Oracle veritabanından bir yayın oluşturma hakkında daha fazla bilgi için bkz: Oracle veritabanından bir yayın oluşturma.
Bir yayın oluşturun ve makaleleri tanımlamak için
Yayımcı bağlanmak Microsoft SQL Server Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve sonra sağ Yerel yayınları klasörü.
Tıklayın Yeni yayın.
Yeni Yayın Sihirbazı sayfalarında izleyin:
Dağıtım sunucusu üzerinde yapılandırılmamış bir dağıtımcı belirtin. Dağıtım yapılandırma hakkında daha fazla bilgi için bkz: Yayımlama ve dağıtım yapılandırma.
Tarih belirtirseniz, Dağıtıcı sayfasını Publisher sunucunun kendi dağıtımcı (yerel bir dağıtımcı) hareket edecek ve distribütör, Yeni Yayın Sihirbazı sunucu yapılandırmak gibi sunucu yapılandırılmadı. Üzerinde dağıtımcı varsayılan anlık görüntü klasörünü belirleyeceksiniz Anlık görüntü klasörü sayfa. Anlık görüntü klasörü sadece bir paylaşım belirlediğiniz bir dizin olduğunu; okuma ve yazma için bu klasörün aracıları erişmek için yeterli izinleriniz olmalıdır. Uygun klasörü güvenli hale getirme hakkında daha fazla bilgi için bkz: Anlık görüntü klasörü güvenli.
Başka bir sunucu dağıtımcı çalışmak belirtirseniz, size bir şifre girmeniz gerekir Yönetici parolasını yayımcı dağıtımcı olarak yapılan bağlantılar için sayfa. Bu parola, uzak Dağıtıcı yayımcı etkinleştirildiğinde belirtilen parolayla eşleşmesi gerekir.
Daha fazla bilgi için, bkz. Dağıtım yapılandırma.
Bir yayını veritabanı seçin.
Bir yayın türü seçin. Daha fazla bilgi için, bkz. Çoğaltma türleri.
Yayımlama veri ve veritabanı nesnelerini belirler; İsteğe bağlı olarak tablo makaleleri sütunlarından filtre ve makale özelliklerini ayarlayın.
İsteğe bağlı olarak tablo makaleleri satırları süzme. Daha fazla bilgi için, bkz. Yayımlanmış veri süzme.
Anlık görüntü Aracısı zamanlama ayarlayın.
Hangi aşağıdaki çoğaltma aracıları çalıştırmak ve bağlantı kimlik bilgilerini belirtin.
-Anlık görüntü Aracısı tüm yayınlar.
-Günlük Okuma Aracısı tüm işlem yayınlar için.
-Sıra Okuyucu Aracısı Abonelikleri güncelleştirmek izin işlem yayınlar için.
Daha fazla bilgi için Çoğaltma aracısı güvenlik modelive ModeliveÇoğaltma güvenlik en iyi uygulamalar.
İsteğe bağlı olarak komut yayını. Daha fazla bilgi için, bkz. Komut dosyası çoğaltma.
Yayın için bir ad belirtin.
[Top]
Transact-SQL'i Kullanma
Yayınlar, programlı olarak çoğaltma depolanmış yordamları kullanarak oluşturulabilir. Kullanılan saklı yordamlar oluşturulan yayın türüne bağlıdır.
Bir anlık görüntü veya işlem yayını oluşturmak için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_replicationdboption (Transact-sql)anlık görüntü veya işlem çoğaltma kullanarak geçerli veritabanı yayını etkinleştirmek için.
Işlem bir yayın için günlük Okuma Aracısı iş yayını veritabanı için var olup olmadığını belirleyin. (Bu adımı anlık görüntü yayınlar için gerekli değildir.)
Günlük Okuma Aracısı iş yayını veritabanı için varsa, adım 3'e gidin.
Yayımlanmış bir veritabanı günlük Okuma Aracısı iş var olup olmadığından emin değilseniz idam sp_helplogreader_agent (Transact-sql)Yayını veritabanı üzerinde yayımcı adresindeki.
Sonuç kümesi boş ise, bir günlük Okuma Aracısı işi oluşturmak. Yayımcı tarafında idam sp_addlogreader_agent (Transact-sql). Belirtmek Microsoftaracı için çalıştığı Windows kimlik bilgileri @ job_name ve @ parola. Aracısı SQL Server kimlik doğrulaması için yayımcı bağlanırken kullanacağı, değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve Microsoft SQL Servergiriş bilgilerini @ publisher_login ve publisher_password @. 3. Adıma geçin.
Yayımcı tarafında idam için yürütme eşdeğerdirsp_addpublication (Transact-sql). Yayını adını belirtin @ yayınve @ repl_freq parametresi değeri belirtmeniz snapshotanlık görüntü yayını veya değeri continuousişlem yayın. Diğer yayın seçeneklerini belirtin. Bu yayını tanımlar.
[!NOT]
Yayın adları şu karakterleri içeremez:
% * [ ] | : " ? \ / < >
Yayımcı tarafında idam sp_addpublication_snapshot (Transact-sql). Adım 3 kullanılan yayın adı belirtmek @ yayın ve anlık görüntü Aracısı çalıştığı için Windows kimlik bilgileri @ snapshot_job_name ve @ parola. Aracısı SQL Server kimlik doğrulaması için yayımcı bağlanırken kullanacağı, değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve SQL Serveriçin oturum açma bilgilerini @ publisher_login ve publisher_password @. Bu bir anlık görüntü Aracısı iş yayını oluşturur.
Güvenlik Notu Bir Publisher ile sağlanan tüm parametreler için değerler uzak bir dağıtımcı yapılandırma dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Makaleleri yayına ekleyin. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Bu yayının ilk anlık görüntüsü oluşturmak için anlık görüntü Aracısı işi başlatmak. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.
Bir birleştirme yayını oluşturmak için
Yayımcı tarafında idam sp_replicationdboption (Transact-sql)Geçerli yayını etkinleştirmek için veritabanı kullanarak birleştirme çoğaltma.
Yayını veritabanı üzerinde Yayımcı tarafında idam veyasp_addmergepublication (Transact-sql). Yayın için bir ad belirtmeniz @ yayın ve diğer yayın seçenekleri. Bu yayını tanımlar.
[!NOT]
Yayın adları şu karakterleri içeremez:
% * [ ] | : " ? \ / < >
Yayımcı tarafında idam sp_addpublication_snapshot (Transact-sql). Adım 2 kullanılan yayın adı belirtmek @ yayın ve anlık görüntü Aracısı çalıştığı için Windows kimlik bilgileri @ snapshot_job_name ve @ parola. Aracısı SQL Server kimlik doğrulaması için yayımcı bağlanırken kullanacağı, değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve SQL Serveriçin oturum açma bilgilerini @ publisher_login ve publisher_password @. Bu bir anlık görüntü Aracısı iş yayını oluşturur.
Güvenlik Notu Bir Publisher ile sağlanan tüm parametreler için değerler uzak bir dağıtımcı yapılandırma dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Makaleleri yayına ekleyin. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Bu yayının ilk anlık görüntüsü oluşturmak için anlık görüntü Aracısı işi başlatmak. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.
Örnek (Transact-sql)
Bu örnek işlem yayınına oluşturur. Komut dosyası değişkenleri, anlık görüntü Aracısı ve günlük Okuma Aracısı işleri oluşturmak için gerekli olan Windows kimlik bilgileri iletmek için kullanılır.
-- To avoid storing the login and password in the script file, the values
-- are passed into SQLCMD as scripting variables. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksProductTran';
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- This should be passed at runtime.
SET @password = $(Password);
-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Create a new transactional publication with the required properties.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_push = N'true',
@allow_pull = N'true',
@independent_agent = N'true';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
GO
Bu örnek, birleştirme yayını oluşturur. Komut dosyası değişkenleri, anlık görüntü Aracısı işi oluşturmak için gerekli olan Windows kimlik bilgileri iletmek için kullanılır.
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @login = $(Login);
SET @password = $(Password);
-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'merge publish',
@value = N'true'
-- Create a new merge publication, explicitly setting the defaults.
USE [AdventureWorks2012]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2012.',
@publication_compatibility_level = N'110RTM';
-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
GO
[Top]
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak programlı olarak yayınlar oluşturabilirsiniz. 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.
Bir anlık görüntü veya işlem yayını oluşturmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini ReplicationDatabasesınıfı için yayın veritabanı, set ConnectionContextözelliği örneği ServerConnectionAdım 1 ve arama LoadPropertiesyöntemi. Eğer LoadPropertiesdöner false, veritabanı varolduğundan emin olun.
Eğer EnabledTransPublishingözelliği false, ayarlamak true.
Bir işlem yayın için kontrol değer-in LogReaderAgentExistsözellik. Bu özellik ise true, zaten bu veritabanı için günlük Okuma Aracısı iş. Bu özellik ise false, aşağıdakileri yapın:
Set Loginve Passwordveya SecurePasswordalanları LogReaderAgentProcessSecurityiçin kimlik bilgileri sağlamak için MicrosoftWindows hesap günlük Okuma Aracısı çalıştığı altında.
[!NOT]
Ayar LogReaderAgentProcessSecuritybir üyesi tarafından yayın oluşturulduğunda gerekli değildir sysadminsunucu rolü. Bu durumda, aracı SQL Server Agent hesabı taklit. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Set SqlStandardLoginve SqlStandardPasswordya SecureSqlStandardPasswordalanlar LogReaderAgentPublisherSecurityiçin yayımcı bağlanmak için SQL Server kimlik doğrulaması kullanırken.
Arama CreateLogReaderAgentveritabanı için günlük Okuma Aracısı işi oluşturmak için yöntemi.
Örneğini TransPublicationsınıf ve bu nesne için aşağıdaki özellikleri ayarlayın:
ServerConnectionİçin adım 1'de belirtilen ConnectionContext.
Yayımlanmış bir veritabanı için adı DatabaseName.
Yayın için bir ad Name.
A PublicationType of either Transactional or Snapshot.
LoginVe Passwordalanlar SnapshotGenerationAgentProcessSecuritySnapshot aracı çalıştığı Windows hesabı kimlik bilgilerini sağlamak için. 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ı kullanarak yapar, bu hesap da kullanılır.
[!NOT]
Ayar SnapshotGenerationAgentProcessSecuritybir üyesi tarafından yayın oluşturulduğunda gerekli değildir sysadminsunucu rolü. Bu durumda, aracı SQL Server Agent hesabı taklit. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) SqlStandardLoginVe SqlStandardPasswordya SecureSqlStandardPasswordalanlar SnapshotGenerationAgentPublisherSecurityiçin yayımcı bağlanmak için SQL Server kimlik doğrulaması kullanırken.
(İsteğe bağlı) Kullanımı dahil mantıksal or işlecini)| Visual C# ve OrVisual Basic) ve mantıksal özel veya işleci ( ^ Visual C# ve XorVisual Basic) ayarlamak için PublicationAttributesiçin değer Attributesözellik.
(İsteğe bağlı) Yayıncı adı PublisherNamebir olmayan - SQL Server Publisher yayımcı ne zaman.
Arama Createyayın oluşturma yöntemi.
Güvenlik Notu Bir Publisher ile sağlanan tüm özellikler, değerler uzak bir dağıtımcı yapılandırma dahil SnapshotGenerationAgentProcessSecurity, dağıtımcı düz metin olarak gönderilir. Yayımcı ve uzak dağıtımcı önce arama arasındaki bağlantıyı şifrelemek Createyöntemi. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Arama CreateSnapshotAgentanlık görüntü Aracısı iş yayını oluşturma yöntemi.
Bir birleştirme yayını oluşturmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini ReplicationDatabasesınıfı için yayın veritabanı, set ConnectionContextözelliği örneği ServerConnectionAdım 1 ve arama LoadPropertiesyöntemi. Eğer LoadPropertiesdöner false, veritabanı varolduğundan emin olun.
Eğer EnabledMergePublishingözelliği false, ayarlamak trueve CommitPropertyChanges.
Örneğini MergePublicationsınıf ve bu nesne için aşağıdaki özellikleri ayarlayın:
ServerConnectionİçin adım 1'de belirtilen ConnectionContext.
Yayımlanmış bir veritabanı için adı DatabaseName.
Yayın için bir ad Name.
LoginVe Passwordalanlar SnapshotGenerationAgentProcessSecuritySnapshot aracı çalıştığı Windows hesabı kimlik bilgilerini sağlamak için. 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ı kullanarak yapar, bu hesap da kullanılır.
[!NOT]
Ayar SnapshotGenerationAgentProcessSecuritybir üyesi tarafından yayın oluşturulduğunda gerekli değildir sysadminsunucu rolü. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Kullanımı dahil mantıksal or işlecini)| Visual C# ve OrVisual Basic) ve mantıksal özel veya işleci ( ^ Visual C# ve XorVisual Basic) ayarlamak için PublicationAttributesiçin değer Attributesözellik.
Arama Createyayın oluşturma yöntemi.
Güvenlik Notu Bir Publisher ile sağlanan tüm özellikler, değerler uzak bir dağıtımcı yapılandırma dahil SnapshotGenerationAgentProcessSecurity, dağıtımcı düz metin olarak gönderilir. Yayımcı ve uzak dağıtımcı önce arama arasındaki bağlantıyı şifrelemek Createyöntemi. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Arama CreateSnapshotAgentanlık görüntü Aracısı iş yayını oluşturma yöntemi.
Örnekler (rmo)
Bu örnek AdventureWorks veritabanı işlem yayın için sağlar, bir günlük Okuma Aracısı işi tanımlar ve AdvWorksProductTran yayın oluşturur. Bir makale bu yayın için tanımlanmış olması gerekir. Günlük Okuma Aracısı iş ve anlık görüntü Aracısı işi oluşturmak için gerekli olan Windows hesabı kimlik bilgileri, çalışma anı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: Bir makale tanımlamak.
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";
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 AdventureWorks2012 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 = "AdventureWorks2012"
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 AdventureWorks2012 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ı birleştirme yayımlama için etkinleştirir ve AdvWorksSalesOrdersMerge yayını oluşturur. Makaleler hala bu yayın için tanımlanmış olması gerekir. Anlık görüntü Aracısı işi oluşturmak için gerekli olan Windows hesabı kimlik bilgileri, çalışma anında iletilir. rmo birleştirme makaleleri tanımlamak için nasıl kullanılacağını öğrenmek için bkz: Bir makale tanımlamak.
// Set the Publisher, publication database, and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
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 = "AdventureWorks2012"
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
[Top]
Ayrıca bkz.
Kavramlar
Sqlcmd Scripting değişkenleri ile kullanma
Verileri ve veritabanı nesnelerini Yayımla
Çoğaltma Management Objects kavramları