如果您藉由使用一項背景服務從遠端工作階段啟動程式, 然後將主控台工作階段登出 FIX: The Osql . exe 公用程式就不會執行 Transact - SQL 指令碼完全

文章翻譯 文章翻譯
文章編號: 843282 - 檢視此文章適用的產品。
BUG #: 471423 (SQL Server 8.0)
Microsoft 發佈 Microsoft SQL Server 2000 Hotfix 為一可下載的檔案。 因為 Hotfix 是累積性的, 每個新版本包含所有 Hotfix 而且所有安全性修正程式所隨附舊 SQL Server 2000 Hotfix 版。
全部展開 | 全部摺疊

在此頁中

徵狀

在啟動 osql 公用程式 (Osql . exe) 藉由使用背景服務像 SQL Server 代理程式或 Windows 工作 Microsoft 排程器, 如果從在電腦上, 主控台工作階段登出使用者之後, 您可能會發現, osql 公用程式停止而並不未完全執行, 傳遞至 osql 公用程式指令 Transact - SQL 碼。 即使 osql 公用程式會停止, 但不完全執行 Transact - SQL 指令碼, 背景服務表示工作已成功。 會舉例來說, SQL Server 代理程式顯示狀態為 [ 。

發生的原因

將 CTRL_LOGOFF_EVENT 訊息從主控台工作階段的電腦, 使用者登出時作業系統傳送給 osql 公用程式。 如同 osql 公用程式是執行以互動方式在主控台活動的電腦會 osql 公用程式處理此訊息。 因此, 處理程序停止。

解決方案

Service Pack 資訊

如果要解決這個問題, 取得最新的 Service Pack for Microsoft SQL Server 2000。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件::
290211 如何取得最新的 SQL Server 2000 Service Pack

Hotfix 資訊

此 Hotfix 的英文版具有下列表格中所列的檔案屬性 (或更新)。. 日期和時間為這些檔案會列在 Coordinated Universal Time (UTC)。 當您檢視檔案資訊時,它會轉換為當地時間。. 在 [ 控制台 ] 的日期和時間 ] 工具來尋找 UTC 和本機時間, 之間的差異使用 [ 時區 ] 索引標籤。
   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      
				
注意 因為的檔案相依性, 最新版 Hotfix 包含這些檔案可能也包含其他檔案。

狀況說明

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。. 在 Microsoft SQL Server 2000 Service Pack 4 初次修正這個問題。

其他相關資訊

步驟來重現問題

  1. 開啟終端機伺服器用戶端工作階段的電腦。
  2. 啟動 [ 記事本 ]。
  3. 在記事本, 撰寫在長時間執行的 Transact - SQL 指令碼。 舉例來說, 請使用下列 Transact - SQL 指令碼, 具有無限迴圈:
    declare @variable int
    set @variable= 2
    while (@variable > 1)
    begin
    print @variable
    set @variable= @variable + 1
    end
  4. 將指令碼儲存為 InstallationDrive \Test.sql。

    注意 InstallationDrive 是預留位置為預設的磁碟機安裝在電腦上。
  5. 在終端機伺服器用戶端工作階段, 啟動 osql 公用程式藉由使用的下列方法之一:
    • 使用 Windows 工作排程器
      1. 在 [ 控制台 ], 開啟 [ 排定的工作 ]。
      2. 在 [ 檔案 ] 功能表, 指向 New , 然後再按一下 [ 排定的工作 。
      3. 按兩下 [ 新增任務 , 開啟 [ 新增任務 ] 對話方塊。
      4. 在 [ 執行 ] 方塊, 輸入下列命令:
        "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql
        注意 InstallationDrive 是預留位置為預設的磁碟機安裝在電腦上。
      5. 在 [, 在 [ 開始 ] 方塊鍵入 InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn.
      6. 排程 ] 索引標籤上變更排程時間, 並按一下 [ 確定 ] 。
      7. 在 [ 設定帳戶資訊 ] 對話方塊, 請輸入您的登入帳戶, 的使用者帳戶及密碼然後再按一下 [ 確定 ]
      8. 在您建立, 在工作上按一下滑鼠右鍵並按一下 [ 執行 。
      9. 排程工作執行時登入到主控台工作階段, 然後再從電腦上的主控台工作階段登出。
    • 使用 SQL Server 代理程式 」
      1. 啟動 SQL Server Enterprise Manager。
      2. 展開已註冊的 SQL Server 執行個體。
      3. 在伺服器名稱, 展開 [ 管理 , 然後再展開 [ SQL Server 代理程式 。
      4. 在 [ SQL Server 代理程式 ,, 工作 (Jobs)] 上按一下滑鼠右鍵並按一下 [ 新增工作 。
      5. 在 [ 一般 ] 索引標籤, 在 名稱 ] 方塊中輸入一個名稱給此工作。
      6. 在 [ 步驟 ] 索引標籤, 按一下 [ 新增 ] 。
      7. 為步驟在 [ 一般 ] 索引標籤, 在 [ 名稱 ] 方塊輸入名稱。
      8. 在 [ 類型 ] 清單, 按一下 [ 作業系統命令 (CmdExec) 。
      9. 在 [ 命令 ] 方塊, 鍵入 "InstallationDrive:\Program Files\Microsoft SQL Server\80\Tools\Binn\Osql.exe" -E -i InstallationDrive:\Test.sql -o InstallationDrive:\Test.txt 然後按一下 [ 確定 ]

        注意 InstallationDrive 是預留位置為預設的磁碟機安裝在電腦上。
      10. 在此 SQLServerName 新工作屬性 - 對話方塊中, 按一下 [ 確定 ]
      11. 在您建立, 在工作上按一下滑鼠右鍵並按一下 [ 開始工作 。
      12. 工作執行時登入到主控台工作階段, 然後再從電腦上的主控台工作階段登出。
    您注意到 SQL Server 代理程式作業排程工作或當您登出之該電腦主控台工作階段已經停止。 您也注意到, 排定的工作或 「 SQL Server 代理程式 」 報告成功進行的作業狀態。

?考

如需詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站::
執行 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

屬性

文章編號: 843282 - 上次校閱: 2007年11月2日 - 版次: 3.2
這篇文章中的資訊適用於:
  • 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
關鍵字:?
kbbug kbfix kbkern32dll kbqfe kbsqlserv2000presp4fix kbhotfixserver KB843282 KbMtzh kbmt
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。
按一下這裡查看此文章的英文版本:843282
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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