Compartilhar via


sp_addscriptexec (Transact-SQL)

Aplica-se: SQL Server

Publica um script Transact-SQL (.sql arquivo) para todos os Assinantes de uma publicação. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@publication [ = ] N'publicação'

O nome da publicação. @publication é sysname, sem padrão.

@scriptfile [ = ] N'arquivo de script'

O caminho completo para o arquivo de script SQL. @scriptfile é nvarchar(4000), sem padrão.

@skiperror [ = ] skiperror

Indica se o Distribution Agent ou Merge Agent devem parar quando um erro é encontrado durante o processamento de script. @skiperror é bit, com um padrão de 0.

  • 0 = o agente para.
  • 1 = o agente continua o script e ignora o erro.

@publisher [ = ] N'editor'

Especifica um editor que não seja do SQL Server. @publisher é sysname, com um padrão de NULL.

@publisher não deve ser usado ao publicar de um Publicador do SQL Server.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addscriptexec é usado na replicação transacional e na replicação de mesclagem.

sp_addscriptexec não é usado para replicação de instantâneo.

Para usar sp_addscriptexeco , a conta de serviço do SQL Server deve ter permissões de leitura e gravação no local do instantâneo e permissões de leitura no local onde os scripts estão armazenados.

O utilitário sqlcmd é usado para executar o script no Assinante e o script é executado no contexto de segurança usado pelo Distribution Agent ou Merge Agent ao se conectar ao banco de dados de assinatura. Quando o agente é executado em uma versão anterior do SQL Server, o utilitário osql é usado em vez do utilitário sqlcmd.

sp_addscriptexec é útil na aplicação de scripts a assinantes e usa o utilitário sqlcmd para aplicar o conteúdo do script ao Assinante. No entanto, como as configurações do Assinante podem variar, os scripts testados antes de postar no Publicador ainda podem causar erros em um Assinante. @skiperror permite que o Distribution Agent ou o Merge Agent ignore erros e continue. Use o utilitário sqlcmd para testar scripts antes de executar sp_addscriptexeco .

Observação

Os erros ignorados continuam a ser registrados no histórico do agente para referência.

O uso sp_addscriptexec de para postar um arquivo de script para publicações usando FTP para entrega de instantâneo só tem suporte para Assinantes do SQL Server.

Permissões

Somente membros da função de servidor fixa sysadmin ou db_owner função de banco de dados fixa podem executar sp_addscriptexec.