Que CORRIGE: La utilidad Osql.exe no ejecuta completamente una secuencia de comandos Transact-SQL si inicia el programa desde una sesión remota utilizando un servicio de fondo y si a continuación, cierra la sesión en la sesión de consola

Seleccione idioma Seleccione idioma
Id. de artículo: 843282 - Ver los productos a los que se aplica este artículo
Que COLOCAR UN MICRÓFONO EN #: 471.423 (SQL Server 8,0)
Microsoft distribuye revisión de Microsoft SQL Server 2000 como un archivo descargable. Debido a que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y toda la seguridad arregla, aquéllos estuvieron incluidos en la versión anterior de revisión de SQL Server 2000.
Expandir todo | Contraer todo

En esta página

Síntomas

Después de iniciar la utilidad (Osql.exe) osql si un usuario cierra la sesión de consola en el equipo utilizando un servicio de fondo similar al Agente SQL Server o al Programador de tareas de Microsoft Windows, puede observar que la herramienta osql se detiene y que no ejecuta completamente las secuencias de comandos de Transact-SQL que se pasan para la herramienta osql. Aunque se detiene la herramienta osql sin ejecutar completamente la secuencia de comandos Transact-SQL, el servicio de fondo indica que el trabajo fue correcto. Por ejemplo, el Agente SQL Server muestra el estado como Completado.

Causa

Cuando un usuario cierra la sesión de consola del equipo, el sistema operativo envía el mensaje CTRL LOGOFF EVENT a la herramienta osql. La herramienta osql procesa este mensaje como si la utilidad osql se ejecuta interactivamente en la sesión de consola del equipo. Por tanto, se detiene el proceso.

Solución

Información de Service Pack

Para resolver este problema, consiga el Service Pack más reciente para Microsoft SQL Server 2000 Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base
290211 Cómo obtener el Service Pack más reciente de SQL Server 2000

Información de revisión

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla Las fechas y los tiempos para estos archivos aparecen en hora universal coordinada. La información de los archivos se convertirá a la hora local cuando la vea Para ver la diferencia entre hora UTC y hora local, utilice la ficha Zona horaria en la herramienta Fecha y hora en Panel de control.
   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 Debido a dependencias de archivos, también el hotfix más reciente que contiene estos archivos puede contener archivos adicionales.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:". Este problema primero se corrigió en Service Pack 4 de Microsoft SQL Server 2000.

Más información

Pasos para reproducir el comportamiento

  1. Abra una sesión de cliente de servidor de Terminal Server de un equipo.
  2. Inicie el Bloc de notas
  3. En Bloc de notas, escriba unas secuencias de comandos de Transact-SQL que se ejecutan durante mucho tiempo. Por ejemplo, utilice la secuencia siguiente de comandos Transact-SQL que tiene un bucle infinito:
    declare @variable int
    set @variable= 2
    while (@variable > 1)
    begin
    print @variable
    set @variable= @variable + 1
    end
  4. Guarde la secuencia de comandos como \Test.sql InstallationDrive.

    InstallationDrive nota es un marcador de posición para la unidad predeterminada de instalación del equipo.
  5. En la sesión de cliente de servidor de Terminal Server, inicie la utilidad osql utilizando uno de los métodos siguientes:
    • Utilice Programador de tareas de Windows
      1. En Panel de control, abra Tareas programadas.
      2. En el menú Archivo, seleccione Nuevo y a continuación, haga clic en Tarea programada.
      3. Haga doble clic en Nueva tarea para abrir el cuadro de diálogo Propiedades Nueva tarea.
      4. En el cuadro Run, escriba el comando siguiente:
        "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql
        InstallationDrive nota es un marcador de posición para la unidad predeterminada de instalación del equipo.
      5. En el cuadro Iniciar en, escriba InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn.
      6. En la ficha Programación, cambie los intervalos de programación y a continuación, haga clic en Aceptar.
      7. En el cuadro de diálogo Establecer información de cuenta, escriba la cuenta de usuario y la contraseña de su cuenta de inicio de sesión y a continuación, haga clic en Aceptar.
      8. Haga clic con el botón secundario en el trabajo que creó y a continuación, haga clic en Ejecutar.
      9. Al ejecutar la tarea programada, inicie la sesión de consola y a continuación, cierre la sesión de consola en el equipo.
    • Utilice Agente SQL Server
      1. Inicie Administrador corporativo de SQL Server.
      2. Expanda la instancia registrada de un SQL Server.
      3. Bajo el nombre de servidor, expanda Administración y a continuación, expanda Agente SQL Server.
      4. Con Agente SQL Server, haga clic con el botón secundario en Trabajos y a continuación, haga clic en Nuevo trabajo.
      5. En la ficha General, escriba un nombre para el trabajo en el cuadro Nombre.
      6. En la ficha Pasos, haga clic en Nuevo.
      7. En la ficha General, escriba un nombre para el paso en el cuadro Step name.
      8. En la lista Tipo, haga clic en Operating System Command (CmdExec).
      9. En el cuadro Comando, escriba "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql -o InstallationDrive:\Test.txt , y a continuación, hace clic en Aceptar.

        InstallationDrive nota es un marcador de posición para la unidad predeterminada de instalación del equipo.
      10. En Propiedades nuevas de trabajo SQLServerName cuadro de diálogo encuadra, hace clic en Aceptar.
      11. Haga clic con el botón secundario en el trabajo que creó y a continuación, haga clic en Iniciar trabajo.
      12. Mientras se está ejecutando el trabajo, inicie la sesión de consola y a continuación, cierre la sesión de consola en el equipo.
    Observa que la tarea programada o el trabajo de Agente SQL Server se detienen cuando cierra sesión en la sesión de consola del equipo. También observa que la tarea programada o el Agente SQL Server notifican un éxito para el estado del trabajo.

Referencias

Para obtener más información, visite los siguientes sitios Web de Microsoft Developer Network (MSDN)
Se ejecutan archivos de comandos Transact-SQL que utilizan 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

Propiedades

Id. de artículo: 843282 - Última revisión: viernes, 02 de noviembre de 2007 - Versión: 3.2
La información de este artículo se refiere 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
Palabras clave: 
kbbug kbfix kbkern32dll kbqfe kbsqlserv2000presp4fix kbhotfixserver KB843282 KbMtes kbmt
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente. Si ve errores y desea ayudar con este esfuerzo, rellene la encuesta en la parte inferior de este artículo.
Haga clic aquí para ver el artículo original (en inglés): 843282

Enviar comentarios

 

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