Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Ez a cikk bemutatja, hogyan hozhatunk létre kiadványt SQL Server-ben az SQL Server Management Studio, Transact-SQL vagy Replication Management Objects (RMO) használatával.
Korlátozások és megkötések
- A publikáció és a cikk nevei nem tartalmazhatják a következő karaktereket: , , , , ,
|:,",</\?'vagy .>][*%Ha az adatbázisban lévő objektumok tartalmaznak valamelyik ilyen karaktert, és szeretnéd replikálni őket, akkor meg kell határoznod egy olyan cikknevet, amely eltér a Cikk Tulajdonságok - <Cikk> párbeszédablakban szereplő objektum nevétől, amely a varázsló Cikkek oldalán érhető el.
Biztonság
Ha lehetséges, kérje meg a felhasználókat, hogy futásidőben adjanak meg biztonsági hitelesítő adatokat. Ha hitelesítő adatokat kell tárolnia, használja a Microsoft Windows .NET-keretrendszer által biztosított titkosítási szolgáltatásokat .
Az SQL Server Management Studio használata
Készíts publikációkat és definiáld a cikkeket az Új Kiadás Varázslóval. A kiadvány létrehozása után tekintse meg és módosítsa a kiadvány tulajdonságait a Publikáció tulajdonságai - <Kiadvány> párbeszédablakban. Az Oracle adatbázisból való kiadvány létrehozásáról információért lásd: "Kiadvány létrehozása Oracle adatbázisból".
Kiadvány létrehozása és cikkek definiálása
Csatlakozzon a Publisherhez a Microsoft SQL Server Management Studióban, majd bontsa ki a kiszolgálócsomópontot.
Kibővítse a Replikáció mappát, majd jobb kézzel kattintson a Helyi Kiadványok mappára.
Válassz Új Kiadványt.
Az alábbiakhoz kövesse az Új publikáció varázsló oldalait:
Határozz meg egy Distributort, ha a szerveren még nem volt konfigurálva a disztribúció. További információért a terjesztés konfigurálásáról lásd: Közzététel és terjesztés konfigurálása.
Ha a Forgalmazó oldalon megadod, hogy a Publisher szerver önálló Forgalmazóként (helyi Distributorként) fog működni, és a szerver nincs Distributorként konfigurálva, akkor az Új Kiadvány Varázsló konfigurálja a szervert. A Snapshot mappa oldalon megadod a Forgalmazó alapértelmezett snapshot mappáját. A snapshot mappa egyszerűen egy könyvtár, amelyet megosztottként jelöltél; Azoknak az ügynököknek, akik ebből a mappából olvasnak és írnak oda, elegendő jogosultsággal kell rendelkezniük ahhoz, hogy hozzáférjenek. További információért a mappa megfelelő biztonságáról lásd: Secure the Snapshot folder.
Ha megadod, hogy egy másik szerver működjön a Forgalmazóként, akkor az Adminisztratív Jelszó oldalon jelszót kell megadnod a Publisher és a Forgalmazó közötti kapcsolatokhoz. Ennek a jelszónak meg kell egyeznie azzal a jelszóval, amelyet akkor adtak meg, amikor a Publishert a távoli Disztribútornál engedélyezték.
További információkért lásd: A terjesztés konfigurálása.
Válassz egy publikációs adatbázist.
Válassz kiadványtípust. További információért lásd: Replikáció típusai.
Megadni az adatokat és adatbázis-objektumokat, amelyeket a publikációhoz lehet tenni; opcionálisan oszlopokat szűrhetsz táblázatcikkekből, és állítsd be az cikkelem tulajdonságait.
Opcionálisan szűrheted sorokat a táblázat cikkeiről. További információ: Közzétett adatok szűrése.
Állítsd be a Snapshot Agent ütemtervet.
Adja meg, hogy a következő replikációs ügynökök milyen hitelesítő adatokkal futnak és létesítenek kapcsolatot:
Snapshot Agent minden kiadványhoz.
Log Reader Agent minden tranzakciós kiadványhoz.
Queue Reader Agent tranzakciós kiadványokhoz, amelyek lehetővé teszik az előfizetések frissítését.
További információért lásd: Replikációs ügynök biztonsági modell és replikációs biztonsági legjobb gyakorlatok.
Igény szerint szkriptelheti a közzétételt. További információért lásd: Szkriptreplikáció.
Határozz meg a kiadvány nevét.
Használd a Transact-SQL-t
A publikációk programozott módon hozhatók létre replikációs tárolt eljárásokkal. A tárolt eljárások a létrehozott kiadvány típusától függnek.
Készíts egy pillanatképet vagy tranzakciós publikációt
A Közzétevőn, a közzétételi adatbázisban hajtsa végre a sp_replicationdboption (Transact-SQL) utasítást, hogy engedélyezze az aktuális adatbázis közzétételét pillanatkép- vagy tranzakciós replikáció használatával.
Egy tranzakciós kiadványnál határozd meg, hogy létezik-e Log Reader Agent munka a kiadvány adatbázisában. (Ez a lépés nem szükséges a pillanatkép publikációkhoz.)
Ha létezik Log Reader Agent állás a publikációs adatbázishoz, lépj a 3. lépéshez.
Ha nem vagy biztos benne, hogy létezik-e Log Reader Agent munka egy publikált adatbázishoz, hajtsd végre a sp_helplogreader_agent (Transact-SQL ) a kiadvány adatbázis Publisher-ján.
Ha az eredményhalmaz üres, hozz létre egy Log Reader Agent feladatot. A Közzétevőn hajtsa végre a sp_addlogreader_agent (Transact-SQL) parancsot. Adja meg azokat a Microsoft Windows hitelesítő adatokat, amelyekkel az ügynök a(z)
@passwordés@job_nameesetében fut. Ha az ügynök SQL Server-hitelesítést használ a Publisherhez való csatlakozáskor, akkor meg kell adnia egy értéket a(z)0számára a(z)@publisher_security_modeesetében, valamint az SQL Server bejelentkezési adatait a(z)@publisher_loginés@publisher_passwordszámára. Folytassa a 3. lépéssel.
A Publisher után hajtsd végre sp_addpublication (Transact-SQL). Adja meg a(z)
@publicationközzététel nevét, és a(z)@repl_freqparaméterhez pillanatképes közzététel eseténsnapshot, tranzakciós közzététel esetén pedigcontinuousértéket. Jelölje meg más publikációs lehetőségeket. Ez határozza meg a kiadványt.Note
A kiadvány nevei nem tartalmazhatják az alábbi karaktereket:
%,*,],|,:,",\,<,?,/,>vagy[.A Közzétevőn hajtsa végre a(z) sp_addpublication_snapshot (Transact-SQL) utasítást. Adja meg a 3. lépésben a
@publicationelemhez használt publikáció nevét, valamint a Windows hitelesítő adatokat, amelyekkel a Snapshot Agent a@snapshot_job_nameés a@passwordelemhez fut. Ha az ügynök SQL Server-hitelesítést használ a Publisherhez való csatlakozáskor, akkor meg kell adni egy értéket a(z)0számára, valamint az@publisher_security_modeSQL Server-bejelentkezési adatait a(z)@publisher_loginéspublisher_passwordszámára. Ez létrehoz egy Snapshot Agent állást a kiadvány számára.Important
Amikor távoli terjesztővel konfigurál egy közzétevőt, a rendszer az összes paraméterhez megadott értéket, beleértve a job_login és job_password, egyszerű szövegként küldi el a terjesztőnek. A tárolt eljárás végrehajtása előtt titkosítania kell a Publisher és a távoli terjesztő közötti kapcsolatot. További információ: Titkosított kapcsolatok engedélyezése az adatbázismotorhoz (SQL Server Konfigurációkezelő)
Cikkek hozzáadása a kiadványhoz. További információ: Cikk definiálása.
Indítsa el a Snapshot Agent feladatot a kiadvány kezdeti pillanatképének létrehozásához. További információ: A kezdeti pillanatkép létrehozása és alkalmazása.
Létrehozz egy összeolvasztott kiadványt
A Publisher után hajtsuk végre a sp_replicationdboption (Transact-SQL) parancsot, hogy lehetővé tegye az aktuális adatbázis közzétételét merge replikációval.
A publikációs adatbázis Publisher végén hajtsuk végre a sp_addmergepublication (Transact-SQL) parancsot. Határozd meg a kiadvány
@publicationnevét és egyéb kiadási lehetőségeket. Ez határozza meg a kiadványt.Note
A kiadvány nevei nem tartalmazhatják az alábbi karaktereket:
%,*,],|,:,",\,<,?,/,>, vagy[.A Közzétevőn hajtsa végre a(z) sp_addpublication_snapshot (Transact-SQL) utasítást. Adja meg a 2. lépésben használt publikáció nevét a
@publicationesetében, valamint azokat a Windows-hitelesítő adatokat, amelyek alatt a Snapshot Agent fut a@snapshot_job_nameés a@passwordesetében. Ha az ügynök SQL Server-hitelesítést fog használni a Közzétevőhöz való csatlakozáskor, akkor meg kell adnia egy értéket a(z)0és@publisher_security_modeszámára, valamint az SQL Server bejelentkezési adatait a(z)@publisher_loginés@publisher_passwordszámára. Ez létrehoz egy Snapshot Agent állást a kiadvány számára.Important
Amikor távoli terjesztővel konfigurál egy közzétevőt, a rendszer az összes paraméterhez megadott értéket, beleértve a job_login és job_password, egyszerű szövegként küldi el a terjesztőnek. A tárolt eljárás végrehajtása előtt titkosítania kell a Publisher és a távoli terjesztő közötti kapcsolatot. További információ: Titkosított kapcsolatok engedélyezése az adatbázismotorhoz (SQL Server Konfigurációkezelő)
Cikkek hozzáadása a kiadványhoz. További információ: Cikk definiálása.
Indítsa el a Snapshot Agent feladatot a kiadvány kezdeti pillanatképének létrehozásához. További információ: A kezdeti pillanatkép létrehozása és alkalmazása.
Példa (Transact-SQL)
Ez a példa egy tranzakciós kiadványt hoz létre. A szkriptváltozók segítségével átadják a Windows hitelesítéseket, amelyek a Snapshot Agent és a Log Reader Agent feladatainak létrehozásához szükségesek.
-- 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
Ez a példa egy egyesítéses közzétételt hoz létre. A szkriptváltozókat arra használják, hogy átadják a Windows igazolványokat, amelyek szükségesek a Snapshot Agent feladatának létrehozásához.
-- 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'AdventureWorks2022';
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 [AdventureWorks2022]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2022.',
@publication_compatibility_level = N'120RTM';
-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
GO
Használj replikációs menedzsment objektumokat (RMO)
Programozott módon is létrehozhatsz publikációkat Replikációs Menedzsment Objektumok (RMO) használatával. Az RMO osztályok, amelyeket a kiadvány létrehozásához használsz, attól függnek, milyen típusú kiadványt készítesz.
Készíts egy pillanatképet vagy tranzakciós publikációt
Hozzon létre kapcsolatot a Publisherrel az ServerConnection osztály használatával.
Hozz létre egy példányt az ReplicationDatabase osztályból a publikációs adatbázishoz, állítsuk be a ConnectionContext tulajdonságot az 1. lépésből származó példányra, ServerConnection és hívjuk meg a LoadProperties metódust. Ha LoadProperties visszaadja
falseaz adatokat, ellenőrizd, hogy az adatbázis létezik-e.Ha a EnabledTransPublishing tulajdonság értéke
false, állítsatrueértékre.Tranzakciós publikációhoz ellenőrizd az ingatlan értékét LogReaderAgentExists . Ha ez a
truetulajdonság , akkor már létezik egy Log Read Agent feladat ehhez az adatbázishoz. Ha ez a tulajdonságfalse, tegye a következőket:Állítsd be az Login és Password mezőketLogReaderAgentProcessSecurity, hogy megadják a Microsoft Windows fiók hitelesítéseit, amelyen a Log Reader Agent fut.
Note
Beállítás LogReaderAgentProcessSecurity nem szükséges, ha a kiadványt a rendszergazdi fix szerver tagja hozza létre. Ebben az esetben az ügynök megszemélyesíti az SQL Server Agent-fiókot. További információ: Replikációs ügynök biztonsági modellje.
(Nem kötelező) Állítsa be a LogReaderAgentPublisherSecuritySqlStandardLogin és SqlStandardPassword vagy SecureSqlStandardPassword mezőit, amikor SQL Server-hitelesítést használ a Publisherhez való csatlakozáshoz.
Hívd meg a CreateLogReaderAgent metódust, hogy létrehozza a Log Reader Agent feladatot az adatbázishoz.
Hozz létre egy példányt az TransPublication osztályból, és állítsuk be az alábbi tulajdonságokat ehhez az objektumhoz:
Az 1. lépésben szereplő ServerConnection ehhez: ConnectionContext.
A(z) DatabaseName számára közzétett adatbázis neve.
A Name kiadvány neve.
A
Type(ami típus PublicationType) vagy TransactionalSnapshot.A Login és Password mezők SnapshotGenerationAgentProcessSecurity megadják a Windows fiók hitelesítéseit, amelyen a Snapshot Agent fut. Ezt a fiókot akkor is használják, amikor a Snapshot Agent csatlakozik a helyi forgalmazóhoz, illetve távoli kapcsolatokhoz Windows hitelesítés esetén.
Note
Beállítás SnapshotGenerationAgentProcessSecurity nem szükséges, ha a kiadványt a rendszergazdi fix szerver tagja hozza létre. Ebben az esetben az ügynök megszemélyesíti az SQL Server Agent-fiókot. További információ: Replikációs ügynök biztonsági modellje.
(Nem kötelező) A SnapshotGenerationAgentPublisherSecuritySqlStandardLogin, SqlStandardPassword vagy SecureSqlStandardPassword mezői, amikor SQL Server-hitelesítést használ a Publisherhez való csatlakozáshoz.
(Opcionális) Használd az inkluzív logikai OR operátort (
|a Visual C#-ban ésOra Visual Basic-ban) és az exkluzív logikai OR operátort (^a Visual C#-ban ésXora Visual Basic-ben) a tulajdonság értékeinek Attributes beállításáhozPublicationAttributes.(Nem kötelező) A(z) PublisherName Publisher neve, ha a Publisher nem SQL Server Publisher.
A kiadvány létrehozásához hívd meg a(z) Create metódust.
Important
Amikor egy Publishert távoli Distributorral konfigurálunk, az összes tulajdonsághoz megadott értéket, beleértve a(z) SnapshotGenerationAgentProcessSecurity elemet is, sima szövegként küldi el a rendszer a Distributornak. A metódus meghívása előtt titkosítania kell a Publisher és a Create távoli terjesztő közötti kapcsolatot. További információ: Titkosított kapcsolatok engedélyezése az adatbázismotorhoz (SQL Server Konfigurációkezelő)
Hívd a CreateSnapshotAgent metódust, amellyel létrehozhatod a Snapshot Agent állást a publikációhoz.
Létrehozz egy összeolvasztott kiadványt
Hozzon létre kapcsolatot a Publisherrel az ServerConnection osztály használatával.
Hozz létre egy példányt az ReplicationDatabase osztályból a publikációs adatbázishoz, állítsuk be a ConnectionContext tulajdonságot az 1. lépésből származó példányra, ServerConnection és hívjuk meg a LoadProperties metódust. Ha LoadProperties visszaadja
falseaz adatokat, ellenőrizd, hogy az adatbázis létezik-e.Ha a(z) EnabledMergePublishing tulajdonság értéke
false, állítsatrueértékre, és hívja meg a(z) CommitPropertyChanges elemet.Hozz létre egy példányt az MergePublication osztályból, és állítsuk be az alábbi tulajdonságokat ehhez az objektumhoz:
A(z) ServerConnection az 1. lépésben a(z) ConnectionContext esetében.
A(z) DatabaseName számára közzétett adatbázis neve.
A Name kiadvány neve.
A Login és Password mezők SnapshotGenerationAgentProcessSecurity megadják a Windows fiók hitelesítéseit, amelyen a Snapshot Agent fut. Ezt a fiókot akkor is használják, amikor a Snapshot Agent csatlakozik a helyi forgalmazóhoz, illetve távoli kapcsolatokhoz Windows hitelesítés esetén.
Note
Beállítás SnapshotGenerationAgentProcessSecurity nem szükséges, ha a kiadványt a rendszergazdi fix szerver tagja hozza létre. További információ: Replikációs ügynök biztonsági modellje.
(Opcionális) Használd az inkluzív logikai OR operátort (
|a Visual C#-ban ésOra Visual Basic-ban) és az exkluzív logikai OR operátort (^a Visual C#-ban ésXora Visual Basic-ben) a tulajdonság értékeinek Attributes beállításáhozPublicationAttributes.
Hívja meg a Create metódust a kiadvány létrehozásához.
Important
Amikor egy Publishert távoli Distributor használatával konfigurál, az összes tulajdonsághoz megadott értéket, beleértve a(z) SnapshotGenerationAgentProcessSecurity értékét is, egyszerű szövegként elküldi a Distributornak. A metódus meghívása előtt titkosítania kell a Publisher és a Create távoli terjesztő közötti kapcsolatot. További információ: Titkosított kapcsolatok engedélyezése az adatbázismotorhoz (SQL Server Konfigurációkezelő)
Hívd a CreateSnapshotAgent metódust, amellyel létrehozhatod a Snapshot Agent állást a publikációhoz.
Példák (RMO)
Ez a példa lehetővé teszi az AdventureWorks adatbázis tranzakciós kiadását, definiálja a Log Reader Agent feladatot, és létrehozza a AdvWorksProductTran kiadványt. Ehhez a kiadványhoz egy cikket kell meghatározni. A Windows fiók hitelesítő adatai, amelyek a Log Reader Agent és a Snapshot Agent munka létrehozásához szükségesek, futásidőben adják át. Az RMO használatával a snapshot és tranzakciós cikkelyek meghatározásához lásd a Define an Article-t (Definiál egy cikket).
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
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 AdventureWorks2022 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 = "AdventureWorks2022"
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 AdventureWorks2022 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
Ez a példa lehetővé teszi az AdventureWorks adatbázis merge kiadását, és létrehozza a AdvWorksSalesOrdersMerge kiadványt. A cikkeket továbbra is meg kell határozni ehhez a kiadványhoz. A Windows fiók hitelesítő adatai, amelyek a Snapshot Agent feladat létrehozásához szükségesek, futásidőben kerülnek átadásra. Az RMO merge-cikkek definiálására való használatáról lásd: Cikk definiálása.
// Set the Publisher, publication database, and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
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 = "AdventureWorks2022"
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