none
SQL SERVER 2005連線問題 RRS feed

  • 問題

  • 在客戶端有個SQL SERVER 2005資料庫,它原本就有一個圖控軟體在塞資料中

    目前寫一支程式對它做select動作,發現有時會被拒絶連線,或是明明有資料select出來確是無資料。

    請問這要如何處理?

    2012年7月4日 上午 07:34

解答

  • 請問你之前提到【Porfiler這個軟體一開後,馬上所有資料在幾分鐘後就寫不進去了】,你是從哪裡看到資料沒寫進去?

    是透過其他自行開發的程式嗎?另外當資料寫不進去的時候,那支寫資料的程式是否有出現什麼錯誤訊息?


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已標示為解答 toney621 2012年7月17日 上午 07:01
    2012年7月12日 上午 01:25
    版主
  • 您好,

    是否能看一下DB Server的SQL Server Logs(SSMS中管理的目錄內)或是看看事件顯示器中有沒有什麼異常的訊息。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 toney621 2012年7月17日 上午 07:01
    2012年7月12日 上午 01:37
  • 【Porfiler這個軟體一開後,馬上所有資料在幾分鐘後就寫不進去了】這是把實際上資料庫內容就沒有資料,一開始select不到資料以為又發生了相同的問題,但過了幾分鐘還是一樣,才查資料庫(ssms)才發現根本沒有資料寫入。

    • 已標示為解答 toney621 2012年7月17日 上午 07:00
    2012年7月12日 上午 05:54

所有回覆

  • 或許你可以試試看把那支程式使用的帳號密碼以及對資料庫的SELECT敘述,直接在 SSMS 中查詢看看,看會不會被拒絕連線或找不到資料。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月4日 上午 07:39
    版主
  • 它並不會每次都如此,偶而會出現。

    做了一個sql command的datalog,依據datalog的command直接下在ssms是ok的

    另外,我剛做了一個測試,一次用二個程式在跑,發現同一時間裏兩支程式皆會同時讀無資料或相同資料,若讀的時間差有30sec以上時則會有一支讀不到,一支ok的

    2012年7月4日 上午 08:05
  • You can set profiler trace to find out what happened. 
    2012年7月4日 下午 10:01
  • to rmiao:不懂?

    另外發現有時抓到數值竸然不是原本資料庫的數值,這是怎麼回事,第一次發生了這種情形....

    2012年7月5日 上午 12:58
  • 2012年7月5日 上午 01:43
    版主
  • 可並沒有TIMEOUT出現啊~


    2012年7月5日 上午 02:27
  • 最新測試新結果,當利用程式去select資料時,資料筆數為零時,馬上在第一時間內用相同的語法在SSMS中執行,結果是一樣的,但又過了幾秒或幾十秒後,SSMS又查到有資料了,可以請問這是什麼原因嗎?
    2012年7月5日 上午 08:22
  • 最新測試新結果,當利用程式去select資料時,資料筆數為零時,馬上在第一時間內用相同的語法在SSMS中執行,結果是一樣的,但又過了幾秒或幾十秒後,SSMS又查到有資料了
    可有能是因為鎖定的關係,鎖定是用來控制 SQL Server 連接所發出之 Transact-SQL 陳述式的鎖定和資料列版本控制行為


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」

    2012年7月5日 下午 04:13
    版主
  • 它並不會每次都如此,偶而會出現。

    做了一個sql command的datalog,依據datalog的command直接下在ssms是ok的

    另外,我剛做了一個測試,一次用二個程式在跑,發現同一時間裏兩支程式皆會同時讀無資料或相同資料,若讀的時間差有30sec以上時則會有一支讀不到,一支ok的

    請問你有試過只用一支程式去讀資料嗎?看會不會有讀不到資料的問題。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月6日 上午 12:28
    版主
  • to TerryChuang :  原本是一支程式在讀就會有的問題,因為有時讀的到有時讀不到,,所以才會用二支程式去讀(時間差)。

    to Alex Chuo:鎖定】...我覺得也是這類問題,因對資料庫認識不夠多,所以先去google查查這要怎麼弄囉。

    那如果真的被鎖定了,要如何勿略或解除(非我鎖定)???

    • 已編輯 toney621 2012年7月6日 上午 03:27
    2012年7月6日 上午 03:00
  • to rmiao:不懂?

    另外發現有時抓到數值竸然不是原本資料庫的數值,這是怎麼回事,第一次發生了這種情形....

    You don't know what's profiler or don't know how to set sql trace with profiler?
    2012年7月6日 上午 03:12
  • don't know how to set sql trace with profiler 
    2012年7月6日 上午 03:56
  • 或許你可以利用Table Hints的Nolock或是設定SET TRANSACTION ISOLATION LEVEL為READ UNCOMMITTED,不過這樣會造成Dirty Read。

    看看是不是會有讀不到資料的問題。

    http://msdn.microsoft.com/zh-tw/library/ms187373.aspx

    http://msdn.microsoft.com/zh-tw/library/ms173763.aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月6日 下午 02:07
    版主
  • don't know how to set sql trace with profiler 
    Read sql books online, it has details on how to set trace with profiler.
    2012年7月6日 下午 10:58
  • TerryChuang:已用with(nolock)語法測試中..
    2012年7月9日 上午 07:47
  • with(nolock) 的語法沒有用,一樣在select時有時會沒有資料(前一分鐘有資料,後一分鐘再查就沒有資料),這次select時間範圍從原本的一分鐘資料改成最近五分鐘資料,

    為什麼明明前一分鐘還查的到資料,下一分鐘就沒有了,再等一會兒(約30秒)再查又出現了...


    • 已編輯 toney621 2012年7月10日 上午 03:39
    2012年7月10日 上午 03:38
  • 請問這種問題發生時,有透過 SSMS 去下一相同的 T-SQL 看看資料是否存在嗎?或是有沒有可能有其他程式或TRIGGER把他刪掉了。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月10日 上午 04:02
    版主
  • 在用程式select 不到時,同時ssms也查不到資料
    2012年7月10日 上午 08:10
  • 在用程式select 不到時,同時ssms也查不到資料
    或許你可以檢查看看是否查詢語法中的JOIN或是WHERE條件把資料給過濾掉了,或是直接SELECT * FROM TABLE_NAME看看資料是否存在。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月10日 上午 08:23
    版主
  • 我的指令: select top 100 * from tableName

    就這麼單純的指令

    2012年7月10日 上午 08:38
  • 您好,

    請問SQL有設定最大的連線數嗎? 使用者密碼有設定多久要重設嗎?

    資料的部份,會不會是因為最後有程式Rollback掉了呢?

    所以可能在Dirty Read時有資料,後來Rollback就沒資料了呢?

    開啟SQL Server Profiler工具錄看看。

    select top 100 * from tableName

    來源是Table,不是View?


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已編輯 亂馬客 2012年7月10日 上午 09:11
    2012年7月10日 上午 09:09
  • to 亂馬客:

    已確認過sql最大連線數為零,使用者帳號為SA,密碼永久正確

    資料會不會有程式Rollback?我不知道,因為線上還有其它程式在存取

    Porfiler這個軟體一開後,馬上所有資料在幾分鐘後就寫不進去了(不知何原因,需重開機後才能恢復存取)

    確定來源為TABLE而非View

    另,再請教一個問題,SQL SERVER要在何處設定每幾分鐘執行指令,是否可提供範例觀看,謝謝!

    • 已編輯 toney621 2012年7月11日 上午 08:20
    2012年7月11日 上午 08:18
  • 所以從你在Profiler看到的狀況看來,似乎不是查不到資料,而是寫資料進TABLE的問題。

    或許你可以檢查你寫資料的那支程式看看。


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月11日 上午 08:25
    版主
  • .... 馬上所有資料在幾分鐘後就寫不進去了(不知何原因,需重開機後才能恢復存取)

    您好,

    請問否能檢查一下是不是磁碟空間不足,或是DB有限制大小呢? 或是有設什麼Policy


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月11日 上午 08:48

  • to TerryChuang  : 因為客戶的資料寫入非是我司處理,無法得知情形及處理,我只是將其資料撈出顯示而以,但以事後查竸會有顯示與實際資料庫內容不符的情形,才會查到這一切的情形。

    to 亂馬客 : 磁碟空間夠,也沒有限制DB的大小,另外DB是否有其它設定我就不知道了,因為原本接的內容只有將其資料撈出顯示而以。

    2012年7月12日 上午 01:16
  • 請問你之前提到【Porfiler這個軟體一開後,馬上所有資料在幾分鐘後就寫不進去了】,你是從哪裡看到資料沒寫進去?

    是透過其他自行開發的程式嗎?另外當資料寫不進去的時候,那支寫資料的程式是否有出現什麼錯誤訊息?


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已標示為解答 toney621 2012年7月17日 上午 07:01
    2012年7月12日 上午 01:25
    版主
  • 您好,

    是否能看一下DB Server的SQL Server Logs(SSMS中管理的目錄內)或是看看事件顯示器中有沒有什麼異常的訊息。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 toney621 2012年7月17日 上午 07:01
    2012年7月12日 上午 01:37
  • 【Porfiler這個軟體一開後,馬上所有資料在幾分鐘後就寫不進去了】這是把實際上資料庫內容就沒有資料,一開始select不到資料以為又發生了相同的問題,但過了幾分鐘還是一樣,才查資料庫(ssms)才發現根本沒有資料寫入。

    • 已標示為解答 toney621 2012年7月17日 上午 07:00
    2012年7月12日 上午 05:54
  • Which events did you trace in profiler? Did you see any app connections?
    2012年7月12日 下午 01:40
  • Profiler我只是新增』->設定存入資料庫->確定
    2012年7月16日 上午 02:04