|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
蔡文華
註冊時間: 2005-10-31 文章: 118
第 1 樓
|
發表於: 星期二 一月 04, 2011 9:49 pm 文章主題: 更新DBC裡的遠端VIEW,程式都會當掉,連同其它電腦的SQLSERVER也會同時停住 |
|
|
各位大大好,這次我又遇到問題了,先說明一下狀況,
有一台多工的伺服器,WIN2003SERVER+SQLSERVER
同時有五台個人電腦連到這到主機讀取SQLSERVER並寫入
現在遇到一個問題...
在單機上我寫了程式只要是有新增,刪除,修改記錄的我都使用 SQLEXEC() 的方式直接將資料寫到主機去...
因為五台電腦同時都有人在寫資料到主機的SQLSERVER去
而因為每台電腦都必須即時的反應出後台被寫入的資料...
所以我在每台電腦上都建有一個.DBC的資料庫,然後使用遠端VIEW去對應SQLSERVER的每一個TABLE,這樣當單機程式寫入SQLSERVER後,我都會
順便使用 =REQUERY() 去更新遠端VIEW的記錄,好提供給單機程式下 SELECT ...WHERE (遠端VIEW) 時使用....
現在問題來了....如果只有一台電腦在KEY單時,都不會有問題,
但是只要二台電腦同時KEY單時,每當下SQLEXEC() 將資料寫回後,在使用=REQUERY() 去更新VIEW的資料時,有時就會整個當住,而且當住..是連其它台電腦在執行SQLSERVER存取時都會跟著當.....
我想請教這種情況要如何排除呢?? |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 2 樓
|
發表於: 星期二 一月 04, 2011 9:57 pm 文章主題: 述上面問題 |
|
|
特別說明:程式當了..是完全沒有任何錯誤訊息...只是就停在 =REQUERY() 那一行指令...然後等很久也沒任何消息了.....連其它台電腦只要到要去SQLSERVER讀取資料的也都當.....也沒任何錯誤訊息....
真的很頭痛 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 3 樓
|
發表於: 星期二 一月 04, 2011 10:13 pm 文章主題: |
|
|
個人覺得, 依賴DBC的遠端VIEW,不是好方法
因為您不知道VFP是如何處理的,
還是直接用 SPT 去處理 SQL Server 較為妥當
有問題也好判斷 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期三 一月 05, 2011 12:07 am 文章主題: |
|
|
應該研究一下,
SQL SERVER的鎖定機制 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 5 樓
|
發表於: 星期三 一月 05, 2011 8:57 am 文章主題: 如上述 |
|
|
問題在我單機裡的.DBC產生的遠端VIEW,只做查詢動作,並沒有開放可以更新,這樣也會有SQL鎖定的問題嗎?
VIEW只有查詢功能,要得到最新的資料最下=REQUERY()更新,也會有鎖定的問題嗎?
我個人的測試,好像在VIEW的資料於SQLSERVER上的資料有不同時,而我又下了=REQUERY(),才會整個當住,請問還有那裡我沒做到嗎 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 6 樓
|
發表於: 星期三 一月 05, 2011 9:17 am 文章主題: |
|
|
有沒有變成DEADLOCK,請看SQL SERVER Enterprise manager _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 7 樓
|
發表於: 星期三 一月 05, 2011 9:34 am 文章主題: 如上述 |
|
|
我有到sqlserver去看如果單機使用requery()的那個表格當住了...
我用主機的sqlserver去開那個表格...真的無法被開啟....
還是我用sqlserver工具可以如何去查看現在的情況 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 8 樓
|
發表於: 星期三 一月 05, 2011 10:29 am 文章主題: |
|
|
不知道你是哪一版sql server......
總之,差不多在這裡,被鎖定時會出現"被xxx處理序鎖定"的樣子,不太記得. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 9 樓
|
發表於: 星期三 一月 05, 2011 10:34 am 文章主題: |
|
|
如果你都使用 SPT,
原則上都會是離線cursor,就不會有鎖定的問題,
但是要自行處理離線cursor與sql table,可能因為"某些情況"更新不了的問題.
但如果是 remote view,
那就要小心在 remote view與sqlexec() 之間混用的時候,會不會踩到地雷,
但是我因為沒使用 remote view,經驗值不足, XD
當初技術評估時就預估可能有這種情況出現,所以就沒考慮remote view了. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙
syntech 在 星期三 一月 05, 2011 11:47 am 作了第 1 次修改 |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 10 樓
|
發表於: 星期三 一月 05, 2011 11:45 am 文章主題: 如上述 |
|
|
主機的作業系統 windows2003server
sqlserver 2000 + sp4 |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 11 樓
|
發表於: 星期三 一月 05, 2011 11:46 am 文章主題: 如上述 |
|
|
我發現如果單機當住了....
連主機的sqlserver整個的效能就變慢了...
好像老牛拖車一樣 |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 12 樓
|
發表於: 星期三 一月 05, 2011 11:51 am 文章主題: 如上述 |
|
|
在這裡要請問...
如果我採用spt的cursor...
那我開啟了cursor後,當sqlserver有更新時....
我如何更新前端的cursor呢?是否要重新select呢??如果是...
那舊的cursor會被關掉再從新建一個相同cursor名稱的表格...
那如果有form裡的grid一直引用該cursor名稱...則會整個變成空白...
....不知如何處理..在不關掉該cursor的情況下....重新更新裡面的記錄呢? |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 13 樓
|
發表於: 星期三 一月 05, 2011 11:59 am 文章主題: |
|
|
這就是人家說的"KNOWHOW"了. XD _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
ericklin
註冊時間: 2007-11-14 文章: 107 來自: 台中市
第 14 樓
|
發表於: 星期三 一月 05, 2011 1:41 pm 文章主題: |
|
|
我用remote view很久了 還沒遇到這樣的問題
建議幾個方向調整試試看:不一定有效
1.update view 後 把view table 關閉 或者 再requery() 一次沒出錯 再 關閉
<<我再猜是更新到 sql server未完成>
2.client端只查看的remote view的資料緩充 改成 0 (不使用) -->影響應該不大
3.更新完成後 SQLDISCONNECT( ) |
|
回頂端 |
|
|
蔡文華
註冊時間: 2005-10-31 文章: 118
第 15 樓
|
發表於: 星期四 一月 06, 2011 11:38 am 文章主題: |
|
|
我又另做了一個測試,就是全部使用 remote view 做更新 buffering ,5 ,
然後每次做 =tableupdate() , =requery() 時我都會在後面在加上 unlock in xxx 去開鎖
然後...我在每台單機的程式的.dbc 裡 要連sql server的字串,每一台登入字串的帳號密碼不同...
這樣當掉的機率就沒那麼經常了...我在想是不是同一組帳號存取sql server來快了..因為客戶
的打單量很大...所以會經常的 =tableupdate , =requery ...而且都用同一組帳號登入存取
會不會讓sql server認為是攻擊..或量太大而當了 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|