線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4937
推到 Plurk!
推到 Facebook!

tsqlquery数据更新提示sql state: hy000 ;sql error code :0;错误!

尚未結案
nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-12-01 15:54:12 IP:39.190.xxx.xxx 訂閱
使用datasnap开发三层,采用dbexpress数据库连接组件和tsqlquery更新数据到ms sql server中提示sql state: hy000 ;sql error code :0;连接繁忙导致另外一命令的错误。在更新前断开数据库连接就可以正常更新了。这样每次update数据都要先断开数据库连接,而在更新数据时有要连接,对效率影响太大了。
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-12-01 16:45:08 IP:36.231.xxx.xxx 訂閱

SocketConnection 多開幾個就好啦

nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-12-01 21:06:09 IP:39.190.xxx.xxx 訂閱
和socketconnection连接数无关啊。采用的是连接池。每次更新前都要先关闭连接,而下步更新时又要连接,连接数据库服务器太影响应用服务器效率
leveon
資深會員


發表:30
回覆:389
積分:303
註冊:2012-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-12-02 13:47:50 IP:111.241.xxx.xxx 訂閱
猜測是SqlConnection的連線資源被Sql server回收了
找找有沒有keep connection之類的屬性
或拉長SQL server time out的設定

如果架構上要作pool
那pool應該要有維持SQL永續連線的能力或機制

===================引 用 nantony 文 章===================
和socketconnection连接数无关啊。采用的是连接池。每次更新前都要先关闭连接,而下步更新时又要连接,连接数据库服务器太影响应用服务器效率
nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-12-02 14:24:41 IP:39.190.xxx.xxx 訂閱
设置了keepconnection:=true。没有用。估计和dbexpress的架构有关
nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2013-12-02 14:31:57 IP:39.190.xxx.xxx 訂閱
问题不是要保持连接状态,而是要在更新数据时必须先断开连接才能更新。十分奇怪。但是使用adoconnection就不会。另外发现采用tsqlconnection连接sql server时不能自己控制事务了,只能使用默认的sql server事务方式。版本xe2,更新数据时ResolveToDataSet:=False;dbexpress还是感觉不成熟啊。
leveon
資深會員


發表:30
回覆:389
積分:303
註冊:2012-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2013-12-02 14:42:50 IP:111.241.xxx.xxx 訂閱
dbexpress 的品質跟驅動程式實作有關
你可以試試 3方的驅動
譬如
http://www.devart.com/dbx/?gclid=CPnooIH3kLsCFYPrpAodTFsACw

http://www.upscene.com/products.index.php

內建的估計是很糟糕 否則不會有3方的存在

我講的
"pool應該要有維持SQL永續連線的能力或機制"
是指說pool平常就應該去自我檢查SQL的連線狀態
假使SQL server當掉了 或什麼因素無法提供服務
pool應該有能力去做出處理 譬如尋找備援SQL 或警示等等...

至今 我還沒有看過Delphi上 有比較好的現成方案


===================引 用 nantony 文 章===================
问题不是要保持连接状态,而是要在更新数据时必须先断开连接才能更新。十分奇怪。但是使用adoconnection就不会。另外发现采用tsqlconnection连接sql server时不能自己控制事务了,只能使用默认的sql server事务方式。版本xe2,更新数据时ResolveToDataSet:=False;dbexpress还是感觉不成熟啊。
編輯記錄
leveon 重新編輯於 2013-12-02 18:38:38, 註解 無‧
nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2013-12-02 21:41:07 IP:39.190.xxx.xxx 訂閱
感觉还是使用dbgo稳定些。至于pool中conn的连接状态到不需要一直维持。资源消耗太大
nantony
一般會員


發表:3
回覆:7
積分:2
註冊:2010-11-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2013-12-02 21:43:41 IP:39.190.xxx.xxx 訂閱
 感谢大家的答复。特别是 leveon。很高兴在这里和大家交流。
系統時間:2024-04-25 14:44:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!