CORRECTIF : l'utilitaire Osql.exe n'exécute pas un script Transact-SQL complètement si vous démarrez le programme à partir d'une session distante en utilisant un service d'arrière-plan et déconnectez puis la session de console

Traductions disponibles Traductions disponibles
Numéro d'article: 843282 - Voir les produits auxquels s'applique cet article
BOGUE # : 471423 (SQL Server 8.0)
Microsoft distribue un correctif Microsoft SQL Server 2000 en tant qu'un fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, étant donné que chaque version nouvelle contient tous les correctifs et étant donné que toute la sécurité résout, qui était comprise avec la version SQL Server 2000 précédente de correctif.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Vous pouvez remarquer que l'utilitaire osql arrête et n'exécute pas complètement le script Transact-SQL passé pour l'utilitaire osql après avoir démarré l'utilitaire (Osql.exe) osql en utilisant un service d'arrière-plan similaire au Agent SQL Server ou le Planificateur de tâches Microsoft Windows si un utilisateur ferme la session de console sur l'ordinateur. Bien que l'utilitaire osql s'arrête sans exécuter complètement le script Transact-SQL, le service d'arrière-plan indique que le travail a réussi. Par exemple l'Agent SQL Server affiche l'état comme Succeeded.

Cause

Lorsqu' un utilisateur ferme la session de console de l'ordinateur, le système d'exploitation envoie le message CTRL LOGOFF EVENT à l'utilitaire osql. L'utilitaire osql traite ce message comme si l'utilitaire osql est exécuté interactivement dans la session de console de l'ordinateur. Par conséquent le processus s'arrête.

Résolution

Information de Service Pack

Pour résoudre ce problème procurez-vous le dernier Service Pack Microsoft SQL Server 2000 Pour plus d'informations cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft
290211 Obtention du dernier Service Pack SQL Server 2000

Information de correctif

La version anglaise de ce correctif logiciel possède les attributs de fichier indiqués dans le tableau suivant ou ceux d'une version ultérieure Temps universel répertorie les dates et les dates de ces fichiers. Lorsque vous affichez l'information de fichier, elle est converti à l'heure locale. Pour rechercher la différence entre UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil dans Panneau de configuration Date et heure.
   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      
				
Remarque en raison de dépendances de fichiers, le correctif plus récent qui contient ces fichiers peut également contenir des fichiers supplémentaires.

Statut

Microsoft a confirmé l'existence d'un problème dans les produits Microsoft répertoriés dans la section « S'applique à » Ce problème a été corrigé dans Service Pack 4 ( SP4 ) de Microsoft SQL Server 2000.

Plus d'informations

Procédures de reproduire le comportement

  1. Ouvrez une session d'un ordinateur de Client Terminal Server.
  2. Démarrez le Bloc-notes
  3. Dans Bloc-notes, écrivez un script Transact-SQL qui s'exécute pendant un période long. Par exemple utilisez le script Transact-SQL suivant qui comporte une boucle infinie :
    declare @variable int
    set @variable= 2
    while (@variable > 1)
    begin
    print @variable
    set @variable= @variable + 1
    end
  4. Enregistrez le script comme \Test.sql InstallationDrive.

    InstallationDriveNote est un espace réservé pour le lecteur d'installation par défaut de l'ordinateur.
  5. Dans la session de Client Terminal Server, démarrez l'utilitaire osql en utilisant une des méthodes suivantes :
    • Utilisez Planificateur de tâches Windows
      1. Dans Panneau de configuration ,, ouvrez Tâches planifiées.
      2. Dans le menu Fichier, pointez sur Nouveau et ensuite cliquez sur tâche planifiée.
      3. Double-cliquez sur Nouvelle tâche pour ouvrir la boîte de dialogue Nouvelle tâche.
      4. Dans la zone Exécuter, tapez la commande suivante :
        "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql
        InstallationDriveNote est un espace réservé pour le lecteur d'installation par défaut de l'ordinateur.
      5. Dans la zone Démarrer dans, tapez InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn.
      6. Sous l'onglet Calendrier, modifiez les minutages de planification et puis cliquez sur OK.
      7. Dans la boîte de dialogue Définition des informations de compte, tapez le compte d'utilisateur et le mot de passe de votre compte d'ouverture de session et puis cliquez sur OK.
      8. Cliquez avec le bouton droit sur le travail que vous avez créé et puis cliquez sur Exécuter.
      9. Pendant que les tâches planifiées s'exécutent, ouvrez la session de console et puis fermez la session de console sur l'ordinateur.
    • Utilisez agent SQL Server
      1. Démarrez SQL Server Enterprise Manager.
      2. Développez de l'instance d'un SQL Server inscription de l'instance.
      3. Sous le nom de serveur, développez Gestion et développez puis Agent SQL Server.
      4. Sous Agent SQL Server, cliquez avec le bouton droit sur Travaux et puis cliquez sur Nouveau travail.
      5. Sous l'onglet Général, tapez un nom pour le travail dans la zone Nom.
      6. Sous l'onglet Étapes, cliquez sur Nouveau.
      7. Sous l'onglet Général, tapez un nom pour l'étape dans la zone Nom étape.
      8. Dans la liste Type, cliquez sur Operating System Command (CmdExec).
      9. Dans la zone Commande, tapez "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql -o InstallationDrive:\Test.txt , Et vous puis cliquez sur OK.

        InstallationDriveNote est un espace réservé pour le lecteur d'installation par défaut de l'ordinateur.
      10. Dans the Nouvelle propriété de travail SQLServerName boîte de dialogue vous sélectionnez, cliquez sur OK.
      11. Cliquez avec le bouton droit sur le travail que vous avez créé et puis cliquez sur démarrer le travail.
      12. Pendant que le travail est en cours d'exécution, ouvrez la session de console et puis fermez la session de console sur l'ordinateur.
    Vous notez que la tâche planifiée ou le travail d'Agent SQL Server sont arrêtés lorsque ferme votre session sur la session de console de l'ordinateur. Vous remarquez également que la tâche planifiée ou l'Agent SQL Server signalent un succès pour l'état du travail.

Références

Pour plus d'informations reportez-vous aux sites Web MSDN (Microsoft Developer Network) aux adresses suivantes
Exécuter fichiers de script Transact-SQL utilisant 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

Propriétés

Numéro d'article: 843282 - Dernière mise à jour: vendredi 2 novembre 2007 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbbug kbfix kbkern32dll kbqfe kbsqlserv2000presp4fix kbhotfixserver KB843282 KbMtfr kbmt
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que feraient une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique. Si vous relevez des erreurs graves et souhaitez contribuer à l?amélioration du système, vous pouvez compléter l?enquête à votre disposition dans le bas des articles.
La version anglaise de cet article est la suivante: 843282
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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