2010-04-28 50 views
3

我依稀記得在某處(MSDN ODBC文檔?)某個應用程序無法與單個數據源建立多個連接。在我看來,我需要一個應用程序的所有線程必須共享的連接。 我正試圖查看這些信息,但我似乎無法再找到它了。有誰知道/記得這是如何工作的?
這一切都可能成爲我們的應用程序的問題,因爲它的一些線程將動態連接到他們選擇的數據源。我不想看到隨機連接錯誤,如果其中兩個將同時連接到一個來源,所以我想仔細檢查此信息。ODBC - 從一個應用程序到同一個數據源的多個連接

+0

我不記得任何這種ODBC的一般限制。 MS文檔的快速瀏覽在SQL 2008文檔(與SQL Server(ODBC)通信)中說明了這一點: 「應用程序可以連接到任意數量的數據源,應用程序可以使用驅動程序和數據源的組合,相同的驅動程序和數據源組合,甚至相同的驅動程序和多個連接到相同的數據源。「 – 2010-04-28 15:59:35

+0

感謝您的答案 - 我明顯錯誤 - 某些_drivers_可能不支持來自同一應用程序的多個連接,但ODBC不具備此限制。還要感謝關於這些聲明的其他相關信息。 – 2010-05-10 14:38:50

回答

2

也許您在the MSDN documentation中提到的語句是說只有一個語句可以在單個連接上處於活動狀態。它說:

多個每個連接的活動語句

SQL Server已收到聲明後,在SQL Server TDS協議不允許接受來自該連接的任何其他聲明,直到一個的發生以下情況:

  • 客戶端應用程序處理整個結果集。
  • 客戶端發送一條語句,告訴服務器它可以關閉結果集的其餘部分。

這意味着,當ODBC應用程序使用默認結果集時,SQL Server不支持連接句柄上的多個活動語句句柄,並且只能在任何時間點主動處理一個語句。

但是,當ODBC應用程序使用API​​服務器遊標時,驅動程序可以支持連接上的多個活動語句。當每個遊標命令的行集已經在客戶端接收到時,SQL Server就認爲該語句已經完成,並且接受來自該連接句柄上另一個語句句柄的另一個語句。

多個連接都很好。每個連接多個語句,不太好。

1

不,在ODBC本身沒有這樣的限制。有可能某個特定的驅動程序可能出於某種原因限制了連接,但根據規範我沒有意識到任何限制。