2010-01-09 215 views
1

我有需要SQL Server 2000作爲數據庫存儲的應用程序。 我真的不想使用SQL Server 2000,但我可以改用MySQL服務器。欺騙SQL Server

應用程序使用ODBC連接到SQL Server數據庫。

我想知道是否有可能使假的SQL Server將從MySQL服務器

應用< ---> ODBC管理器發送和接收數據/ < --->假SQL Server驅動程序< ---> mysql服務器

任何一個,如果這樣的事情是可以做出來的?

回答

5

如果您的應用程序通過ODBC驅動程序簡單地使用vanilla SQL,那麼您應該能夠使用MySQL,而且幾乎沒有問題。如果它使用SQLServer的特定功能,那麼你需要SQLServer - 你不能真實地僞造它。

+0

我的應用程序使用microsoft sql server。它也使用odbc。還應用程序正在運行的程序只有 – DanSpd 2010-01-09 22:02:30

+5

然後你可能塞滿了。與MySQL實現的非常簡單的語言相比,SQLServer存儲過程語言(T-SQL)是一個巨大的野獸。兩者不兼容。 – 2010-01-09 22:04:39

+0

SQL方言是不同的,因此您必須檢查每個過程,並且可能必須重寫其中的大部分過程。 – 2010-01-09 22:04:41

0

您可以使用提供者模型,只需在運行時切換使用哪個提供者即可。

當然,最大的問題將在於不同的SQL代碼支持。所以你必須注意,你所有的SQL都位於每個提供者的內部,並且遠離將它嵌入到應用程序邏輯中的任何形式......無論如何你應該這樣做。

另一種方法是在部署時簡單更改ODBC數據源,但同樣需要確保SQL代碼在兩種環境中都能正常工作;這是艱難的。

通常支持多個數據庫後端本身就是一種藝術形式。 SQL Server 2k的SELECT TOP 100和MySql的LIMIT命令等簡單的東西足以讓人們避免這樣做。

因爲數據庫服務器根本不同,所以沒有真正的「僞造」它的方法。你最終會寫一大堆代碼來將SQL調用從一個轉換到另一個......這是浪費時間。

我建議你只是硬着頭皮學習MS SQL Server。

This site顯示了SQL Server,Oracle和MySql在select語句的一個實現方式上的差異的一個非常簡單的示例。

+0

我知道代碼中的差異,但我的應用程序只運行程序「exec procedure 12,15,'blabla'」和mysql有這樣的事情,但有點不同。也我認爲代碼轉換器可以編碼,所以它會將SQL 2000轉換爲MySQL,反之亦然。 – DanSpd 2010-01-09 22:11:44

+0

這聽起來像你正在維修的噩夢。即使它只調用特效,你仍然需要在兩個數據庫服務器之間複製這些特效。任何事情都可以做到;問題是你想忍受多少痛苦才能繼續使用MySql。 – NotMe 2010-01-09 22:20:07

0

不知道你爲什麼「真的不想使用SQL Server 2000」,但是,如果你決定需要並且你有一臺可用Windows的PC,你可以使用Microsoft數據庫引擎2000版本A(MSDE2000A.exe )。這是真實的,可以在桌面上自由使用。

http://msdn.microsoft.com/en-us/library/ms811304.aspx

我不認爲這是可以從微軟下載了,但你也許能找到它別的地方。如果你不能找到它,你的下一個最好的選擇可能是使用2005年版(SQL Server 2005速成版),並確保您不使用任何新功能,自2000年以來:

http://www.microsoft.com/Sqlserver/2005/en/us/express.aspx

1

我不會「T。

你會花費這麼長時間說服兩個玩很好,沒有真正的好處。在這種情況下,你必須完成大部分代碼才能運行SQL Server。考慮到這些,恐怕只要硬着頭皮,學會直接使用SQL Server,而不是試圖將兩者聯繫起來。