2010-02-25 41 views
0

我有一個需要支持兩個獨立的數據庫引擎 - MySQL和SQL服務器。如果可能的話,我不想維護兩組不同的腳本來創建數據庫對象(表,視圖,存儲過程等)。創建的MySQL和SQLServer兼容的對象

我想找出是否有人在做這樣的事的經驗,什麼都學的知識。任何鏈接到相關的文章/文件也表示讚賞。

一些我所遇到的問題是 1. MySQL有列的隱式默認值,而SQL Server不 2. MySQL的時間戳列從SQL Server時間戳列 3.做MySQL引用的對象不同不同的數據庫從SQL Server如何做不同 - differentdb.table(MySQL的)VS differentdb.dbo.table(SQL Server)的 4.臨時表創建語法是兩個數據庫引擎

這個列表是沒有什麼不同詳盡:)

TIA

回答

1

一個解決辦法是不使用任何SQL腳本來創建數據庫對象,而是用某種抽象層的應用程序和數據庫之間:

  • 應該採取輸入一些「標準化」的模式 - - 例如,你的數據庫結構
  • 的XML描述,要麼輸出SQL腳本(每種數據庫類型有所不同),或直接作用於數據庫。

欲瞭解更多信息,你可能想看看維基百科條目Database abstraction layer


不知道你所使用的語言,但是,例如,在PHP中,ORM Framework Doctrine提供了這樣的Abstraction Layer

+0

謝謝。這確實解決了一些問題。但是,它並沒有解決存儲過程等問題......我們正在使用ORM--並不完全。 – shikarishambu 2010-02-26 00:39:47

+0

不客氣;;關於存儲過程,您正在寫直接編寫一些SQL代碼,那裏 - 即完全不使用ORM ... – 2010-02-26 05:10:08