2013-01-10 169 views
0

上搜索的淨進出,無法找到,適當的信息,我們擁有了利用Delphi 7和BDE連接到SQL Server 2005現在德爾福7 BDE的SQL Server 2012

我們是一個傳統的設置計劃遷移到SQL Server 2012時,它有可能工作或沒有工作的機會有多大?

+1

對於BDE的機會減少到新客戶端向後兼容舊客戶端的機會,或者舊SQL客戶端可以連接到新服務器。你爲什麼要標記這個dbExpress? – jachguate

+0

BDE在十年前就被棄用了,並且在Delphi的當前版本中死掉了(它不再包含在發行版中),這意味着您至少有十年時間可以用ADO等更現代的驅動程序取而代之。由於它不適用於SQL Server 2012,因此看起來您現在必須做更換(這樣做的時間要少很多)才能完成遷移。 –

回答

0

如果您使用的是SQL Links MSSQL驅動程序,那麼將無法實現針對SQL Server 2012的目標。我已經能夠將SQL鏈接與SQL Server 2000以上的新功能結合使用的唯一方法是將數據庫兼容性級別設置爲「SQL Server 2000(80)」。這在SQL Server 2012中是不可能的。此版本中可用的最舊兼容級別是「SQL Server 2005(90)」。

SQL Links將向服務器發送無效SQL,例如外連接的「* =」語法。爲SQL Server 2005及更高版本設置的數據庫將不接受此語法。

-1

我們已經成功使用BDE和SQL Server 2008R2。沒有特別的配置。

編輯:我今天也在SQL Server 2014上初步成功。有限的測試,但迄今爲止非常好!

格雷格

+1

這個問題特別提到了有關SQL Server 2012的問題。 –

+0

肯,但是相關的信息通常很有幫助。至少它一直是我的。 – gregsohl

+0

您能否請您提供如何完成這些步驟? –

0

我們已經通過了Delphi 7 ADO數據控制組件(例如TAdoQuery,TAdoCommand)是用Delphi 7與SQL Server 2012不顯著的問題。存儲過程也可以正常工作,並且可以通過ADO命令對象(TAdoCommand)調用函數。

我們使用SQL Server 2012附帶的SQL Server Native Client 11.0 ODBC驅動程序.Delphi將它視爲另一個ODBC數據接口。從表面上看,它很像在Delphi 7中使用MS Access(通過ADO組件和Access OLE驅動程序)。對於SQL Server 2012的任何Service Pack(s?)都沒有問題。 (對不起,我不記得2012年SP發佈的是什麼,但是我們與這些SP沒有任何區別,並且我們已經測試過了)。

大部分開發工作都是在Windows 7 64位操作系統上完成的,並且都是在64位操作系統上執行的,並且在Windows Server 2008和2008R2上執行。執行Delphi編譯的可執行文件(顯然都是32位的)不需要特殊的設置。

如果使用ODBC「別名」,請確保使用32位ODBC DSN而不是64位ODBC DSN。 64位ODBC管理員是64位Windows的控制面板\管理工具中的一個 - 不要在此處使用它。使用Windows的SysWOW64中的32位ODBC管理器:C:\ Windows \ SysWOW64 \ odbcad32.exe。 64位ODBC DSN位於與32位DSN不同的空間中。 Delphi 7是一款32位應用程序,無法訪問64位DSN(我猜測出的API不同)。

我們在SQL語句中也可能有註釋問題。我認爲該行評論(「 - 」)無效,但多行註釋起作用(「/ ... /」)。

請注意,儘管BDE由Corel保留(作爲Paradox Runtime發佈到今天;但引擎被凍結,但在現代Windows操作系統中確實存在一些問題),但不需要訪問SQL Server數據。我們直接通過Windows ODBC API使用ODBC別名(我們在Delphi中編寫了封裝以使這個微不足道)。但是,仍然可以使用BDE作爲這些ODBC DSN別名的接口。如果你根本不使用別名(並且在源代碼中不包含對DbTables.pas的任何引用),那麼根本就不需要BDE。 DbTables.pas始終在初始化INTIALIZATION塊中的全局Sessions變量時初始化BDE。你可以在DbTables.pas源代碼單元的底部看到它。沒有這個單位,BDE不會被初始化或使用。(這也意味着你不能使用TTable或TQuery組件,但這些組件只適用於Paradox數據; ADO組件如TAdoTable(除非要將整個數據表加載到內存中,否則不要使用它),TAdoQuery或TAdoCommand完全是獨立的

另一個訣竅是使用MS Access數據庫和鏈接表來在SQL Server和Paradox數據表之間進行接口,如果你仍然需要使用BDE本地(即Paradox)表,但有時候Access和BDE不會'玩耍得很好。

遷移早已完成,我敢肯定,但如果其他人尋找相同的答案。傳統的軟件,有對生活的一種習慣......