DDL compatibile (CREATE TABLE) attraverso diversi database SQL?
-
12-10-2019 - |
Domanda
Sto lavorando su un'applicazione desktop che deve supportare (attualmente) di MS Access e SQL Server back end. L'applicazione è in costante sviluppo e le modifiche sono spesso stati fatti alla base di dati, per lo più l'aggiunta di tabelle e viste per supportare le nuove funzionalità (ma anche qualche goccia e tabelle ALTER per aggiungere nuove colonne).
Ho un sistema che compila il DDL nell'eseguibile, controlla il database per vedere se l'eseguibile ha qualche nuovo DDL che deve essere eseguita, e l'esegue. Questo funziona bene per un singolo database.
Il mio problema immediato è che SQL Server e sostenere l'accesso molto diversi nomi per i tipi di dati in modo da un CREATE TABLE che esegue contro l'accesso non verranno eseguiti in SQL Server (o peggio, eseguirà ma creare una tabella con diversi tipi di dati).
Esiste un metodo che può essere utilizzato per creare DDL (soprattutto CREATE TABLE comandi) che può essere eseguito tramite ADO contro entrambi questi database, senza dover imbarcazioni DDL separato per ogni fornitore?
Soluzione
Dal momento che si sta già utilizzando ADO, si dovrebbe guardare in Microsoft ADOX
Questo permette di manipolare strutture in un'origine dati utilizzando un modello di oggetti ADO che è indipendente dal tipo di dati sottostante. vale a dire senza ricorrere a DDL esplicito
Il supporto per ADOX non sia garantito da un determinato provider ADO, e il livello di supporto ADOX può variare anche quando è disponibile. Ma per MS Access e MS SQL Server penso che troverete tutte le funzionalità desiderata (e probabilmente più!)
Altri suggerimenti
Questo può essere fatto utilizzando DBX in Delphi.
Di seguito è collegamenti a mostrare il codice di esempio come questo può essere fatto. http://cc.embarcadero.com/item/26210
Ho avuto lo stesso problema. Decisi che l'applicazione di un preprocessore C a SQL prima di eseguirlo. Il preprocessore include le macro al fine di gestire le diverse DBS.
Stefano