從Windows XP客戶端使用Windows身份驗證時,我們使用SQL Server 2005鏈接表的MS Access應用程序速度很慢。MS Access 2003 +將錶鏈接到SQL Server 2005 + Windows身份驗證=緩慢
我們一直在使用SQL Server身份驗證成功運行它,但現在我們想要轉移到Windows身份驗證以獲得更好的安全控制。
設置:
- 數據庫服務器:Windows 2003服務器,SQL Server 2005 SP2的
- 客戶端:WINDOWS XP SP3,SQL Server ODBC驅動程序v2000.85.1132.00
- MS Access應用程序:MS訪問2003
- 連接字符串:
DRIVER=SQL Server;SERVER=[server name];Connect Timeout=300;Trusted Connection=True;APP=Microsoft Office 2003;WSID=[server name];DATABASE=[db name]
- 只有TCP/IP網絡協議在服務器上啓用。
的緩慢並不在這些情況下發生:
- 應用的數據庫服務器,SQL Server身份驗證
- 應用的數據庫服務器,Windows身份驗證
- 應用程序的Windows XP客戶端上, SQL Server身份驗證
- 客戶端上的SQL Server Management Studio,Windows身份驗證 - 我在SQL MS中運行15個查詢做了一個小測試。這很快,並沒有導致服務器上的安全事件日誌中的任何登錄/註銷事件。
我已經分析了使用SQL Server Profiler和服務器上的事件日誌緩慢,似乎歸結爲這樣:
- 應用程序運行一個查詢
- 到一個新的連接SQL Server已打開(在SQL Server Profiler中可見)
- 驗證用戶身份(在服務器上的安全事件日誌中可見,發生登錄/註銷事件)。這需要幾百毫秒。
- 查詢SQL Server上運行
- 結果返回給訪問
發生這種情況,每次查詢。某些表單在顯示新記錄(更新子表單,裝載組合值等)時運行+ - 10查詢。這導致性能非常低下。
當然,爲每個查詢建立到SQL Server的新連接不是必需的,重用連接可能會解決問題。我一直在尋找有關如何確保Access/ODBC執行正確連接池的信息。我發現這些MS KB文章:
Frequently Asked Questions About ODBC Connection Pooling
How to Enable Connection Pooling in an ODBC Application
我已經打過電話從Access應用程序的主要形式SQLSetEnvAttr功能,但是這並沒有改善的結果。
任何幫助是極大的讚賞。
您可能還會檢查您是否遇到了解決正在進行身份驗證的域控制器名稱的客戶端的DNS問題。我發現DNS問題可能是Access/ODBC/SQL Server的各種奇怪問題的原因,這些問題似乎沒有關係。 – 2009-07-24 20:31:56
我認爲芬頓正在走上正軌。前端應用程序是否在與SQL Server實例不同的域/林中運行? – JohnFx 2009-07-24 20:48:08
你可以發佈你的連接字符串嗎?請體諒你的本地價值觀。 :) – 2009-07-27 20:42:19