SQL Server 「逾時過期」的處理方式
基本上 SQL Server 只要在處理大量資料的指令,如 INSERT INTO A SELECT * FROM B 在資料量很大的時候,很容易發生 Timeout ,也就是常見的「逾期過時」錯誤。
SQL Server 本機用 Enterprise Manager 執行的話還好處理,只要更改設定值就好了。(工具->選項->進階,加大逾時秒數)。
但是絕大部份都是在 Remote 下 SQL Command ,只要量稍大,這種「逾期過時」出現的機率也隨之增加。
解決的方式最好是加大 SQL Server Remote Command 的 Timeout 時間,只要在 SQL Queryer 裡面下:
USE master
GO
EXEC sp_configure 'remote query timeout', 6000
GO
RECONFIGURE
GO
6000 代表的是秒數,也就是 6000 秒(SQL Server預設是 600 秒,)。
另一種就是用外部程式來處理,但是可能還是會受限於 SQL Server 的限制,尤其 ADODB 在這部份還有嚴重的Bug,詳見:
PRB: CommandTimeout Does Not Inherit From Connection Timeout
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q195489
程式設定 CommandTimeout 處理的範例:
Dim conn As New ADODB.Connection
conn.Open(ConnStr)
conn.CommandTimeout = 600 '秒
conn.Execute("INSERT INTO A SELECT * FROM B")
conn.Close()
conn = Nothing
需注意的是在 ADODB 2.6 以前,CommandTimeout 不可以設為 0 (無限制時間),非不得以要使用的話,必須使用 ADODB.Command,詳見:
FIX:使用 Connection 物件時的 CommandTimout 屬性問題
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;175264
2008年3月10日
This virtual machine appears to be in use.
This virtual machine appears to be in use.
執行環境:VMWARE 6
當執行VMWARE GUEST OS時,
若出現以下錯誤訊息:
Could not open virtual machine: D:\GuestOS\QP_20070619\Windows Server 2003 Standard Edition.vmx. This virtual machine appears to be in use.
Configuration file: D:\GuestOS\QP_20070619\Windows Server 2003 Standard Edition.vmx
解決方法:刪除GUEST OS資料夾底下的.lck檔案
參考:http://www.vmware.com/community/thread.jspa?messageID=673176
執行環境:VMWARE 6
當執行VMWARE GUEST OS時,
若出現以下錯誤訊息:
Could not open virtual machine: D:\GuestOS\QP_20070619\Windows Server 2003 Standard Edition.vmx. This virtual machine appears to be in use.
Configuration file: D:\GuestOS\QP_20070619\Windows Server 2003 Standard Edition.vmx
解決方法:刪除GUEST OS資料夾底下的.lck檔案
參考:http://www.vmware.com/community/thread.jspa?messageID=673176
訂閱:
文章 (Atom)