Поделиться через


sp_addscriptexec (Transact-SQL)

Область применения: SQL Server

Публикует скрипт Transact-SQL (.sql файл) всем подписчикам публикации. Эта хранимая процедура выполняется на издателе в базе данных публикации.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_addscriptexec
    [ @publication = ] N'publication'
    , [ @scriptfile = ] N'scriptfile'
    [ , [ @skiperror = ] skiperror ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию.

[ @scriptfile = ] N'scriptfile'

Полный путь к файлу скрипта SQL. @scriptfile — nvarchar(4000), без значения по умолчанию.

[ @skiperror = ] skiperror

Показывает, должен ли агент распространителя или агент слияния останавливаться при возникновении ошибки во время обработки скрипта. @skiperror бит с значением по умолчанию0.

  • 0 = агент останавливается.
  • 1 = агент продолжает скрипт и игнорирует ошибку.

[ @publisher = ] N'publisher'

Указывает издателя, отличного от SQL Server. @publisher — sysname с значением по умолчаниюNULL.

@publisher не следует использовать при публикации с издателя SQL Server.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

sp_addscriptexec используется в репликации транзакций и репликации слиянием.

sp_addscriptexec не используется для репликации моментальных снимков.

Чтобы использовать sp_addscriptexec, учетная запись службы SQL Server должна иметь разрешения на чтение и запись в расположении моментального снимка и разрешения на чтение в расположении, где хранятся скрипты.

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

sp_addscriptexec полезно применять скрипты к подписчикам и использовать служебную программу sqlcmd для применения содержимого скрипта к подписчику. Тем не менее, поскольку конфигурации подписчиков могут отличаться, скрипты, проверенные перед публикацией издателю, могут по-прежнему вызвать ошибки на подписчике. @skiperror позволяет агент распространения или агент слияния игнорировать ошибки и продолжать работу. Используйте служебную программу sqlcmd для тестирования скриптов перед выполнениемsp_addscriptexec.

Примечание.

Пропущенные ошибки продолжают регистрироваться в журнале агента для справки.

Использование sp_addscriptexec для публикации файла скрипта для публикаций с помощью FTP для доставки моментальных снимков поддерживается только для подписчиков SQL Server.

Разрешения

Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_addscriptexec