Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается настройка публикации и распространения в SQL Server 2014 с помощью SQL Server Management Studio, Transact-SQL или объектов управления репликацией (RMO).
Перед началом работы
Безопасность
Дополнительные сведения см. в разделе "Безопасное развертывание репликации".
Использование среды SQL Server Management Studio
Настройте распределение с помощью мастера создания публикаций или мастера настройки распространения. После настройки распространителя просмотрите и измените свойства в диалоговом окне "Свойства распространителя - <распространитель> ". Используйте мастер настройки распространителя, чтобы члены предопределенных ролей базы данных db_owner могли создавать публикации или настраивать удаленный распространитель, который не является издателем.
Настройка распределения
В Microsoft SQL Server Management Studio подключитесь к серверу, который будет распространителем (во многих случаях издатель и распространитель являются одинаковым сервером), а затем разверните узел сервера.
Щелкните правой кнопкой мыши папку репликации и нажмите кнопку "Настроить распределение".
Следуйте инструкциям мастера настройки распространения, чтобы:
Выберите распространитель. Чтобы использовать локальный распространитель, выберите "<Имя сервера>" будет выступать в качестве собственного распространителя; SQL Server создаст базу данных распространителя и журнал. Чтобы использовать удаленный распространитель, выберите "Использовать следующий сервер в качестве распространителя" и выберите сервер. Сервер уже должен быть настроен как Дистрибутор, а издатель должен быть активирован для использования Дистрибутора. Дополнительные сведения см. в разделе "Включение удаленного издателя" на распространителе (SQL Server Management Studio).
При выборе удаленного распространителя необходимо ввести пароль на странице "Административный пароль" для подключений издателя к распространителю. Этот пароль должен совпадать с паролем, указанным при включении издателя на удаленном распределителе.
Укажите корневую папку моментальных снимков (для локального Дистрибьютора). Папка моментального снимка — это просто каталог, который вы назначили общим ресурсом; программы, использующие эту папку, должны иметь достаточные разрешения на доступ к ней для считывания и записи. Каждый издатель, использующий этого распространителя, создает папку в корневой папке, и каждая публикация создает папки в папке издателя для хранения файлов моментальных снимков. Дополнительные сведения о защите папки см. в разделе "Защита папки моментального снимка".
Укажите базу данных распространителя (для локального распространителя). База данных распространения хранит метаданные и данные истории для всех типов репликации и транзакций для транзакционной репликации.
При необходимости можно разрешить другим издателям использовать распространитель. Если другим издателям разрешено использовать распространителя, необходимо ввести пароль на странице Пароль распространителя для подключений, осуществляемых этими издателями к распространителю.
Параметры настройки скрипта, которые можно задать при необходимости. Дополнительные сведения см. в разделе Scripting Replication.
Использование Transact-SQL
Публикацию и распространение репликации можно настроить программным способом с помощью хранимых процедур репликации.
Настройка публикации с помощью локального распространителя
Выполните sp_get_distributor (Transact-SQL), чтобы определить, настроен ли сервер в качестве распространителя.
Если значение установлен в результирующем наборе равно 0, выполните sp_adddistributor (Transact-SQL) на распространителе в базе данных master.
Если значение базы данных распространителя, установленной в результирующем наборе, равно 0, выполните sp_adddistributiondb (Transact-SQL) на распространитете в базе данных master. Укажите имя базы данных распространителя для @database. При необходимости можно указать максимальный срок хранения транзакций для @max_distretention и период хранения журнала для @history_retention. Если создается новая база данных, укажите нужные параметры свойства базы данных.
На распространителе, который также является издателем, выполните sp_adddistpublisher (Transact-SQL), указав общую папку UNC, которая будет использоваться в качестве папки моментальных снимков по умолчанию для @working_directory.
На издателе выполните sp_replicationdboption (Transact-SQL). Укажите базу данных, опубликованную для @dbname, тип репликации для @optname и значение
trueдля @value.
Настройка публикации с помощью удаленного распространителя
Выполните sp_get_distributor (Transact-SQL), чтобы определить, настроен ли сервер в качестве распространителя.
Если значение installed в результирующем наборе равно 0, выполните sp_adddistributor (Transact-SQL) на распространителе в базе данных master. Укажите надежный пароль для @password. Этот пароль для учетной записи distributor_admin будет использоваться издателем при подключении к распространителю.
Если значение базы данных распространителя, установленной в результирующем наборе, равно 0, выполните sp_adddistributiondb (Transact-SQL) на распространитете в базе данных master. Укажите имя базы данных распространителя для @database. При необходимости можно указать максимальный срок хранения транзакций для @max_distretention и период хранения журнала для @history_retention. Если создается новая база данных, укажите нужные параметры свойства базы данных.
На распространителе выполните sp_adddistpublisher (Transact-SQL), указав общую папку UNC, которая будет использоваться в качестве папки моментальных снимков по умолчанию для @working_directory. Если распространитель будет использовать проверку подлинности SQL Server при подключении к издателю, необходимо также указать значение 0 для @security_mode и сведения о входе Microsoft SQL Server для @login и @password.
На публикаторе в базе данных master выполните sp_adddistributor (Transact-SQL). Укажите надежный пароль, используемый на шаге 1 для @password. Этот пароль будет использоваться издателем при подключении к распространителю.
На сервере распространения выполните sp_replicationdboption (Transact-SQL). Укажите базу данных, опубликованную для @dbname, тип репликации для @optname и значение true для @value.
Пример (Transact-SQL)
В следующем примере показано, как программно настроить публикацию и распространение. В этом примере имя сервера, настраиваемого в качестве издателя и локального распространителя, предоставляется с помощью переменных скриптов. Публикацию и распространение репликации можно настроить программным способом с помощью хранимых процедур репликации.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".
-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2012';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks2012 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher,
@distribution_db=@distributionDB,
@security_mode = 1;
GO
Использование объектов управления репликацией (RMO)
Настройка публикации и распространения на одном сервере
Создайте подключение к серверу с помощью ServerConnection класса.
Создайте экземпляр класса ReplicationServer. Передайте объект ServerConnection , созданный на шаге 1.
Создайте экземпляр класса DistributionDatabase.
Задайте для свойства Name имя базы данных и для свойства ConnectionContext значение из ServerConnection, полученное на шаге 1.
Установите распространитель, вызвав метод InstallDistributor. DistributionDatabase Передайте объект из шага 3.
Создайте экземпляр класса DistributionPublisher.
Задайте следующие свойства DistributionPublisher:
Name — имя издателя.
ConnectionContext — элемент ServerConnection из шага 1.
DistributionDatabase — имя базы данных, созданной на шаге 5.
WorkingDirectory — общий ресурс, используемый для доступа к файлам моментальных снимков.
PublisherSecurity — режим безопасности, используемый при подключении к издателю. WindowsAuthentication рекомендуется.
Вызовите метод Create .
Настройка публикации и распространения с помощью удаленного распространителя
Создайте подключение к удаленному серверу распространителя с помощью ServerConnection класса.
Создайте экземпляр класса ReplicationServer. Передайте объект ServerConnection , созданный на шаге 1.
Создайте экземпляр класса DistributionDatabase.
Установите значение свойства Name на имя базы данных и значение свойства ConnectionContext на ServerConnection, полученное на шаге 1.
Установите дистрибьютор, вызвав метод InstallDistributor. Укажите безопасный пароль (используемый издателем при подключении к удаленному распространителю) и DistributionDatabase объект из шага 3. Дополнительные сведения см. в разделе Организация безопасности распространителя.
Это важно
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если необходимо сохранить учетные данные, используйте криптографические службы, предоставляемые microsoft Windows платформа .NET Framework.
Создайте экземпляр класса DistributionPublisher.
Задайте следующие свойства DistributionPublisher:
Name — имя локального сервера издателя.
ConnectionContext — это ServerConnection из шага 1.
DistributionDatabase — имя базы данных, созданной на шаге 5.
WorkingDirectory — общий ресурс, используемый для доступа к файлам моментальных снимков.
PublisherSecurity — режим безопасности, используемый при подключении к издателю. WindowsAuthentication рекомендуется.
Вызовите метод Create .
Создайте подключение к локальному серверу издателя с помощью ServerConnection класса.
Создайте экземпляр класса ReplicationServer. Передайте ServerConnection из шага 9.
Вызовите метод InstallDistributor . Передайте имя удаленного распространителя и пароль для удаленного распространителя, указанного на шаге 5.
Это важно
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если необходимо сохранить учетные данные, используйте службы шифрования , предоставляемые Windows .NET Framework.
Пример (объекты RMO)
Вы можете программно настроить публикацию и распространение репликации с помощью объектов управления репликацией (RMO).
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2012";
DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;
// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the server acting as the Distributor
// and local Publisher.
conn.Connect();
// Define the distribution database at the Distributor,
// but do not create it now.
distributionDb = new DistributionDatabase(distributionDbName, conn);
distributionDb.MaxDistributionRetention = 96;
distributionDb.HistoryRetention = 120;
// Set the Distributor properties and install the Distributor.
// This also creates the specified distribution database.
distributor = new ReplicationServer(conn);
distributor.InstallDistributor((string)null, distributionDb);
// Set the Publisher properties and install the Publisher.
publisher = new DistributionPublisher(publisherName, conn);
publisher.DistributionDatabase = distributionDb.Name;
publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
publisher.PublisherSecurity.WindowsAuthentication = true;
publisher.Create();
// Enable AdventureWorks2012 as a publication database.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
publicationDb.EnabledTransPublishing = true;
publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
}
finally
{
conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2012"
Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase
' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the server acting as the Distributor
' and local Publisher.
conn.Connect()
' Define the distribution database at the Distributor,
' but do not create it now.
distributionDb = New DistributionDatabase(distributionDbName, conn)
distributionDb.MaxDistributionRetention = 96
distributionDb.HistoryRetention = 120
' Set the Distributor properties and install the Distributor.
' This also creates the specified distribution database.
distributor = New ReplicationServer(conn)
distributor.InstallDistributor((CType(Nothing, String)), distributionDb)
' Set the Publisher properties and install the Publisher.
publisher = New DistributionPublisher(publisherName, conn)
publisher.DistributionDatabase = distributionDb.Name
publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
publisher.PublisherSecurity.WindowsAuthentication = True
publisher.Create()
' Enable AdventureWorks2012 as a publication database.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
publicationDb.EnabledTransPublishing = True
publicationDb.EnabledMergePublishing = True
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)
Finally
conn.Disconnect()
End Try
См. также
Просмотр и изменение свойств издателя и распространителя
Основные понятия хранимых процедур системы репликации
Настройка распространения
Концепции объектов управления репликацией
Настройка репликации для групп доступности AlwaysOn (SQL Server)