MergePublication 클래스

Represents a merge publication.

네임스페이스:  Microsoft.SqlServer.Replication
어셈블리:  Microsoft.SqlServer.Rmo(Microsoft.SqlServer.Rmo.dll)

public sealed class MergePublication : Publication

MergePublication 유형에서 다음 멤버를 표시합니다.

  이름설명
공용 메서드MergePublication()Creates a new instance of the MergePublication class.
공용 메서드MergePublication(String, String, ServerConnection)Initializes a new instance of the MergePublication class with the specified name, database, and connection to the Publisher.
공용 메서드MergePublication(String, String, ServerConnection, Boolean)Creates an instance of the MergePublication class, specifying whether the Snapshot Agent job should be created by default.
맨 위로 이동

  이름설명
공용 속성AltSnapshotFolderGets or sets the alternate snapshot file location for a publication. (Publication에서 상속됨)
공용 속성AttributesGets or sets the publication attributes. (Publication에서 상속됨)
공용 속성AutomaticReinitializationPolicyGets or sets whether changes at the Publisher are uploaded to the Publisher when a subscription is reinitialized because of a change in the publication.
공용 속성CachePropertyChangesGets or sets whether to cache changes made to the replication properties or to apply them immediately. (ReplicationObject에서 상속됨)
공용 속성CompatibilityLevelGets or sets the earliest version of Microsoft SQL Server that can subscribe to the merge publication. (Publication.CompatibilityLevel을(를) 재정의함)
공용 속성ConflictRetentionGets or sets the number of days that conflict data rows are retained in conflict tables. (Publication에서 상속됨)
공용 속성ConnectionContextGets or sets the connection to an instance of Microsoft SQL Server. (ReplicationObject에서 상속됨)
공용 속성CreateSnapshotAgentByDefaultGets or sets if the Snapshot Agent job is added automatically when the publication is created. (Publication에서 상속됨)
공용 속성DatabaseNameGets or sets the name of the publication database. (Publication에서 상속됨)
공용 속성DescriptionGets or sets a textual description of the publication. (Publication에서 상속됨)
공용 속성FtpAddressGets or sets the address of the File Transfer Protocol (FTP) server computer for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성FtpLoginGets or sets the login that is used to connect to the File Transfer Protocol (FTP) server for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성FtpPasswordSets the password for the login that is used to connect to the File Transfer Protocol (FTP) server for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성FtpPortGets or sets the port of the File Transfer Protocol (FTP) server computer for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성FtpSubdirectoryGets or sets the subdirectory on the File Transfer Protocol (FTP) server computer for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성HasSubscriptionGets whether the publication has one or more subscriptions. (Publication에서 상속됨)
공용 속성IsExistingObjectGets whether the object exists on the server or not. (ReplicationObject에서 상속됨)
공용 속성MaxConcurrentDynamicSnapshotsGets or sets the maximum number of concurrent Snapshot Agent sessions supported when generating data snapshots when the publication has a parameterized row filter.
공용 속성MaxConcurrentMergeGets or sets the maximum number of Merge Agents that can synchronize with the publication concurrently.
공용 속성MergeArticlesGets the existing articles in the merge publication.
공용 속성MergeSubscriptionsGets the subscriptions that belong to a merge publication.
공용 속성NameGets or sets the name of the publication. (Publication에서 상속됨)
공용 속성PartitionGroupsOptionGets or sets whether precomputed partitions should be used to optimize the synchronization process.
공용 속성PostSnapshotScriptGets or sets the name and full path of a Transact-SQL script file that is executed after the initial snapshot is applied to the Subscriber. (Publication에서 상속됨)
공용 속성PreSnapshotScriptGets or sets the name and full path of a Transact-SQL script file that is executed before the initial snapshot is applied to the Subscriber. (Publication에서 상속됨)
공용 속성Priority인프라입니다. Gets the priority of the publication.
공용 속성PubIdGets the value that uniquely identifies the publication. (Publication에서 상속됨)
공용 속성ReplicateDdlGets or sets the data definition language (DDL) replication options that determine if DDL changes are replicated. (Publication에서 상속됨)
공용 속성RetentionPeriodGets or sets the amount of time before a subscription expires when the subscription is not synchronized with the publication. (Publication에서 상속됨)
공용 속성RetentionPeriodUnitGets or sets the unit in which the RetentionPeriodUnit property is expressed.
공용 속성SecureFtpPasswordSets the password (as a SecureString object) for the login used to connect to the File Transfer Protocol (FTP) server for publications that allow subscription initialization over FTP. (Publication에서 상속됨)
공용 속성SnapshotAgentExistsGets if the SQL Server Agent job exists to generate the initial snapshot for this publication. (Publication에서 상속됨)
공용 속성SnapshotAvailableGets or sets a value that indicates whether the snapshot files for this publication have been generated and are available to initialize Subscribers.
공용 속성SnapshotGenerationAgentProcessSecurityGets an object that sets the Windows account under which the Snapshot Agent job runs. (Publication에서 상속됨)
공용 속성SnapshotGenerationAgentPublisherSecurityGets the security context used by the Snapshot Agent to connect to the Publisher. (Publication에서 상속됨)
공용 속성SnapshotJobIdGets the Snapshot Agent job ID for the current publication. (Publication에서 상속됨)
공용 속성SnapshotMethodGets or sets the data file format of the initial snapshot. (Publication에서 상속됨)
공용 속성SnapshotScheduleGets an object that sets the schedule for the Snapshot Agent for the current publication. (Publication에서 상속됨)
공용 속성SqlServerNameGets the name of the Microsoft SQL Server instance to which this object is connected. (ReplicationObject에서 상속됨)
공용 속성StatusGets or sets the status of the publication. (Publication에서 상속됨)
공용 속성TypeGets or sets the type of publication. (Publication에서 상속됨)
공용 속성UserDataGets or sets an object property that allows users to attach their own data to the object. (ReplicationObject에서 상속됨)
공용 속성UsesHostNameGets a value that indicates whether the merge publication has a parameterized row filter that uses the HOST_NAME function to evaluate the partition.
공용 속성ValidateSubscriberInfoGets or sets the functions that are used to define a Subscriber partition of the published data when parameterized row filters are used.
공용 속성WebSynchronizationUrlGets or sets the URL used with Web synchronization.
맨 위로 이동

  이름설명
공용 메서드AddMergeDynamicSnapshotJobAdds a Snapshot Agent job that generates the filtered data partition for a Subscriber when a parameterized row filter is used.
공용 메서드AddMergeDynamicSnapshotJobForLateBoundComClientsEnables late-bound COM clients to add a Snapshot Agent job that generates the filtered data partition for a Subscriber when a parameterized row filter is used.
공용 메서드AddMergePartitionDefines a Subscriber partition for a merge publication with a parameterized row filter.
공용 메서드BrowseSnapshotFolderReturns the complete path of the directory location where snapshot files are generated.
공용 메서드ChangeMergeDynamicSnapshotJobScheduleWithJobIdModifies the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber, based on the job ID.
공용 메서드ChangeMergeDynamicSnapshotJobScheduleWithJobIdForLateBoundComClientsAllows late-bound COM clients to modify the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber, based on the job ID.
공용 메서드ChangeMergeDynamicSnapshotJobScheduleWithJobNameModifies the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber, based on the job name.
공용 메서드ChangeMergeDynamicSnapshotJobScheduleWithJobNameForLateBoundComClientsAllows late-bound COM clients to modify the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber, based on the job name.
공용 메서드CommitPropertyChangesSends all the cached property change statements to the instance of Microsoft SQL Server. (ReplicationObject에서 상속됨)
공용 메서드CopySnapshotCopies the snapshot files for the merge publication from the snapshot folder to a destination folder.
공용 메서드CreateCreates the publication. (Publication에서 상속됨)
공용 메서드CreateSnapshotAgentCreates the SQL Server Agent job that is used to generate the initial snapshot for the publication, if this job does not already exist. (Publication에서 상속됨)
공용 메서드DecoupleDecouples the referenced replication object from the server. (ReplicationObject에서 상속됨)
공용 메서드DisableSynchronizationPartnerDisables the specified synchronization partner for this merge publication.
공용 메서드EnableSynchronizationPartnerEnables a specified synchronization partner for this merge publication.
공용 메서드EnumAllMergeJoinFiltersReturns all the merge join filters defined on the merge publication.
공용 메서드EnumArticlesReturns the articles in the publication. (Publication에서 상속됨)
공용 메서드EnumMergeDynamicSnapshotJobsReturns a list of merge dynamic snapshot jobs.
공용 메서드EnumMergePartitionsReturns the Subscriber partitions defined for this merge publication.
공용 메서드EnumPublicationAccessesReturns logins that have access to the Publisher. (Publication에서 상속됨)
공용 메서드EnumSubscriptionsReturns the subscriptions that subscribe to the publication. (Publication에서 상속됨)
공용 메서드EnumSynchronizationPartnersReturns the alternate synchronization partners for this merge publication.
공용 메서드Equals (Object에서 상속됨)
공용 메서드GenerateFilters인프라입니다. Creates filters of the merge publication.
공용 메서드GetHashCode (Object에서 상속됨)
공용 메서드GetMergeDynamicSnapshotJobScheduleWithJobIdReturns the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber based on the job ID.
공용 메서드GetMergeDynamicSnapshotJobScheduleWithJobNameReturns the schedule for the Snapshot Agent job that generates the filtered data partition for a Subscriber based on the job name.
공용 메서드GetType (Object에서 상속됨)
공용 메서드GrantPublicationAccessAdds the specified login to the publication access list (PAL). (Publication에서 상속됨)
공용 메서드LoadLoads the properties of an existing object from the server. (ReplicationObject에서 상속됨)
공용 메서드LoadPropertiesLoads the properties of an existing object from the server. (ReplicationObject에서 상속됨)
공용 메서드MakePullSubscriptionWellKnownRegisters a merge pull subscription at the Publisher.
공용 메서드ReadLastValidationDateTimesReturns information about the most recent subscription validation for a Subscriber.
공용 메서드RefreshReloads the properties of the object. (ReplicationObject에서 상속됨)
공용 메서드ReinitializeAllSubscriptionsMarks all the subscriptions for reinitialization.
공용 메서드Remove()Removes an existing publication. (Publication에서 상속됨)
공용 메서드Remove(Boolean)Removes an existing publication even if the Distributor cannot be accessed. (Publication에서 상속됨)
공용 메서드RemoveMergeDynamicSnapshotJobRemoves the specified dynamic snapshot job from the merge publication.
공용 메서드RemoveMergePartitionRemoves an existing Subscriber partition defined on the merge publication.
공용 메서드RemovePullSubscriptionRemoves the registration of a Subscriber with a pull subscription to the merge publication.
공용 메서드ReplicateUserDefinedScriptReplicates the execution of a user-defined script to the Subscribers of a specified publication. (Publication에서 상속됨)
공용 메서드ResynchronizeSubscriptionResynchronizes a merge subscription to a known validation state that you specify.
공용 메서드RevokePublicationAccessRemoves the specified login from the publication access list (PAL). (Publication에서 상속됨)
공용 메서드ScriptGenerates a Transact-SQL script that can be used to re-create the publication as specified by the script options. (Publication에서 상속됨)
공용 메서드ScriptMergeDynamicSnapshotJobGenerates a Transact-SQL script that can be used to re-create the Snapshot Agent job that generates a Subscriber's partitioned data snapshot for publications with a parameterized row filter.
공용 메서드ScriptMergePartitionGenerates a Transact-SQL script that can be used to re-create a Subscriber partition for publications with a parameterized row filter.
공용 메서드ScriptPublicationActivationGenerates a Transact-SQL script that, when run, sets the status of a merge publication to active.
공용 메서드StartSnapshotGenerationAgentJobStarts the job that generates the initial snapshot for the publication. (Publication에서 상속됨)
공용 메서드StopSnapshotGenerationAgentJobAttempts to stop a running Snapshot Agent job. (Publication에서 상속됨)
공용 메서드ToString (Object에서 상속됨)
공용 메서드ValidatePublicationMarks all subscriptions for validation during the next synchronization.
공용 메서드ValidateSubscriptionMarks the specified subscription for validation during the next synchronization.
맨 위로 이동

Thread Safety

Any public static (Shared in Microsoft Visual Basic) members of this type are safe for multithreaded operations. Any instance members are not guaranteed to be thread safe.

This example creates a merge publication.

			// 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

This example changes the properties of a merge publication.

			// Define the server, database, and publication names
			string publisherName = publisherInstance;
			string publicationName = "AdvWorksSalesOrdersMerge";
			string publicationDbName = "AdventureWorks2012";

			MergePublication publication;

			// Create a connection to the Publisher.
			ServerConnection conn = new ServerConnection(publisherName);

			try
			{
				// Connect to the Publisher.
				conn.Connect();

				// Set the required properties for the publication.
				publication = new MergePublication();
				publication.ConnectionContext = conn;
				publication.Name = publicationName;
				publication.DatabaseName = publicationDbName;


				// If we can't get the properties for this merge publication, then throw an application exception.
				if (publication.LoadProperties())
				{
					// If DDL replication is currently enabled, disable it.
					if (publication.ReplicateDdl == DdlReplicationOptions.All)
					{
						publication.ReplicateDdl = DdlReplicationOptions.None;
					}
					else
					{
						publication.ReplicateDdl = DdlReplicationOptions.All;
					}
				}
				else
				{
					throw new ApplicationException(String.Format(
						"Settings could not be retrieved for the publication. " +
						"Ensure that the publication {0} exists on {1}.",
						publicationName, publisherName));
				}
			}
			catch (Exception ex)
			{
				// Do error handling here.
				throw new ApplicationException(
					"The publication property could not be changed.", ex);
			}
			finally
			{
				conn.Disconnect();
			}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' If DDL replication is currently enabled, disable it.
        If publication.ReplicateDdl = DdlReplicationOptions.All Then
            publication.ReplicateDdl = DdlReplicationOptions.None
        Else
            publication.ReplicateDdl = DdlReplicationOptions.All
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
        "The publication property could not be changed.", ex)
Finally
    conn.Disconnect()
End Try

This example deletes a merge publication.

			// Define the Publisher, publication database, 
			// and publication names.
			string publisherName = publisherInstance;
			string publicationName = "AdvWorksSalesOrdersMerge";
			string publicationDbName = "AdventureWorks2012";

			MergePublication publication;
			ReplicationDatabase publicationDb;

			// Create a connection to the Publisher.
			ServerConnection conn = new ServerConnection(publisherName);

			try
			{
				// Connect to the Publisher.
				conn.Connect();

				// Set the required properties for the merge publication.
				publication = new MergePublication();
				publication.ConnectionContext = conn;
				publication.Name = publicationName;
				publication.DatabaseName = publicationDbName;

				// Delete the publication, if it exists and has no subscriptions.
				if (publication.LoadProperties() && !publication.HasSubscription)
				{
					publication.Remove();
				}
				else
				{
					// Do something here if the publication does not exist
					// or has subscriptions.
					throw new ApplicationException(String.Format(
						"The publication {0} could not be deleted. " +
						"Ensure that the publication exists and that all " +
						"subscriptions have been deleted.",
						publicationName, publisherName));
				}

				// If no other merge publications exists,
				// disable publishing on the database.
				publicationDb = new ReplicationDatabase(publicationDbName, conn);
				if (publicationDb.LoadProperties())
				{
					if (publicationDb.MergePublications.Count == 0 && publicationDb.EnabledMergePublishing)
					{
						publicationDb.EnabledMergePublishing = false;
					}
				}
				else
				{
					// Do something here if the database does not exist.
					throw new ApplicationException(String.Format(
						"The database {0} does not exist on {1}.",
						publicationDbName, publisherName));
				}
			}
			catch (Exception ex)
			{
				// Implement application error handling here.
				throw new ApplicationException(String.Format(
					"The publication {0} could not be deleted.",
					publicationName), ex);
			}
			finally
			{
				conn.Disconnect();
			}
' Define the Publisher, publication database, 
' and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As MergePublication
Dim publicationDb As ReplicationDatabase

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the merge publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Delete the publication, if it exists and has no subscriptions.
    If (publication.LoadProperties() And Not publication.HasSubscription) Then
        publication.Remove()
    Else
        ' Do something here if the publication does not exist
        ' or has subscriptions.
        Throw New ApplicationException(String.Format( _
         "The publication {0} could not be deleted. " + _
         "Ensure that the publication exists and that all " + _
         "subscriptions have been deleted.", _
         publicationName, publisherName))
    End If

    ' If no other merge publications exists,
    ' disable publishing on the database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)
    If publicationDb.LoadProperties() Then
        If publicationDb.MergePublications.Count = 0 _
        And publicationDb.EnabledMergePublishing Then
            publicationDb.EnabledMergePublishing = False
        End If
    Else
        ' Do something here if the database does not exist.
        Throw New ApplicationException(String.Format( _
         "The database {0} does not exist on {1}.", _
         publicationDbName, publisherName))
    End If
Catch ex As Exception
    ' Implement application error handling here.
    Throw New ApplicationException(String.Format( _
     "The publication {0} could not be deleted.", _
     publicationName), ex)
Finally
    conn.Disconnect()
End Try

이 유형의 모든 공용 static(Visual Basic에서는 Shared) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전성이 보장되지 않습니다.

커뮤니티 추가 항목

추가
표시: