我有一個Visual FoxPro表,我需要從Sql Server訪問。在Sql Server x86中,我只需創建一個鏈接服務器。不幸的是,VFP沒有x64驅動 - 所以Sql Server x64無法爲它創建鏈接服務器。Sql Server x64和x86鏈接服務器
到目前爲止,我想出了以下選項 - 其中沒有我特別喜歡:
- 設置x86 SQL Server以用作中繼,以便查詢從去x64 - > x86 - > VFP。
我真的不關心這個,因爲除了是開發,我也是系統管理員。所以,這意味着我需要修補,維護和監視另一個Sql Server - 可能還有另一個服務器(假設我不只是使用單獨的實例)。
此外,由於VFP提供程序不能使用4部分語法,因此必須使用OPENQUERY。所有的單引號逃逸的是思考就需要恰好有嵌入到另一個OPENQUERY語句的OPENQUERY語句讓我目瞪口呆....
- 創建一個CLR表值函數,雖然議會將(可能?)也有64 - 所以我不得不出去PROC的(?IPC web服務)來實際運行查詢
- 停止使從SQL Server查詢VFP,和重寫的客戶端代碼好位
原來,TVFs需要一個架構,所以這個選項並不像我最初想象的那樣乾淨。我做了一個尖峯使WCF客戶端進入MSSQL,它返回一列XML,然後可以使用Sql XML數據類型函數進行分析。它的工作原理,實際上比OPENQUERY查詢更好一些,因爲它實際上將變量作爲參數。這節省了我大部分的單引號和EXEC舞蹈。
當然,Sql裏面的WCF是完全不受支持的,聞起來像是一個很大的黑客攻擊。我對性能和可靠性有非常嚴肅的保留。
顯然,這是 「正確」 的答案。但是,有大量的客戶端代碼依賴於Sql Server表和VFP表之間的連接。重寫這些東西來填充臨時表或者做客戶端連接似乎是一個相當大的負擔。
這裏希望有人可以建議一個更好的選擇,或一些類似的經驗。
當試圖將FoxPro數據轉換爲64位機器上的SQL Server時,我們遇到了類似的問題。因爲這是一筆一筆的交易與你的第一選擇。 – Clinemi 2009-01-30 06:00:50