CORRECÇÃO: O utilitário Osql.exe não é executado um script Transact-SQL completamente se iniciar o programa a partir de uma sessão remota utilizando um serviço de fundo e em seguida, terminar a sessão a sessão da consola

Traduções de Artigos Traduções de Artigos
Artigo: 843282 - Ver produtos para os quais este artigo se aplica.
Erro n.º: 471423 (SQL Server 8.0)
Microsoft distribui as correcções do Microsoft SQL Server 2000 como um ficheiro que podem ser transferido. Porque as correcções são cumulativas, cada nova versão contém todos os as correcções e todos os a segurança corrige incluídas com versão da correcção anterior do SQL Server 2000.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Depois de iniciar o utilitário osql (Osql.exe) utilizando um serviço de fundo como o SQL Server Agent ou o Microsoft Windows o Programador de tarefas, que um utilizador inicie desactivar a partir da sessão da consola no computador, poderá notar que o utilitário osql pára e não completamente executar o script Transact-SQL que é transmitido para o utilitário osql. Mesmo que o utilitário osql pára sem executar completamente o script Transact-SQL, o serviço de fundo indica que a tarefa teve êxito. Por exemplo, SQL Server Agent apresenta o estado como Succeeded .

Causa

Quando um utilizador termina a sessão a partir da sessão da consola do computador, o sistema operativo envia a mensagem CTRL_LOGOFF_EVENT para o utilitário osql. O utilitário osql processa esta mensagem tal como se o utilitário osql for executado de forma interactiva na sessão da consola do computador. Assim, o processo pára.

Resolução

As informações de serviço pack

Para resolver este problema, obtenha o Service Pack mais recente do Microsoft SQL Server 2000.. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base)::
290211 Como obter o Service Pack mais recente do SQL Server 2000

Informações sobre a correcção

A versão inglesa desta correcção tem os atributos de ficheiro listados na tabela que se segue (ou atributos de ficheiro posteriores).. A datas e horas para estes ficheiros encontram-se listadas no tempo universal coordenado (UTC). Ao visualizar as informações dos ficheiros, estas serão convertidas na hora local.. Para determinar a diferença entre a hora UTC e a hora local, utilize o separador Fuso horário na ferramenta Data e Hora no Painel de controlo.
   Date         Time   Version        Size       File name
   ------------------------------------------------------------------
   19-Jun-2004  02:44  2000.80.954.0    664,128  Autoplt.dll      
   19-Jun-2004  02:44  2000.80.954.0     78,400  Console.exe      
   19-Jun-2004  02:44  2000.80.954.0    315,968  Custtask.dll     
   19-Jun-2004  02:44  2000.80.954.0     33,340  Dbmslpcn.dll     
   08-Apr-2004  21:42                   786,432  Distmdl.ldf
   08-Apr-2004  21:42                 2,359,296  Distmdl.mdf
   10-Oct-2003  18:48                       180  Drop_repl_hotfix.sql
   19-Jun-2004  02:44  2000.80.954.0  1,905,216  Dtspkg.dll       
   19-Jun-2004  02:44  2000.80.954.0    528,960  Dtspump.dll      
   19-Jun-2004  02:44  2000.80.954.0  1,557,052  Dtsui.dll        
   19-Jun-2004  02:44  2000.80.954.0    639,552  Dtswiz.dll       
   10-Oct-2003  18:48                   747,927  Instdist.sql
   10-Oct-2003  18:48                     1,581  Inst_repl_hotfix.sql
   19-Jun-2004  02:44  2000.80.954.0    352,828  Isqlw.exe        
   19-Jun-2004  02:44  2000.80.954.0     82,492  Itwiz.exe        
   19-Jun-2004  02:44  2000.80.954.0     90,692  Msgprox.dll      
   19-May-2004  23:43  8.11.40209.0     209,408  Mssdi98.dll      
   19-Jun-2004  02:44  2000.80.954.0     62,024  Odsole70.dll     
   19-Jun-2004  02:45  2000.80.954.0     25,144  Opends60.dll     
   19-Jun-2004  02:44  2000.80.954.0     57,904  Osql.exe         
   19-Jun-2004  02:44  2000.80.954.0    279,104  Pfutil80.dll     
   10-Oct-2003  18:37                   550,780  Procsyst.sql
   08-Apr-2004  21:42                    12,305  Qfe469315.sql
   08-Apr-2004  21:42                    19,195  Qfe469571.sql
   17-Jun-2004  15:12                 1,105,167  Replmerg.sql
   19-Jun-2004  02:44  2000.80.954.0    221,768  Replprov.dll     
   19-Jun-2004  02:44  2000.80.954.0    307,784  Replrec.dll      
   17-Jun-2004  02:37  2000.80.954.0    159,813  Replres.rll
   10-Oct-2003  18:48                 1,087,150  Replsys.sql
   10-Oct-2003  18:48                   986,603  Repltran.sql
   19-Jun-2004  02:44  2000.80.954.0    287,304  Rinitcom.dll     
   19-Jun-2004  02:44  2000.80.954.0     78,416  Sdiclnt.dll      
   19-Jun-2004  02:44  2000.80.954.0     66,112  Semmap.dll       
   19-Jun-2004  02:44  2000.80.954.0     57,916  Semnt.dll        
   19-Jun-2004  02:44  2000.80.954.0    492,096  Semobj.dll       
   17-Jun-2004  03:14  2000.80.954.0    172,032  Semobj.rll
   19-Jun-2004  02:44  2000.80.954.0     53,832  Snapshot.exe     
   12-Mar-2004  03:10                   117,834  Sp3_serv_uni.sql
   19-Jun-2004  02:43  2000.80.954.0     28,672  Sqlagent.dll     
   19-Jun-2004  02:44  2000.80.954.0    311,872  Sqlagent.exe     
   19-Jun-2004  02:43  2000.80.954.0    168,001  Sqlakw32.dll     
   19-Jun-2004  02:44  2000.80.954.0     33,344  Sqlctr80.dll     
   19-Jun-2004  02:44  2000.80.954.0  4,215,360  Sqldmo.dll       
   19-Jun-2004  02:44                    25,172  Sqldumper.exe    
   17-Jun-2004  02:24  2000.80.954.0     28,672  Sqlevn70.rll
   19-Jun-2004  02:44  2000.80.954.0    180,792  Sqlmap70.dll     
   19-Jun-2004  02:44  2000.80.954.0    188,992  Sqlmmc.dll       
   17-Jun-2004  03:22  2000.80.954.0    479,232  Sqlmmc.rll
   19-Jun-2004  02:44  2000.80.954.0    401,984  Sqlqry.dll       
   19-Jun-2004  02:44  2000.80.954.0     57,920  Sqlrepss.dll     
   19-Jun-2004  02:44  2000.80.954.0  7,581,777  Sqlservr.exe     
   19-Jun-2004  02:44  2000.80.954.0    590,396  Sqlsort.dll      
   19-Jun-2004  02:44  2000.80.954.0     45,644  Sqlvdi.dll       
   19-Jun-2004  02:44  2000.80.954.0    106,588  Sqsrvres.dll     
   19-Jun-2004  02:44  2000.80.954.0     33,340  Ssmslpcn.dll     
   19-Jun-2004  02:44  2000.80.954.0     82,492  Ssnetlib.dll     
   19-Jun-2004  02:44  2000.80.954.0     25,148  Ssnmpn70.dll     
   19-Jun-2004  02:44  2000.80.954.0    123,456  Stardds.dll      
   19-Jun-2004  02:44  2000.80.954.0    158,240  Svrnetcn.dll     
   19-Jun-2004  02:44  2000.80.954.0     76,416  Svrnetcn.exe     
   19-Jun-2004  02:44  2000.80.954.0     49,228  Ums.dll          
   19-Jun-2004  02:44  2000.80.954.0     98,872  Xpweb70.dll      
				
NOTA devido às dependências de ficheiros, a correcção mais recente que contém estes ficheiros também poderá conter ficheiros adicionais.

Ponto Da Situação

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".. Este problema foi primeiro corrigido no Microsoft SQL Server 2000 Service Pack 4.

Mais Informação

Passos para reproduzir o comportamento

  1. Abrir uma sessão de um computador cliente do Servidor de terminais.
  2. Iniciar o Bloco de notas.
  3. No Bloco de notas, escrever um script Transact-SQL para ser executada por um longo período de tempo. Por exemplo, utilize o seguinte script Transact-SQL que tenha um ciclo infinito:
    declare @variable int
    set @variable= 2
    while (@variable > 1)
    begin
    print @variable
    set @variable= @variable + 1
    end
  4. Guarde o script como \Test.SQL InstallationDrive .

    NOTA InstallationDrive é um marcador de posição para a unidade de instalação predefinida no computador.
  5. Na sessão do cliente de servidor de terminal, iniciar o utilitário osql, utilizando um dos seguintes métodos:
    • Utilizar o Programador de tarefas do Windows
      1. No Painel de controlo, abra Tarefas agendadas (Scheduled Tasks.
      2. No menu Ficheiro , aponte para Novo , e em seguida, clique em Tarefa agendada .
      3. Faça duplo clique ' nova tarefa para abrir a caixa de diálogo ' nova tarefa .
      4. Na caixa Executar , escreva o seguinte comando:
        "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql
        NOTA InstallationDrive é um marcador de posição para a unidade de instalação predefinida no computador.
      5. Na caixa Iniciar em , escreva InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn.
      6. No separador Schedule , altere as temporizações da agenda, e em seguida, clique em OK .
      7. Na caixa de diálogo Definir informações de conta (Set Account Information , escreva a conta de utilizador e a palavra-passe da conta de início de sessão, e em seguida, clique em OK .
      8. Clique com o botão direito do rato na tarefa que tenha criado, e em seguida, clique em Executar .
      9. Durante a execução da tarefa agendada, inicie sessão para uma sessão da consola, e em seguida, terminar a sessão a partir da sessão da consola no computador.
    • Utilizar SQL Server Agent
      1. Inicie SQL Server Enterprise Manager.
      2. Expanda a instância registada num servidor SQL.
      3. Sob o nome do servidor, expanda gestão , e em seguida, expanda SQL Server Agent .
      4. Em SQL Server Agent , Tarefas , clique com o botão direito do rato e clique em Nova tarefa .
      5. No separador Geral , escreva um nome para a tarefa na caixa Nome .
      6. No separador passos , clique em Novo .
      7. No separador Geral , escreva um nome para o passo na caixa Nome passo .
      8. Na lista Tipo , faça clique sobre comandos do sistema operativo (CmdExec) .
      9. Na caixa de comandos , escreva "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql -o InstallationDrive:\Test.txt e em seguida, clique em OK .

        NOTA InstallationDrive é um marcador de posição para a unidade de instalação predefinida no computador.
      10. Na chave Novas propriedades da tarefa- SQLServerName diálogo caixa, clique em OK .
      11. Clique com o botão direito do rato na tarefa que tenha criado, e em seguida, clique em Iniciar tarefa .
      12. Enquanto a tarefa está ser executado, inicie sessão para uma sessão da consola, e em seguida, terminar a sessão a partir da sessão da consola no computador.
    Reparar que a tarefa agendada ou o trabalho SQL Server Agent está parado quando termina a sessão sessão da consola do computador. É também repare que a tarefa agendada ou SQL Server Agent comunica um sucesso para o estado da tarefa.

Referências

Para mais informações, visite os Web sites que se segue Microsoft Developer Network (MSDN):
Executar script ficheiros utilizando o Transact-SQL osql
http://msdn2.microsoft.com/en-us/library/aa213087(SQL.80).aspx

SetConsoleCtrlHandler
http://msdn2.microsoft.com/en-us/library/ms686016.aspx

HandlerRoutine
http://msdn2.microsoft.com/en-us/library/ms683242.aspx

Propriedades

Artigo: 843282 - Última revisão: 2 de novembro de 2007 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Palavras-chave: 
kbbug kbfix kbkern32dll kbqfe kbsqlserv2000presp4fix kbhotfixserver KB843282 KbMtpt kbmt
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). Pedíamos-lhe o favor de preencher o formulário existente no fundo desta página caso tenha encontrado erros neste artigo e tenha possibilidade de colaborar no processo de aperfeiçoamento desta ferramenta. Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 843282

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