게시자 및 배포자 속성 보기 및 수정View and Modify Distributor and Publisher Properties

이 항목에서는 SQL Server 2017SQL Server 2017 , SQL Server Management StudioSQL Server Management Studio또는 RMO(복제 관리 개체)를 사용하여 Transact-SQLTransact-SQL에서 배포자 및 게시자 속성을 보고 수정하는 방법에 대해 설명합니다.This topic describes how to view and modify Distributor and Publisher properties in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

권장 사항 Recommendations

  • MicrosoftMicrosoft SQL Server 2005SQL Server 2005이전 버전을 실행하는 게시자의 경우 sysadmin 고정 서버 역할의 사용자는 구독자 페이지에서 구독자를 등록할 수 있습니다.For Publishers running versions prior to MicrosoftMicrosoft SQL Server 2005SQL Server 2005, a user in the sysadmin fixed server role can register Subscribers on the Subscribers page. SQL Server 2005SQL Server 2005부터는 더 이상 복제에 대해 구독자를 명시적으로 등록하지 않아도 됩니다.Beginning with SQL Server 2005SQL Server 2005, it is no longer necessary to explicitly register Subscribers for replication.

보안 Security

가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다.When possible, prompt users to enter security credentials at runtime.

SQL Server Management Studio 사용 Using SQL Server Management Studio

배포자 속성을 보고 수정하려면To view and modify Distributor properties

  1. SQL Server Management StudioSQL Server Management Studio에서 배포자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Distributor in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. 복제 폴더를 마우스 오른쪽 단추로 클릭한 다음 배포자 속성을 클릭합니다.Right-click the Replication folder, and then click Distributor Properties.

  3. 배포자 속성 - <Distributor> 대화 상자에서 속성을 보고 수정합니다.View and modify properties in the Distributor Properties - <Distributor> dialog box.

    • 배포 데이터베이스의 속성을 보고 수정하려면 대화 상자의 일반 페이지에서 해당 데이터베이스에 대한 속성 단추(...)를 클릭합니다.To view and modify properties for a distribution database, click the properties button (...) for the database on the General page of thedialog box.

    • 배포자와 관련된 게시자 속성을 보고 수정하려면 대화 상자의게시자페이지에서 해당 게시자에 대한 속성 단추 ( ... )를 클릭합니다.To view and modify Publisher properties associated with the Distributor, click the properties button (...) for the Publisher on the Publishers page of the dialog box.

    • 복제 에이전트에 대한 프로필에 액세스하려면 대화 상자의 일반 페이지에서 프로필 기본값 단추를 클릭합니다.To access profiles for replication agents, click the Profile Defaults button on the General page of the dialog box. 자세한 내용은 Replication Agent Profiles을 참조하세요.For more information, see Replication Agent Profiles.

    • 관리 저장 프로시저가 게시자에서 실행되고 배포자에서 정보를 업데이트할 때 사용되는 계정의 암호를 변경하려면 대화 상자의 게시자 페이지에서 암호암호 확인 상자에 새 암호를 입력합니다.To change the password for the account used when administrative stored procedures execute at the Publisher and update information at the Distributor, enter a new password in the Password and Confirm password boxes on the Publishers page of the dialog box. 자세한 내용은 배포자 보안 설정을 참조하세요.For more information, see Secure the Distributor.

  4. 필요한 경우 속성을 수정한 다음 확인을 클릭합니다.Modify any properties if necessary, and then click OK.

게시자 속성을 보고 수정하려면To view and modify Publisher properties

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. 복제 폴더를 마우스 오른쪽 단추로 클릭한 다음 게시자 속성을 클릭합니다.Right-click the Replication folder, and then click Publisher Properties.

  3. 게시자 속성 - < Publisher > 대화 상자에서 속성을 보고 수정합니다.View and modify properties in the Publisher Properties - < Publisher > dialog box.

    • sysadmin 고정 서버 역할의 사용자는 게시 데이터베이스 페이지에서 복제에 사용할 데이터베이스를 설정할 수 있습니다.A user in the sysadmin fixed server role can enable databases for replication on the Publication Databases page. 데이터베이스를 설정한다고 해서 그 데이터베이스가 게시되는 것은 아닙니다. 데이터베이스를 설정하면 설정된 데이터베이스에 대한 db_owner 고정 데이터베이스 역할의 사용자가 그 데이터베이스에 하나 이상의 게시를 만들 수 있습니다.Enabling a database does not publish that database; rather, it allows any user in the db_owner fixed database role for that database to create one or more publications in the database.
  4. 필요한 경우 속성을 수정한 다음 확인을 클릭합니다.Modify any properties if necessary, and then click OK.

Transact-SQL 사용 Using Transact-SQL

복제 저장 프로시저를 사용하여 프로그래밍 방식으로 게시자와 배포자 속성을 볼 수 있습니다.Publisher and Distributor properties can be viewed programmatically using replication stored procedures.

배포자 및 배포 데이터베이스 속성을 보려면To view Distributor and distribution database properties

  1. 배포자, 배포 데이터베이스 및 작업 디렉터리에 대한 정보를 반환하려면 sp_helpdistributor 를 실행합니다.Execute sp_helpdistributor to return information about the Distributor, distribution database, and working directory.

  2. 지정한 배포 데이터베이스에 대한 속성을 반환하려면 sp_helpdistributiondb 를 실행합니다.Execute sp_helpdistributiondb to return properties of a specified distribution database.

배포자 및 배포 데이터베이스 속성을 변경하려면To change Distributor and distribution database properties

  1. 배포자 속성을 수정하려면 배포자에서 sp_changedistributor_property 를 실행합니다.At the Distributor, execute sp_changedistributor_property to modify Distributor properties.

  2. 배포자 데이터베이스 속성을 수정하려면 배포자에서 sp_changedistributiondb 를 실행합니다.At the Distributor, execute sp_changedistributiondb to modify distribution database properties.

  3. 배포자 암호를 변경하려면 배포자에서 sp_changedistributor_password 를 실행합니다.At the Distributor, execute sp_changedistributor_password to change the Distributor password.

    중요

    가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다.When possible, prompt users to enter security credentials at runtime. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정하세요.If you must store credentials in a script file, secure the file to prevent unauthorized access.

  4. 배포자를 사용하는 게시자의 속성을 변경하려면 배포자에서 sp_changedistpublisher 를 실행합니다.At the Distributor, execute sp_changedistpublisher to change the properties of a Publisher using the Distributor.

예(Transact-SQL) Examples (Transact-SQL)

다음 Transact-SQLTransact-SQL 스크립트 예에서는 배포자와 배포자 데이터베이스에 대한 정보를 반환합니다.The following example Transact-SQLTransact-SQL script returns information about the Distributor and distribution database.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO

-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

다음 예에서는 배포자의 보존 기간, 배포자에 연결할 때 사용되는 암호, 배포자가 여러 복제 에이전트의 상태를 확인하는 간격(하트비트 간격이라고도 함)을 변경합니다.This example changes retention periods for the Distributor, the password used when connecting to the Distributor, and the interval at which the Distributor checks the status of various replication agents (also known as the heartbeat interval).

중요

가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다.When possible, prompt users to enter security credentials at runtime. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정하세요.If you must store credentials in a script file, secure the file to prevent unauthorized access.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO

-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO

DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO 
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO 

-- Change the password on the Distributor. 
-- To avoid storing the 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO
-- Change the password on the Distributor. 
-- To avoid storing the 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO

RMO(복제 관리 개체) 사용 Using Replication Management Objects (RMO)

배포자 속성을 보고 수정하려면To view and modify Distributor properties

  1. ServerConnection 클래스를 사용하여 배포자 연결을 만듭니다.Create a connection to the Distributor by using the ServerConnection class.

  2. ReplicationServer 클래스의 인스턴스를 만듭니다.Create an instance of the ReplicationServer class. 1단계에서 만든 ServerConnection 개체를 전달합니다.Pass the ServerConnection object from step 1.

  3. (옵션) IsDistributor 속성에서 현재 연결된 서버가 배포자인지 확인합니다.(Optional) Check the IsDistributor property to verify that the currently connected server is a Distributor.

  4. Load 메서드를 호출하여 서버에서 속성을 가져옵니다.Call the Load method to get the properties from the server.

  5. (옵션) 속성을 변경하려면 ReplicationServer 개체에 설정할 수 있는 하나 이상의 배포자 속성에 새 값을 설정합니다.(Optional) To change properties, set a new value for one or more of the Distributor properties that can be set on the ReplicationServer object.

  6. (옵션) CachePropertyChanges 개체의 ReplicationServer 속성이 true로 설정되면 CommitPropertyChanges 메서드를 호출하여 서버의 변경 내용을 커밋합니다.(Optional) If the CachePropertyChanges property on the ReplicationServer object is set to true, call the CommitPropertyChanges method to commit the changes to the server.

배포 데이터베이스 속성을 보고 수정하려면To view and modify distribution database properties

  1. ServerConnection 클래스를 사용하여 배포자 연결을 만듭니다.Create a connection to the Distributor by using the ServerConnection class.

  2. DistributionDatabase 클래스의 인스턴스를 만듭니다.Create an instance of the DistributionDatabase class. 이름 속성을 지정하고 1단계에서 만든 ServerConnection 개체를 전달합니다.Specify the name property and pass the ServerConnection object from step 1.

  3. LoadProperties 메서드를 호출하여 서버에서 속성을 가져옵니다.Call the LoadProperties method to get the properties from the server. 이 메서드가 false를 반환하는 경우 지정된 이름의 데이터베이스가 서버에 없는 것입니다.If this method returns false, the database with the specified name does not exist on the server.

  4. (옵션) 속성을 변경하려면 설정할 수 있는 DistributionDatabase 속성 중 하나에 대해 새 값을 설정합니다.(Optional) To change properties, set a new value for one of the DistributionDatabase properties that can be set.

  5. (옵션) CachePropertyChanges 개체의 DistributionDatabase 속성이 true로 설정되면 CommitPropertyChanges 메서드를 호출하여 서버의 변경 내용을 커밋합니다.(Optional) If the CachePropertyChanges property on the DistributionDatabase object is set to true, call the CommitPropertyChanges method to commit the changes to the server.

게시자 속성을 보고 수정하려면To view and modify Publisher properties

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

  2. DistributionPublisher 클래스의 인스턴스를 만듭니다.Create an instance of the DistributionPublisher class. Name 속성을 지정하고 1단계에서 만든 ServerConnection 개체를 전달합니다.Specify the Name property and pass the ServerConnection object from step 1.

  3. (옵션) 속성을 변경하려면 설정할 수 있는 DistributionPublisher 속성 중 하나에 대해 새 값을 설정합니다.(Optional) To change properties, set a new value for one of the DistributionPublisher properties that can be set.

  4. (옵션) CachePropertyChanges 개체의 DistributionPublisher 속성이 true로 설정되면 CommitPropertyChanges 메서드를 호출하여 서버의 변경 내용을 커밋합니다.(Optional) If the CachePropertyChanges property on the DistributionPublisher object is set to true, call the CommitPropertyChanges method to commit the changes to the server.

관리 연결의 암호를 게시자에서 배포자로 변경하려면To change the password for the administrative connection from the Publisher to the Distributor

  1. ServerConnection 클래스를 사용하여 배포자 연결을 만듭니다.Create a connection to the Distributor by using the ServerConnection class.

  2. ReplicationServer 클래스의 인스턴스를 만듭니다.Create an instance of the ReplicationServer class.

  3. ConnectionContext 속성을 1단계에서 만든 연결로 설정합니다.Set the ConnectionContext property to the connection created in step 1.

  4. Load 메서드를 호출하여 개체 속성을 가져옵니다.Call the Load method to get the properties of the object.

  5. ChangeDistributorPassword 메서드를 호출합니다.Call the ChangeDistributorPassword method. password 매개 변수에 대해 새 암호 값을 전달합니다.Pass the new password value for the password parameter.

    중요

    가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다.When possible, prompt users to enter security credentials at runtime. 자격 증명을 저장해야 하는 경우 Windows .NET Framework에서 제공하는 암호화 서비스 MicrosoftMicrosoft 를 사용합니다.If you must store credentials, use the cryptographic services provided by the MicrosoftMicrosoft Windows .NET Framework.

  6. (옵션) 다음 단계를 수행하여 이 배포자를 사용하는 각 원격 게시자에서 암호를 변경합니다.(Optional) Perform the following steps to change the password at each remote Publisher that uses this Distributor:

    1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

    2. ReplicationServer 클래스의 인스턴스를 만듭니다.Create an instance of the ReplicationServer class.

    3. ConnectionContext 속성을 6a단계에서 만든 연결로 설정합니다.Set the ConnectionContext property to the connection created in step 6a.

    4. Load 메서드를 호출하여 개체 속성을 가져옵니다.Call the Load method to get the properties of the object.

    5. ChangeDistributorPassword 메서드를 호출합니다.Call the ChangeDistributorPassword method. password 매개 변수에 대해 5단계에서 만든 새 암호 값을 전달합니다.Pass the new password value from Step 5 for the password parameter.

예(RMO) Example (RMO)

이 예에서는 배포 및 배포 데이터베이스 속성을 변경하는 방법을 보여 줍니다.This example shows how to change Distribution and distribution database properties.

중요

자격 증명을 코드에 저장하지 않도록 런타임에 새 배포자 암호가 제공됩니다.To avoid storing credentials in the code, the new Distributor password is supplied at runtime.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(distributorName);

try
{
	// Open the connection. 
	conn.Connect();

	distributor = new ReplicationServer(conn);

	// Load Distributor properties, if it is installed.
	if (distributor.LoadProperties())
	{
		// Password supplied at runtime.
		distributor.ChangeDistributorPassword(password);
		distributor.AgentCheckupInterval = 5;

		// Save changes to the Distributor properties.
		distributor.CommitPropertyChanges();
	}
	else
	{
		throw new ApplicationException(
			String.Format("{0} is not a Distributor.", publisherInstance));
	}

	// Create an object for the distribution database 
	// using the open Distributor connection.
	distributionDb = new DistributionDatabase(distributionDbName, conn);

	// Change distribution database properties.
	if (distributionDb.LoadProperties())
	{
		// Change maximum retention period to 48 hours and history retention 
		// period to 24 hours.
		distributionDb.MaxDistributionRetention = 48;
		distributionDb.HistoryRetention = 24;

		// Save changes to the distribution database properties.
		distributionDb.CommitPropertyChanges();
	}
	else
	{
		// Do something here if the distribution database does not exist.
	}
}
catch (Exception ex)
{
	// Implement the appropriate error handling here. 
	throw new ApplicationException("An error occured when changing Distributor " +
		" or distribution database properties.", ex);
}
finally
{
	conn.Disconnect();
}
// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(distributorName);

try
{
	// Open the connection. 
	conn.Connect();

	distributor = new ReplicationServer(conn);

	// Load Distributor properties, if it is installed.
	if (distributor.LoadProperties())
	{
		// Password supplied at runtime.
		distributor.ChangeDistributorPassword(password);
		distributor.AgentCheckupInterval = 5;

		// Save changes to the Distributor properties.
		distributor.CommitPropertyChanges();
	}
	else
	{
		throw new ApplicationException(
			String.Format("{0} is not a Distributor.", publisherInstance));
	}

	// Create an object for the distribution database 
	// using the open Distributor connection.
	distributionDb = new DistributionDatabase(distributionDbName, conn);

	// Change distribution database properties.
	if (distributionDb.LoadProperties())
	{
		// Change maximum retention period to 48 hours and history retention 
		// period to 24 hours.
		distributionDb.MaxDistributionRetention = 48;
		distributionDb.HistoryRetention = 24;

		// Save changes to the distribution database properties.
		distributionDb.CommitPropertyChanges();
	}
	else
	{
		// Do something here if the distribution database does not exist.
	}
}
catch (Exception ex)
{
	// Implement the appropriate error handling here. 
	throw new ApplicationException("An error occured when changing Distributor " +
		" or distribution database properties.", ex);
}
finally
{
	conn.Disconnect();
}

' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(distributorName)

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occured when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(distributorName)

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occured when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try

관련 항목:See Also

복제 관리 개체 개념 Replication Management Objects Concepts
게시 및 배포 해제 Disable Publishing and Distribution
배포 구성 Configure Distribution
Replication Management Objects Concepts Replication Management Objects Concepts
배포자 및 게시자 정보 스크립트 Distributor and Publisher Information Script
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
게시자에 대한 정보 보기 및 태스크 수행(복제 모니터)View Information and Perform Tasks for a Publisher (Replication Monitor)