[sql server]超時時間已到。在操作完成之前超時時間已過或伺服器未響應。
原因分析:
1.如果用到了事務處理
在事務開始begintransaction()與事務結束transaction.commit()中間用到了沒有啟動事務的過程,如其他查詢等,會提示此錯誤。另外一種情況就是沒有正確的使用事務導致表被鎖定,此時也會引起超時。
2.ado.net的使用引發的問題
connection未及時關閉也會引發超時的問題。另外就是command命令執行超時,此時根據需要可以修改command.commandtimeout的時間,預設時間為30秒。
3.web頁面執行超時,如上傳大批量的檔案
需要修改配置檔案:
表解鎖的方法:
select id from sysobjects where name='tablename' --查詢表名為tablename的表的id
exec sp_lock --執行該儲存過程得到所有鎖定的表的資訊,根據前一步中查到的id可找到spid資訊即程序id
kill spid --解鎖,例如kill 70 就是關閉程序id為70的鎖定表的程序
以上是表解鎖的方法,根本的解決方法還是得找出引起表被鎖定的原因。我遇到的情況是未正確使用事務引起的。
另外,在未解鎖的情況下可以使with (nolock)來執行sql,例如select username from user with (nolock) where userid=101 。
參考:
引起超時的原因及表解鎖的方法
sql server 超時時間已到。在操作完成之前超時時間已過或伺服器未響應。原因分析 1.如果用到了事務處理 在事務開始begintransaction 與事務結束transaction.commit 中間用到了沒有啟動事務的過程,如其他查詢等,會提示此錯誤。另外一種情況就是沒有正確的使用事務導致...
引起超時的原因及表解鎖的方法《轉》
原因分析 1.如果用到了事務處理 在事務開始begintransaction 與事務結束transaction.commit 中間用到了沒有啟動事務的過程,如其他查詢等,會提示此錯誤。另外一種情況就是沒有正確的使用事務導致表被鎖定,此時也會引起超時。2.ado.net的使用引發的問題 connect...
引起超時的原因及表解鎖的方法《轉》
原因分析 1.如果用到了事務處理 在事務開始begintransaction 與事務結束transaction.commit 中間用到了沒有啟動事務的過程,如其他查詢等,會提示此錯誤。另外一種情況就是沒有正確的使用事務導致表被鎖定,此時也會引起超時。2.ado.net的使用引發的問題 connect...