INF: Como executar um pacote DTS como uma tarefa agendada

Traduções de Artigos Traduções de Artigos
Artigo: 269074 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Um problema que poderá encontrar frequentemente com um pacote de serviços de transformação de dados (DTS) é o que é o pacote DTS executada erros do SQL Server Enterprise Manager, mas o pacote DTS falhar quando está agendado para ser executado como uma tarefa. Normalmente, isto ocorre devido a uma diferença no contexto de segurança quando o pacote é executado como uma tarefa ou quando o pacote é executado interactivamente.

Este artigo explica as questões de segurança envolvidas na execução pacotes DTS.

Mais Informação

Alguns termos utilizados neste artigo incluem:
Reduzir esta tabelaExpandir esta tabela
TermosDescrição
DTSServiços de transformação de dados
Autenticação de SQLSistema de segurança baseado no Microsoft SQL Server inícios de sessão e palavras-passe.
Segurança padrãoConsulte autenticação de SQL.
Autenticação do SQL ServerConsulte autenticação de SQL.
Autenticação do Microsoft Windows NTQuando um utilizador liga através de uma conta de utilizador do Microsoft Windows, a SQL Server verifica se o nome da conta e palavra-passe foram validados quando o utilizador iniciada num computador com o Microsoft Windows NT, Microsoft Windows 2000, Microsoft Windows 95 ou Microsoft Windows 98.
Segurança integradaConsulte autenticação do Microsoft Windows NT.
Autenticação Windows NT ou Microsoft Windows 2000Consulte autenticação do Microsoft Windows NT.
Conta do Microsoft Windows NT ou o início de sessão é igual a conta ou de início de sessão do WindowsMesmo que a conta de início de sessão do Microsoft Windows NT ou conta de início de sessão do Microsoft Windows 2000.
Agente SQLServiço de agente do SQL Server
SEMSQL Server Enterprise Manager

Onde está a executar o pacote DTS?

Um problema que está frequentemente comunicado sobre pacotes DTS é a diferença de comportamento quando um pacote é executado a partir do SQL Enterprise Manager versus quando o pacote DTS está agendado como uma tarefa. Quando executa o pacote do Estruturador da DTS no SQL Enterprise Manager (SEM), o pacote está em execução no computador onde estão instaladas. Se estiver a utilizar o servidor (fisicamente, ou através de software de acesso remoto), o pacote é executado no servidor. Se estão instaladas numa estação de trabalho e registou o SQL server Enterprise Manager, o pacote é executado na estação de trabalho. Contexto de segurança do pacote é que da conta do Windows NT é utilizada para iniciar sessão computador. Quando o pacote é executado como uma tarefa agendada, o pacote é sempre executado no servidor.

Frequentemente, um programador cria e testa o pacote DTS interactivamente na respectiva estação de trabalho através do Designer de DTS no Enterprise Manager. Depois do pacote DTS depurado, o pacote, em seguida, é agendado como uma tarefa. Isto altera a localização do pacote de estação de trabalho do programador para o servidor. Se o pacote foi carregar dados de texto para o SQL Server, o pacote de falha, a menos que o ficheiro de texto e o caminho para o ficheiro existem no servidor. Se o pacote foi ligado a outro servidor, o pacote falha se o contexto de segurança da tarefa não suporta a ligação.

Quem possui a tarefa que executa o pacote DTS?

Pacotes agendados por criar uma tarefa que é gerida pelo serviço de agente SQL. Esta tarefa, como qualquer outra tarefa agendada, tem um proprietário. O proprietário pode ser um início de sessão do SQL Server ou uma conta do Windows NT.

Para determinar o proprietário:
  • Faça duplo clique sobre a tarefa no Enterprise Manager e, em seguida, observe a caixa de combinação pendente do proprietário .

    - ou -

  • Execute o procedimento armazenado do sistema de msdb.dbo.sp_help_job .
SQL Server 7.0

O contexto de segurança no qual a tarefa é executada é determinado pelo proprietário da tarefa. Se a tarefa é possuída por um início de sessão não é um membro da função de servidor Sysadmin , o pacote é executado no contexto da conta SQLAgentCmdExec e tem os direitos e permissões dessa conta.

Para SQLAgentCmdExec poder executar tarefas que estabelecer ligação com o SQL Server, a conta SQLAgentCmdExec tem de ter permissões adequadas do Windows/NT e ser concedida acesso de início de sessão para o SQL Server com permissões de base de dados apropriado. A conta SQLAgentCmdExec normalmente não tem direitos fora do computador local do SQL Server. Assim, qualquer pacote requer uma ligação a outro computador é falhar, se estiver agendado como uma tarefa pertencente a um início de sessão não é um membro da função Sysadmin.

SQL Server 2000

O contexto de segurança no qual a tarefa é executada é determinado pelo proprietário da tarefa. Se a tarefa é possuída por um início de sessão não é um membro da função de servidor Sysadmin, em seguida, o pacote é executado no contexto da configuração da conta como a conta de proxy do agente de SQL e tem os direitos e permissões dessa conta.

Para o SQL agente de proxy poder executar tarefas que estabelecer ligação com o SQL Server, a conta de proxy do agente de SQL tem de ter permissões adequadas do Windows/NT e ser concedida acesso de início de sessão para o SQL Server com permissões de base de dados apropriado. Para as tarefas que executar um pacote DTS, a conta de proxy do agente de SQL tem Li e permissões de escrita para o directório temp da conta do SQL Server Agent está a ser executado. Por exemplo,
c:\Documents and Settings\ <account> \Local Settings\Temp
Se a tarefa pertence a uma conta (um início de sessão do SQL Server ou um login do Windows NT autenticado) que é um membro da função Sysadmin , a tarefa do agente SQL executado no contexto da conta utilizada para iniciar o serviço agente SQL.

Além disso, se a tarefa pertence a uma conta de domínio do Windows NT e o pacote armazenado no SQL Server ou do SQL Server repositório (não como um ficheiro), tem de iniciar o serviço SQL Server utilizando uma conta do mesmo domínio ou a partir de um domínio fidedigno. Por exemplo, se a tarefa do agente SQL é propriedade de uma conta do domínio EUA, tem de ser quer do domínio USA a conta utilizada para iniciar o serviço SQL Server ou um domínio considerado fidedigno pelo domínio USA. Se o SQL Server é iniciado utilizando uma conta local, o pacote de falha ser executado.

O que determina o proprietário?

pergunta : quando clica com o botão direito do rato o pacote DTS e optar por agendar o pacote, como é o proprietário atribuído?

resposta : O proprietário da tarefa agente SQL depende de como o SQL Server está registado no Enterprise Manager. Se o SQL Server estiver registado utilizando uma autenticação Windows NT, o proprietário da tarefa agendada é a conta utilizada para iniciar o serviço agente de SQL. Se o SQL Server estiver registado no SEM utilizar a autenticação do SQL Server (por exemplo, o login SA ), o proprietário da tarefa é esse mesmo início de sessão do SQL Server.

Para alterar a propriedade do pacote:
  1. Clique duas vezes a tarefa no Enterprise Manager.
  2. Clique no separador Geral e, em seguida, clique em caixa de combinação pendente proprietário .
Também pode utilizar o procedimento armazenado do sistema de msdb.dbo.sp_update_job para alterar a propriedade do pacote.

Como é o pacote de DTS Launched?

Se executar um pacote utilizando o utilitário de linha de comandos DTSRun.exe manualmente, o contexto de segurança é que da conta do Windows é utilizada para iniciar sessão computador. Se executar o pacote através de DTSrun.exe xp_cmdshell expandido o procedimento armazenado, o pacote é executado no contexto da conta utilizada para iniciar o serviço SQL Server, desde que o utilizador que executadas xp_cmdshell é um membro da função Sysadmin . Se o utilizador que executadas xp_cmdshell não for uma conta na função Sysadmin , é DTSRun.exe executado no contexto da conta SQLAgentCmdExec .

Se o SQL Server foi iniciado utilizando a conta Sistema Local , o pacote DTS não tenha permissões fora do computador que está a executar o SQL Server.

Se o serviço SQL Server é iniciado com uma conta Windows NT, o pacote tem os mesmos direitos e permissões essa conta de Windows NT. Se essa conta de Windows NT for uma conta de computador local (por oposição a uma conta de domínio), o pacote não tem quaisquer direitos fora do computador. Se a conta do Windows NT for uma conta de domínio, o pacote poderá aceder a recursos em muitos computadores diferentes no domínio.

Como são autenticados do Windows NT criadas as ligações de acesso?

Por vezes, um pacote DTS contém um objecto que estabelece uma ligação a uma origem de dados utilizando a autenticação do Windows NT. O contexto de segurança utilizado para esta ligação é o mesmo como o contexto do pacote está a ser executado. Se o pacote for executado a partir de uma linha de comandos utilizando DTSRun.exe , as credenciais da conta do Windows NT actualmente com sessão iniciada-in é utilizadas. Se o pacote é executado como uma tarefa do agente do SQL Server, em seguida, a segurança integrada estabelecida a ligação utilizando a conta é utilizado para iniciar o agente SQL (partindo do princípio que o proprietário do pacote é um membro da função Sysadmin ).

Problemas comuns

Eis alguns outros problemas comuns que poderão ocorrer quando executar pacotes DTS como tarefas agendadas no agente SQL:

Unidades mapeadas

Se o pacote depende da localização física de um ficheiro designado por uma letra de unidade mapeada, o pacote poderá falhar quando é executado como uma tarefa agendada do agente SQL, independentemente de quem possui o pacote. Agente SQL é um serviço do Windows NT e serviços do Windows NT não consegue visualizar letras de unidade mapeada. O mapeamento é parte do perfil do utilizador que é carregado quando um utilizador inicia sessão numa sessão de Windows NT. Serviços não funcionam com perfis de utilizador. Utilize um caminho UNC em vez de uma letra de unidade mapeada. Para obter informações adicionais sobre por que razão um serviço não é possível utilizar uma unidade mapeada, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
180362INFO: Serviços e unidades redireccionadas

Caminho relativo

Um caminho relativo (ou letra de unidade) é específica para a localização actual do pacote (por exemplo, C:\). Se um pacote destina-se numa estação de trabalho e, em seguida, está agendado, a localização a partir do qual o pacote é executado alterações. Os caminhos de letra de unidade agora referenciam uma localização física diferente do servidor. A menos que os ficheiros referidos também forem movidos para o servidor, a execução do pacote de falha.

Componentes do COM em scripts de ActiveX

Se componentes COM (por exemplo, chamadas para objectos Microsoft ActiveX Data Objects (ADO), RDO (objectos de dados remoto) ou Decision Support objecto (DSO)) denominam-se de um script ActiveX, os componentes de chamada tem de existir no computador a partir do qual o pacote DTS está a ser executado. Se executar o pacote a partir do Designer de DTS no SEM ou DTSRun.exe , os componentes tem de existir no computador em que estão instaladas. Se o pacote estiver agendado para ser executado pelo agente SQL, os componentes de chamada devem ser carregados no computador que hospeda o SQL Server.

Pacote de segurança

Pacotes DTS podem ter palavras-passe de proprietário e as palavras-passe de utilizador. Estas palavras-passe afecta quem pode editar e executar os pacotes. Nenhum destes afectam o contexto de segurança no qual o pacote é executado.

SQLAgentCmdExec permissões

Se a tarefa é executada no contexto da conta SQLAgentCmdExec e a conta SQLAgentCmdExec não tem direitos de início de sessão para o SQL Server, a tarefa poderá falhar com a seguinte mensagem de erro:
DTSRun: carregar... DTSRun: em execução... DTSRun OnStart: DTSStep_DTSExecuteSQLTask_1 DTSRun AoOcorrerErro: DTSStep_DTSExecuteSQLTask_1, erro =-2147217843 (80040E4D) erro cadeia: falhou o início de sessão para o utilizador 'NT_name\SQLAgentCmdExec'. Origem do erro: Microsoft OLE DB Provider para ficheiro de ajuda do SQL Server: contexto de ajuda: 0 registos de detalhes do erro: erro:-2147217843 (80040E4D); erro de fornecedor: 18456 cadeia de erro (4818): falhou o início de sessão para o utilizador 'NT_name\SQLAgentCmdExec'. Origem do erro: fornecedor Microsoft OLE DB para o ficheiro de ajuda do SQL Server: contexto de ajuda: OnFinish DTSRun 0: DTSStep_DTSExecuteSQLTask_1 DTSRun: pacote execução concluída. Saída processo código 1. O passo falhou.
Tiver de conceder o SQLAgentCmdExec conta adequado início de sessão e a base de dados de direitos de permissão para o SQL Server.

Propriedades

Artigo: 269074 - Última revisão: 26 de outubro de 2007 - Revisão: 3.6
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbproductlink kbinfo KB269074 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 269074

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com