SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |

How to: Replication

ПУБЛИКАЦИИ  

По материалам статьи Paul Ibison How to: Replication
Перевод Ирины Наумовой

В статье представлены рекомендации по общим вопросам организации репликации баз данных SQL Server 2000, а также предлагаются варианты разрешения некоторых ошибочных ситуаций, связанных с репликацией.

СОДЕРЖАНИЕ

РЕКОМЕНДАЦИИ

СООБЩЕНИЯ ОБ ОШИБКАХ

ОБЩИЕ ПРОБЛЕМЫ

РЕКОМЕНДАЦИИ

Как предотвратить появление ошибки 'Server execution failed' в работе Snapshot Agent?

Установите значение следующего ключа реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent\Subsystems\Snapshot

равным следующему:

C:\Program Files\Microsoft SQL Server\MSSQL\BINN\SQLREPSS.DLL,C:\Program Files\Microsoft SQL Server\80\COM\SNAPSHOT.EXE,ReplStart,ReplEvent,ReplStop,120

вместо

C:\Program Files\Microsoft SQL Server\MSSQL\BINN\SQLREPSS.DLL,C:\Program Files\Microsoft SQL Server\80\COM\SNAPSHOT.EXE,ReplStart,ReplEvent,ReplStop,100

(Hilary)

[В начало]

Как создать сценарий, восстанавливающий разрешения, для использования его в качестве сценария после применения снимка?

Этот сценарий создает разрешения для всех статей на подписчике 'yyy'

/***************************************************************************************** Created: 11/02/2005 By: Paul Ibison Purpose: Script to produce publisher permissions for the subscription 'yyy': ******************************************************************************************/ SELECT 'Grant ' + case when action = 193 then 'SELECT' when action = 195 then 'INSERT' when action = 196 then 'DELETE' when action = 197 then 'UPDATE' when action = 224 then 'EXECUTE' end as Grant1, ' ON [' + delivery.dbo.sysobjects.name + '] TO ' + delivery.dbo.sysusers.name as Grant2 --,ss.srvname --,delivery.dbo.syspublications.name AS Publication FROM delivery.dbo.syssubscriptions INNER JOIN delivery.dbo.sysextendedarticlesview ON delivery.dbo.syssubscriptions.artid = delivery.dbo.sysextendedarticlesview.artid INNER JOIN delivery.dbo.sysobjects ON delivery.dbo.sysextendedarticlesview.objid = delivery.dbo.sysobjects.id INNER JOIN delivery.dbo.syspublications ON delivery.dbo.sysextendedarticlesview.pubid = delivery.dbo.syspublications.pubid INNER JOIN master..sysservers ss on ss.srvid = delivery.dbo.syssubscriptions.srvid left outer JOIN delivery.dbo.sysprotects on delivery.dbo.sysprotects.id = delivery.dbo.sysobjects.id left outer JOIN delivery.dbo.sysusers on delivery.dbo.sysprotects.uid = delivery.dbo.sysusers.uid where action in (193,195,196,197,224) and srvname = 'yyy' order by ss.srvname, delivery.dbo.syspublications.name, delivery.dbo.sysobjects.name, delivery.dbo.sysusers.name If you aren't interested in a particular subscriber, then this'll be simpler: CREATE PROCEDURE spGetCPDBPermissionsatBT AS SELECT 'Grant ' + case when action = 193 then 'SELECT' when action = 195 then 'INSERT' when action = 196 then 'DELETE' when action = 197 then 'UPDATE' when action = 224 then 'EXECUTE' end as Grant1, ' ON [' + delivery.dbo.sysobjects.name + '] TO ' + delivery.dbo.sysusers.name as Grant2 FROM delivery.dbo.sysextendedarticlesview INNER JOIN delivery.dbo.sysobjects ON delivery.dbo.sysextendedarticlesview.objid = delivery.dbo.sysobjects.id INNER JOIN delivery.dbo.syspublications ON delivery.dbo.sysextendedarticlesview.pubid = delivery.dbo.syspublications.pubid left outer JOIN delivery.dbo.sysprotects on delivery.dbo.sysprotects.id = delivery.dbo.sysobjects.id left outer JOIN delivery.dbo.sysusers on delivery.dbo.sysprotects.uid = delivery.dbo.sysusers.uid where action in (193,195,196,197,224) and delivery.dbo.sysusers.name not in ('RO','RW') order by delivery.dbo.syspublications.name, delivery.dbo.sysobjects.name, delivery.dbo.sysusers.name

[В начало]

Как найти триггеры, которые определены с опцией NOT FOR REPLICATION?

Смотрите здесь:

/***************************************************************************************** Created: 13/07/2005 By: Andy Cox Purpose: Simple script to identify triggers lacking the NFR attribute. Modified on PI original to cater for triggers occupying > 1 record in syscomments. ******************************************************************************************/ select a.name from sysobjects a where a.xtype = 'TR' and a.id not in ( select b.id from syscomments b where patindex( '%not for replication%', b.text ) >= 1 group by b.id )

[В начало]

Как добавить одну и ту же таблицу в две публикации?

Эта таблица может быть добавлена в каждую публикацию. Однако, для одной из публикаций нужно будет установить режим no-sync, поскольку если Вы используете автоматическое управление диапазонами, Вы получите ошибку первичного ключа:

Violation of PRIMARY KEY constraint 'PK__MSrepl_identity___4D5F7D71'. Cannot insert duplicate key in object 'MSrepl_identity_range'.

Таким образом, для работающих в режиме только загрузки данных публикаций, необходимо отключить автоматическое управление диапазонами для Вашей табличной статьи.

Как повысить производительность, если снимок большой?

  1. Экспортировать данные таблиц с помощью BCP в текстовый файл. Заархивировать файлы, затем переместить их на подписчика. Применить BCP файлы на подписчике, тогда не потребуется реинициализация подписчика

  2. Также для сжатого снимка можно использовать альтернативное местоположение

  3. Можно использовать съемные диски, если подписчик не слишком удален географически.

  4. Можно увеличить значение параметра -MaxBCPThreads

  5. В дополнение к пункту d) можно использовать параметр -UseInProcLoader если Вы не применяете файлы с помощью bcp вручную и не используете съемные диски.

[В начало]

Как добавить для уже существующего поля свойство Identity?

В данном примере я устанавливаю свойство identity not for replication для поля таблицы jobs

sp_configure 'allow updates', 1 GO reconfigure with override GO update syscolumns set colstat = colstat | 0x0008 where colstat & 0x0001 <> 0 and colstat & 0x0008 = 0 and id=object id('jobs') GO sp configure 'allow updates', 0

(Hilary Cotter)

[В начало]

Как перенести базу данных distribution?

Вы не сможете этого сделать. Вы должны отключить репликацию на издателе, установить дистрибьютора и разрешить издателю использовать этого дистрибьютора. Затем включить репликацию на издателе и она будет использовать БД распределения. Потом необходимо пересоздать публикацию и подписчиков.

[В начало]

Как определить, что база данных вовлечена в процесс репликации?

Эту информацию можно получить с помощью процедуры sp_dboption, использовав имя базы данных в качестве параметра.
Результат выполнения процедуры выглядит примерно так:

----------------------------------- published select into/bulkcopy merge publish trunc. log on chkpt. auto create statistics auto update statistics

Или другой способ:

select name, databasepropertyex (name,'IsMergePublished') from master..sysdatabases select name, databasepropertyex (name,'IsPublished') from master..sysdatabases

[В начало]

Как сделать так чтобы после изменения процедуры она попала на подписчика вместе с созданным снимком?

Хотя процедура sp_refreshsubscriptions 'publication ' добавляет новую статью в публикацию, которая затем попадет в снимок, но она не подходит для данного случая. Если мы сделаем необходимые изменения в тексте процедуры и запустим sp_refreshsubscriptions, в результате получим следующее сообщение: 'A snapshot was not generated because no subscriber needed initialization.
Для того чтобы сформировать новый снимок для измененной процедуры используется

sp_reinitsubscription @publication = 'publication' , @article = 'myproc' , @subscriber = 'london' , @destination_db = 'testrep' , @for_schema_change = '1'

После этого создаем снимок (он будет сделан только для новой процедуры) и затем запускаем синхронизацию.

В качестве альтернативы можно воспользоваться процедурой sp_addscriptexec для того, чтобы запустить скрипт по изменению процедуры после применения снимка. Запустите процедуру на издателе и эти изменения появятся на всех подписчиках публикуемой базы данных после применения скрипта.

[В начало]

Как изменить тип данных или длину уже имеющегося поля?

Напрямую это сделать нельзя. Некоторыми способами этого все-таки можно добиться, но такой подход нежелательно использовать. Вы должны добавить новое поле с новым типом данных (sp_repladdcolumn). Затем с помощью команды Update заполнить это поле таблицы значениями из старого поля и удалить старое поле (sp_repldropcolumn). Необходимо проделать это еще раз, чтобы вернуть столбцу первоначальное имя.

[В начало]

Как убрать красный крестик в Replication monitor?

Если запустить профайлер и перейти в EM к узлу Replication monitor, можно отследить что происходит в это время на сервере. Для получения информации в Replication monitor используются данные таблицы MSreplication_agent_status и запускается процедура sp_MSload_replication_status, которая обновляет информацию в этой таблице. После перезапуска службы SQL Server проблема снимается, поскольку пересоздается БД tempdb на основе БД model.

[В начало]

Как удалить таблицу из подписки?

Процедура sp_dropsubscriptions может быть использована для удаления из подписки одной статьи. Если нет ни одного подписчика, подписанного на эту статью, она может быть удалена с помощью sp_droparticle.

sp_dropsubscription @publication = 'northwindxxx' , @article = 'region' , @subscriber = 'pll-lt-16' sp_droparticle @publication = 'northwindxxx' , @article = 'region'

[В начало]

Как предотвратить применение снимка, если подписчик был помечен на реинициализацию по ошибке?

Если применение снимка еще не запускалось, можно посмотреть и изменить статус подписчика в таблице syssubscriptions:

exec dbo.sp_changesubstatus @publication = 'NorthwindRegion', @article = 'region', @subscriber = 'pll-lt-16', @destination_db = 'Pubs', @status = 'active'

Удивительно, но даже после того, как снимок был уже создан, я все еще имел возможность изменить статус подписчика. В скором времени я расскажу об этом более подробно.

[В начало]

Как подписаться на отдельную статью?

Согласно документации, можно подписаться только на публикацию. Однако, если у Вас имеется публикация, которая состоит из нескольких статей (таблиц), можно каждому подписчику подписаться на подмножество статей в публикации. Для этого, Вы как обычно создаете публикацию и затем добавляете подписчиков. Затем для каждого из подписчиков удаляете ненужные статьи. Этот метод работает только если подписчики находятся на разных серверах. Для того чтобы удалить статьи из подписки для подписчика, можно использовать следующую процедуру:

sp_dropsubscription 'publicationname', 'tablename', 'subscribername'

Или еще более простой способ - добавлять статьи для подписчика с помощью процедуры sp_addsubscription.

[В начало]

Как удалить подписчиков, помеченных красным цветом? (Когда я открываю папку Replication-> Subscriptions, я вижу подписчиков, которых там быть не должно и в контекстном меню недоступен пункт "удалить".)

Вы можете воспользоваться процедурой sp_MSenumsubscriptions, чтобы получить информацию, которую получаете при открытии папки с подписчиками. Основные таблицы в каждой базе данных подписки - sysmergesubscriptions и MSREPLICATION_SUBSCRIPTIONS. Если эта база данных больше не является подписчиком, то можно выполнить процедуру sp_removedbreplication, которая удалит ненужные системные таблицы. Если же Вы хотите оставить эти таблицы, найдите в вышеупомянутых таблицах строки, соответствующие этим подписчикам, и удалите их.

[В начало]

СООБЩЕНИЯ ОБ ОШИБКАХ

'Could not bulk insert. Bulk data stream was incorrectly specified as sorted. (Source: ... (Data source); Error number: 4819'

Для всех баз данных, вовлеченных в процесс репликации, должна быть установлена одинаковая collation. Для того чтобы увидеть какая collation установлена для БД, можно воспользоваться процедурой sp_helpsort. Чтобы изменить collation, необходимо использовать команду Alter Database.

[В начало]

'The process could not create file 'd:\SQLData\MSSQL\ReplData\unc\SERVER_DataBase_Publication\20041031000029\Publication_1.sch'. Full Message: The process cannot access the file because it is being used by another process.'

Проверьте, не установлена ли автоматическая проверка на вирусы. Если это так, отключите проверку для папки, которая используется при создании снимка.

[В начало]

'The process is running and is waiting for a response from one of the backend connections'

Не волнуйтесь, если Вы получили это сообщение и кажется что процесс "завис". На моем опыте, это сообщение возникает, когда данные уже переданы, но об этом еще не пришло уведомление, поскольку на подписчике еще строятся индексы. Это можно увидеть, просмотрев текущую активность на подписчике. Однако, необходимо убедиться в том, что в профиле агента (distribution/merge) установлено достаточно высокое значение параметра QUERYTIMEOUT.

[В начало]

The schema script '0\\DH1791628\C$\Program Files\Microsoft SQL Server\MSSQL\ReplData\20040915121438863\test.sql' could not be propagated to the subscriber.

Если Вы используете sp_addscriptexec, и возникают ошибки сценария, тогда работа агентов репликации (distribution/merge) будет завершаться с ошибкой. В данном случае можно избежать реинициализации. Чтобы продолжить работу, найдите вышеупомянутый сценарий, по возможности определите и устраните ошибку, или в качестве альтернативного решения можно вставить в скрипт некоторый код на TSQL , например DBCC INDEXDEFRAG, который отрабатывает без ошибок. Также, Вы не можете оставить этот файл пустым, необходимо использовать некоторый правильный синтаксис.

[В начало]

"The subscription to publication 'name of subscription' has expired or does not exist." however I've just added it.

Были запущены процедуры sp_addmergepullsubscription и sp_addmergepullsubscription_agent, а не sp_addmergesubscription.

[В начало]

Ошибка при создании снимка: The process could not bulk copy out of table '[dbo].[syncobj_xxxxxxxx]'. Error Details: ODBCBCP/Driver version mismatch

Иногда эта проблема снимается после установки одинаковой версии MDAC на обе машины. Для определения версии, можно скачать утилиту здесь.
Следующие файлы должны иметь одинаковые версии файлов:

%SystemRoot%\system32\sqlsrv32.dll
%SystemRoot%\system32\sqlsrv32.rll
%SystemRoot%\system32\odbcbcp.dll

Почему возникает эта ошибка? Возможно из-за неправильной установки MDAC.

[В начало]

Ошибка при создании снимка: The process could not bulk copy out of table '[dbo].[syncobj_xxxxxxxx]'. Error Details: I/O error while writing BCP data file (source:ODBC SQL Server Driver ODBC); Error number:0)

Обычно эта ошибка возникает когда имеются проблемы с диском или на диске больше нет свободного места.

[В начало]

При попытке добавить новое поле, возникает следующая ошибка: 21260 16 Schema replication failed because database '%s' on server '%s' is not the original Publisher of table '%s'.

В таблице sysmergearticles имеется поле pubid. Этому идентификатору должно быть соответствие в таблице sysmergepublications. В sysmergepublications значение поля 'publisher' должно соответствовать имени сервера, но в Вашем случае для этого поля установлено другое значение. Решить эту проблему можно установив правильное значение для поля 'publisher', но я не советую делать этого, лучше пересоздать публикацию.

[В начало]

После установки sp3a и восстановления базы данных: Could not find stored procedure 'dbo_ss.dbo.sp_MSremovedbreplication'.

Обычно причиной возникновения этой ошибки является неправильная установка пакета обновления. Переустановите сервисный пакет и для получения дополнительной информации о процессе установки просмотрите файл sqlsp.log в каталоге c:\windows, возможно там Вы найдете информацию о том, какое действие привело к ошибке, по причине которой хранимая процедура отсутствует.

[В начало]

Почему у меня возникает эта ошибка: "[298] SQLServer Error: 8198, Could not obtain information about Windows NT group/user 'domain\username'."

Вот хорошая статья, описывающая данную проблему: http://support.microsoft.com/?kbid=834124
В соответствующей секции данной статьи объясняются причины возникновения этой ошибки.

Ниже приведены две возможные причины:

  1. Учетная запись, под которой запущена служба SQL Server, не имеет необходимых прав в домене Windows. В этом случае можно воспользоваться процедурой sp_logininfo, чтобы получить информацию об учетной записи, под которой запущен сервис SQL Server. Поскольку учетная запись не имеет административных прав, то при получении свойств пользователя в домене посредством хранимой процедуры xp_logininfo, Вы получите ошибку 8198.
    Для устранения этой проблемы, измените учетную запись, под которой стартует служба SQL Server на доменную.

  2. Службы SQL Server и SQL Server Agent на издателе и на подписчике используют контекст безопасности разных доменов Windows.
    Решить данную проблему можно с помощью следующих методов:

    • Использовать одну и ту же учетную запись для запуска SQL Server и SQL Server Agent.

    • Создать доменную учетную запись на издателе и на подписчике, имеющую одинаковое имя и пароль на обоих серверах

Если рекомендованные методы Вам не помогли, установить хотфикс, доступный по адресу: http://support.microsoft.com/default.aspx?kbid=830596

[В начало]

Как избежать ошибки, которая иногда возникает при попытке создания сценария репликации через SQL Server Enterprise Manager: Error 14262. The specified @job_id ('....') does not exist

Эта ошибка возникает при попытке создания в SQL Script Enterprise Manager сценария репликации через папку Replication, при выборе контекстного меню Generate. Иногда после удаления подписки, остается информация, а также возможно не обновлен список заданий - это может послужить причиной данной ошибки. Для того чтобы устранить эту проблему, необходимо удалить на подписчике не актуальные записи в таблице MSreplication_subscriptions, обновить информацию в папке Jobs, а затем уже создавать скрипт.

[В начало]

>При инициализации я получаю одну из следующих ошибок:

  1. The process could not read file '\\PLL-LT-16\C$\Program Files\Microsoft SQL Server\MSSQL\ReplData\unc\PLL-LT-16_Northwind_NorthwindOrders\20040226171940\Orders_1.sch' due to OS error 5.

  2. The schema script '\\PLL-LT-16\ReplData\unc\PLL-LT-16_Northwind_NorthwindEmployees\20040227085540\Employees_1.sch' could not be propagated to the subscriber. The step failed.

В pull подписке, если используется стандартный общий ресурс C$, учетная запись должна иметь права локального администратора. Обычно создают другой общий ресурс. Для данного случая общим ресурсом нужно сделать \\PLL-LT-16\Repldata и изменить путь в свойствах дистрибьютора на вкладке Publishers. (в Enterprise Manager в папке Publications, в контекстном меню выбрать пункт Configure Publishing, Subscribes and Distribution).

[В начало]

Ошибка при инициализации: The process could not connect to Distributor 'PLL-LT-16'. Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. The step failed

Служба SQL Server Agent не должна использовать учетную запись LocalSystem, ее нужно заменить на доменную учетную запись.

[В начало]

При репликации представления или хранимой процедуры я получаю одну из следующих ошибок:

  1. Invalid column name 'Column Name'

  2. Cannot use empty object or column names. Use a single space if necessary.

  3. The name 'Object Name' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.

  4. The schema script 'Path of the .sch file for the stored procedure proc1' could not be propagated to the subscriber.

Эта проблема возникает, потому что Snapshot Agent всегда устанавливает опцию QUOTED_IDENTIFIER в ON, несмотря на текущие установки сервера. Таким образом, если в представлении или хранимой процедуре используются двойные кавычки, Distribution Agent или Merge Agent использует установленные опции для обработки двойных кавычек только для идентификаторов.
Для того чтобы обойти эту проблему, необходимо изменить скрипт, где создается объект (в папке снимка) так, чтобы для литералов использовались одинарные кавычки или передать объект с помощью DTS.

[В начало]

Ошибка при инициализации: The process could not connect to Subscriber 'SQLReporting'.

Distribution agent должен подключиться к подписчику и применить снимок, а затем, возможно, выполнить какие-то дополнительные действия, в зависимости от типа репликации. Для подключения он может использовать учетную запись Windows (доверительное соединение) или SQL Server. Если логин на подписчике неправильный, то Вы получите сообщение, приведенное выше. Если логин правильный, но недостаточно разрешений, Вы получите следующее сообщение об ошибке: 'Only members of the sysadmin or db_owner roles can perform this operation'. Для того чтобы устранить проблему, измените свойства дистрибутора (в EM папка Replication, в контекстном меню выбрать Configure Publishing, Subscribers and Distribution) на вкладке Subscribers, нажав на серую кнопку с тремя точками напротив нужного подписчика. Выбрать "impersonate the sql server agent account on 'servername' (trusted connection)". Убедитесь что учетная запись, под которой работает distribution agent, существует на подписчике и входит в серверную роль sysadmin или в роль db_owner базы данных подписчика, тогда проблема будет разрешена.

[В начало]

Ошибка при инициализации: The process could not connect to Distributor 'SERVER1'.

Эта ошибка может произойти если сервер был переименован. Эта же причина может повлечь следующие ошибки:

    18483 - could not connect to server 'Newname' because distributor_admin is not defined as a remote login at the server.
    18482 - could not connect to server 'Newname' because 'Oldname' is not defined as a remote server.

Выполните следующий код:

Use Master go Select @@Servername

Запрос вернет имя сервера или NULL. Если вернется NULL, то выполните следующий код, подставив соответствующие имена:

Use Master go Sp_DropServer 'OldName' GO Use Master go Sp_Addserver 'NewName', 'local' GO

После этого необходимо перезапустить службу SQL Server.

Определить сетевое имя компьютера, на котором работает SQL Server можно с помощью глобальной переменной @@SERVERNAME или функции SERVERPROPERTY('ServerName'). Свойство 'ServerName' функции SERVERPROPERTY изменяется автоматически при перезагрузке компьютера, а переменная @@SERVERNAME возвращает первоначальное имя сервера до тех пор, пока его не изменят вручную.

[В начало]

При инициализации возникает ошибка 208 с определенным представлением. Есть ли какие-либо идеи как это исправить?

При применении файлов схемы из снимка на подписчике, порядок статей должен строго соблюдаться. Некоторые объекты зависят от других существующих объектов, также и представление может зависеть от другого представления или таблицы. И если представление создается до того, как создалась таблица, на основе которой построено представление, то это приводит к данной ошибке.
Для представления, которое вызывает ошибку, запустите процедуру sp_depends, которая вернет зависимости данного объекта в SQL Server. Если процедура показывает, что зависимостей нет, обновите представление и снова запустите проверку зависимостей, после этого порядок статей в снимке должен быть корректным. Также можно воспользоваться процедурой sp_addscriptexec и добавлять, таким образом, представления в любом порядке.

Эти статьи могут быть Вам полезны:

[В начало]

Я хочу удалить столбец, но не могу запустить процедуру sp_repldropcolumn

Обычно такое происходит, когда у объекта есть зависимые объекты - ограничения, значения по умолчанию, индексы, которые нужно сначала удалить.

[В начало]

Я пытаюсь изменить поле, но получаю следующее сообщение об ошибке: "Can't update column as it's used in replication". Однако, это поле не задействовано в репликации.

Для того чтобы это исправить, имеется процедура sp_MSunmarkreplinfo, параметром ее является имя таблицы. Также в таблице sysobjects можно поменять значение поля replinfo на 0 для этой таблицы. И наконец, можно запустить sp_removedbreplication для удаления всех следов репликации в базе данных подписчика, но это возможно только если эта база данных не издается.

[В начало]

Table 'UPDATE_LOG' does not exist in the Subscriber database

Эта ошибка может возникнуть, если Distribution Agent первоначально не создал эту таблицу. Такое может случится когда на подписчике у другой таблицы существует первичный ключ с тем же именем что и у файла снимка. Чтобы обойти эту ошибку, можно переименовать ограничение в BCP файле, или переименовать его на подписчике.

[В начало]

ОБЩИЕ ПРОБЛЕМЫ

[В начало]

База данных в состоянии Suspect, как вывести её из этого состояния и продолжить процесс репликации?

[В начало]

Для чего используется учетная запись distributor_admin?

Учетная запись distributor_admin нужна в репликации потому, что большинство административных функций в репликации необходимо выполнять как в базе данных издателя, так и в базе дистрибутора. Например, когда с помощью sp_addpublication добавляется новая публикация, при этом добавляются новые строки в таблицы syspublications на издателе и MSpublications на дистрибуторе. sp_addpublication выполняется в контексте базы данных издателя, используя учетную запись distributor_admin для того чтобы осуществить вставку в таблицу MSpublications дистрибутора.

[В начало]

Перевод: Ирины Наумовой  2006г.

Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013