+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Interrogare struttura tabella e aggiungere campo SQL Server 2008

  1. #1
    L'avatar di AleSpi
    AleSpi non è in linea Scolaretto
    Post
    136
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti,
    ho creato una listview all'interno della quale ho caricato nomi di tabelle di SQL Server 2008 che devono essere controllate nel loro contenuto, ovvero verificare che per ogni tabella caricata esista un campo specifico e, se non c'è deve essere creato.
    Come posso fare? Qualcuno di voi mi può aiutare.

    Grazie per l'aiuto
    Ultima modifica di elisab; 14-04-2011 18:51 

  2. #2
    Post
    1,608
    Blogs
    33
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AleSpi Visualizza il messaggio
    ho creato una listview all'interno della quale ho caricato nomi di tabelle di SQL Server 2008 che devono essere controllate nel loro contenuto, ovvero verificare che per ogni tabella caricata esista un campo specifico e, se non c'è deve essere creato.
    Ciao AleSpi.
    Anche qui, come spesso accade, non mi spiego l'utilizzo della ListView.
    E un DataGridView con N righe per N tabelle trovate nel DB ?
    --> NomeTabella | Campo1 | Campo2 | ... | CampoN

    In ogni caso, per fare verifiche e successive eventuali modifiche strutturali, puoi appoggiarti a :
    - Microsoft.SqlServer.Management.Smo
    - Microsoft.SqlServer.Management.Common

    In pratica farai degli ALTER TABLE, come illustrato qui :
    How to: Create, Alter, and Remove a Table in Visual Basic .NET
    Soluzione che proverei per prima.

    Segnalo infine che ALTER TABLE, e altre operazioni sulla struttura, possono essere eseguite anche con semplici Command e relativo Metodo ExecuteNonQuery(), e qui vari esempi :
    Creating a SQL Server database programmatically using VB.NET

    ℹ️ Leggi di più su MarcoGG ...

  3. #3
    Post
    1,905
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Quote Originariamente inviato da AleSpi Visualizza il messaggio
    ...
    ho caricato nomi di tabelle di SQL Server 2008 che devono essere controllate nel loro contenuto, ovvero verificare che per ogni tabella caricata esista un campo specifico e, se non c'è deve essere creato.
    Come posso fare?
    un modo per farlo è eseguire un comando DDL tipo il seguente
    (vado a memoria)
    :
    if not exist (
      select 1 from information_schema.columns
      where table_name='nometabella' and column_name='nomecampo'
      and <...altre condizioni>
    )
    alter table nometabella 
    add nomecampo etc...
    
    invece di interrogare la information_schema.columns
    puoi interrogare direttamente una view di sistema di cui però ora non ricordo il nome.

    Va da sè che queste sono operazioni amministrative che richiedono
    gli opportuni permessi e che non è il caso di concederli a tutti gli utenti

    HTH
    ℹ️ Leggi di più su sspintux ...

  4. #4
    L'avatar di AleSpi
    AleSpi non è in linea Scolaretto
    Post
    136
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao MarcoGG,
    il motivo della Listview è perchè la utilizzo per diverse cose tra cui avere un elenco selezionabile (tramite checkbox).
    la cosa curiosa è che, da codice, ho provato ad utilizzare ALTER TABLE, ma non andava; solo in SQL funzionava perfettamente.
    Ora, come da te suggerito proverò uno strada diversa.
    Grazie per la dritta, ti terrò al corrente.

  5. #5
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Post
    2,140
    Blogs
    1
    Like Inviati  
    0
    Like Ricevuti  
    0
    Mah, secondo me è una operazione che viene eseguita una volta sola durante l'upgrade o una nuova installazione ed e una operazione "Server Side". Quindi IMHO il metodo migliore e proposto da MarcoGG - utilizzare SMO
    ℹ️ Leggi di più su bumm ...

  6. #6
    L'avatar di AleSpi
    AleSpi non è in linea Scolaretto
    Post
    136
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao sspintux,
    grazie per l'aiuto, ovviamente chi ha accesso a questa form ha i diritti amministrativi....
    Complimenti per la memoria...
    Vi terrò informati sui miei sviluppi.
    Per il momento grazie a tutti.

  7. #7
    Post
    1,905
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Quote Originariamente inviato da AleSpi Visualizza il messaggio
    ...
    la cosa curiosa è che, da codice, ho provato ad utilizzare ALTER TABLE, ma non andava;
    cioè ? che errore ti dà ?
    ℹ️ Leggi di più su sspintux ...

  8. #8
    Post
    1,905
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Quote Originariamente inviato da bumm Visualizza il messaggio
    Mah, secondo me è una operazione che viene eseguita una volta sola durante l'upgrade o una nuova installazione ed e una operazione "Server Side". Quindi IMHO il metodo migliore e proposto da MarcoGG - utilizzare SMO
    Mah, come al solito dipende da cosa si deve fare;
    in passato ho trovato comodo creare un programma il cui solo scopo era eseguire
    gli script sql registrati in alcuni file ( e spesso creati con programmi di comparazione db
    per essere sicuro di non dimentarmi qualche pezzo )
    e registrare in un log gli eventuali errori.
    Modificare gli script è facile e veloce.

    Avendo a disposizione gli script si può anche fare a meno
    di crearsi un programma ad hoc ed usare sqlcommand.exe per eseguirli
    pagando però il prezzo di un minor controllo sugli errori.

    IMHO ovviamente
    ℹ️ Leggi di più su sspintux ...

  9. #9
    L'avatar di AleSpi
    AleSpi non è in linea Scolaretto
    Post
    136
    Like Inviati  
    0
    Like Ricevuti  
    0
    Per quanto riguarda l'errore questo è ciò che mi dava:
    Riferimento a un oggetto non impostato su un istanza di oggetto.

    Nel frattempo ho scoperto nel frattempo cose nuove.... ovvero:
    da codice riesco a leggere se sono presenti le tabelle, ecc. ecc. ma non mi fa modificare nulla.
    Dico questo perchè ho provato a rinominare sul DB la tabella XXX in XXX_old, poi ho provato a Crearla ex-novo e non riesco.
    Ho pensato che ci fosse qualche blocco... Poi mi si è accesa una lampadina...
    Ho rispolverato il buon vecchio VB6, ho provato ad utilizzare la stessa query (Create Table..../Alter Table ....) e per magia ha funzionato.
    Quindi decuco che l'errore sta a monte...
    Sto ora provando con il suggerimento di MarcoGG (link). Vi farò sapere.

    Intanto grazie per l'interessamento....

  10. #10
    L'avatar di AleSpi
    AleSpi non è in linea Scolaretto
    Post
    136
    Like Inviati  
    0
    Like Ricevuti  
    0
    RAGA, è Fatta!!!
    Ancora una volta Grazie a MarcoGG

    Preziosissimo elemento della comunity!!!!

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Aggiungere un campo ad una tabella del backend
    Da rpk nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 09-11-2020, 11:57
  2. Risposte: 3
    Ultimo Post: 04-11-2016, 21:23
  3. Partizionamento tabella sql server 2008
    Da kekko87_ nel forum Microsoft SQL Server
    Risposte: 4
    Ultimo Post: 11-10-2013, 16:32
  4. Colonna tabella SQL server 2008 con ora sopra le 24
    Da e.manfredi nel forum Microsoft SQL Server
    Risposte: 13
    Ultimo Post: 26-11-2012, 18:39
  5. [access] aggiungere campo in una tabella
    Da lancillotto nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 10-06-2009, 00:18