Except

martedì 25 gennaio 2011 - 15.10
Tag Elenco Tags  VB.NET  |  SQL Server 2008

ilario Profilo | Senior Member

ciao

con la seguente query trovo le differenze di strutture tra due db

SELECT TABLE_NAME , COLUMN_NAME, DATA_TYPE,CHARACTER_MAXIMUM_LENGTH ,IS_NULLABLE FROM db1.INFORMATION_SCHEMA.COLUMNS

EXCEPT

SELECT TABLE_NAME , COLUMN_NAME, DATA_TYPE,CHARACTER_MAXIMUM_LENGTH ,IS_NULLABLE FROM db2.INFORMATION_SCHEMA.COLUMNS


e poi le inserisco in una grid e fin qui funziona tutto

per quelle eliminata basta fare la stessa query ma con i db girati

però non riesco a capire come posso trovare se una tabella o una colonna è stata solo modificata o inserita nuova

questo mi serve per poi creare uno script di aggiornamento


grazie mille
ilario

alx_81 Profilo | Guru

>ciao
Ciao

>con la seguente query trovo le differenze di strutture tra due db
>e poi le inserisco in una grid e fin qui funziona tutto
>per quelle eliminata basta fare la stessa query ma con i db girati
>però non riesco a capire come posso trovare se una tabella o
>una colonna è stata solo modificata o inserita nuova
>questo mi serve per poi creare uno script di aggiornamento
Puoi trovare dei tool che ti fanno queste cose, e anche decisamente bene (visto che le differenze potrebbero essere di vario genere, non solo di colonna), come ad esempio SQL Compare di Red-gate (http://www.red-gate.com/products/sql-development/sql-compare/). Per capire se una colonna è modificata, in che contesto? Tipo di dato? Nome? default? constraint in generale?
Un tool che fa differenze fatto bene è complesso da fare. Fossi in te mi affiderei a chi fa da anni questo tipo di implementazione.

>grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

ilario Profilo | Senior Member

ciao

ho visto che ci sono diverso tool già pronti,
(ovviamente tutti a pagamento) ,

sto sviluppando un mio programma per il lavoro quindi avrò solo un db e ormai ci sarà poco da modificare
mi capita a volte di fare alcune modifiche e passano alcuni giorni prima di riprendere il lavoro, quindi avevo pensato di poter fare un confronto tra quello di sviluppo e quello in uso

con quella query aggiungendo i campi mi fa vedere tutte le differenze, non solo tabelle o colonne, ...

già questo mi basta , faccio le modifiche a mano

pensavo che si potesse anche trovare il modo di capire se una cosa è nuova o semplicemente modificata, in questo caso avrei fatto gli script a doc

ciao
ilario

alx_81 Profilo | Guru

>con quella query aggiungendo i campi mi fa vedere tutte le differenze,
>non solo tabelle o colonne, ...
eh appunto, "tutte le differenze" significa molto codice per trovarle scorrendo il catalog in lungo ed in largo. Non è per nulla una cosa semplice.

>pensavo che si potesse anche trovare il modo di capire se una
>cosa è nuova o semplicemente modificata, in questo caso avrei
>fatto gli script a doc
In casa puoi farti tutto, però fai molta attenzione perchè non sempre tutte le operazioni sono "tracciabili". Ad esempio, una rename da designer, a volte rinomina l'oggetto, altre volte distrugge e ricrea. In quel caso, capire le differenze non è più un semplice match. Diciamo che le casistiche sono varie e se ci sono tool, c'è un motivo
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

ilario Profilo | Senior Member

ti ringrazio , allora non perdo più tempo e lo lascio così , farò semplicemente le modifiche manualmente, se poi un giorno ne avrò la necessità prenderò i tool

grazie e buona giornata

ilario
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5