Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Copia Incolla DB esistente

    Utilizzando ASP.NET dovrei creare un nuovo DB partendo da uno già presente su SQLServer.

    Naturalmente SQL Server non deve cancellarmi l'originale!!

    Tengo a precisare che IIS e SqlServer girano su computer diversi quindi fare un detach_db per poi lanciare un CopiaFile seguito da attach_db non è possibile perchè IIS non scrivi sul File System del PC con i databases.

  2. #2
    Se l'utente asp.net e' anonimo forse l'unica cosa da fare e' creare degli script per ricreare la struttura e copiare i records. Altrimenti anche l'uso dei pacchetti dts non sarebbe male ma presuppone diritti che l'utente anonimo normalmente non ha.
    Saluti a tutti
    Riccardo

  3. #3
    Per script intendi:
    1- CREATE DATABASE "dbNuovo"
    2- ciclo su tutte le tabelle del "dbSorgente" e le copio sul "dbNuovo"
    3- Ciclo su tutti i record di tutte le tabelle del "dbSorgente" e le copio nel "dbNuovo"
    4- Fine

    Pero' per farlo ci sono dei casini come ad esempio:
    Come sapere tutte le tabelle nel DB?
    Come sapere se una tabella ha 1 o piu' chiavi primarie?
    come sapere se una tabella ha un campo identity?
    ...ecc....?

    E' uno script molto lungo e difficile e probabilmente bisognerebbe andare a leggere nelle tabelle sys del "dbSorgente". Se per caso ne hai già uno a disposizione....magari mi farebbe comodo.


    per il secondo sistema "uso dei pacchetti dts" non ho ben capito a cosa ti riferisci

  4. #4
    Originariamente inviato da TrigunXX
    Per script intendi:
    1- CREATE DATABASE "dbNuovo"
    2- ciclo su tutte le tabelle del "dbSorgente" e le copio sul "dbNuovo"
    3- Ciclo su tutti i record di tutte le tabelle del "dbSorgente" e le copio nel "dbNuovo"
    4- Fine
    si
    Pero' per farlo ci sono dei casini come ad esempio:
    Come sapere tutte le...
    quando ne ho bisogno, di solito e' per distribuire una applicazione su un nuovo server e quindi ricreare la strutture del db che ho nel server di sviluppo e magari inizializzare (inserendo alcuni records) qualche tabella. Per creare script di creazione della struttura di elementi come tabelle, viste ecc. con sqlserver, non c'e' bisogno di interrogare tabelle di sistema ma puoi utilizzare enterprise manager o query analyzer e farti creare automaticamente gli script che poi farai girare con asp.net. Nella guida di sql server puoi approfondire le modalita' e opzioni per creare questi script con le varie proprieta' (identity, diritti di accesso ecc.).
    per il secondo sistema "uso dei pacchetti dts" non ho ben capito a cosa ti riferisci
    anche in questo caso vista la vastita' dell'argomento una occhiata alla documentazione non guasta. es prova cosi http://tinyurl.com/hh2uu
    Saluti a tutti
    Riccardo

  5. #5
    Ho scelto la via dello script ...
    Il difficile era leggere la struttura di una tabella esistente per crearsi la stringa CREATE TABLE su misura. Ho notato che in ASP.NET davano una proprietà .AutoIncrement che pero' non sembra funzionare.

    Cmq ho risolto.....

    La funzione che legge lo schema della tabella e restituisce la stringa tipo "CREATE TABLE blablabla..." l'ho postata qui

    http://forum.redangel.it/ShowPost.aspx?PostID=39725

    Basta lanciare la .ExecuteNonQuery(stringaCreateTable) per ricrearla sul nuovo DB (il nuovo db l'ho creato in precedenza con una "CREATE DATABASE nuovoDB")....spostare i dati è più semplice!!

  6. #6
    Una domandina, non hai enterprise manager vero? perche' se ce l'hai, esistono funzionalita' di creazione automatica degli script sql.
    Ho dato un'occhiata al codice che hai scritto. Non mi piace molto fare cosi ma, de gustibus.
    Un consiglio che in ogni caso dovresti seguire quando si crea una stringa in piu' passaggi e' di abituarti ad usare un oggetto stringbuilder. Quindi
    codice:
    tuastringa = tuastringa & "qualcosa"
    diventerebbe
    codice:
    tostringbuilder.append("qualcosa")
    Saluti a tutti
    Riccardo

  7. #7
    Se io ho una tabella copia di un' altra passo i dati cosi'

    INSERT INTO TABELLA2 (SELECT * FROM TABELLA1)

    ExecuteNonQuery e conto i record uploadati per sicurezza ...

    ;-)

  8. #8
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da raffaeu
    Se io ho una tabella copia di un' altra passo i dati cosi'

    INSERT INTO TABELLA2 (SELECT * FROM TABELLA1)

    ExecuteNonQuery e conto i record uploadati per sicurezza ...

    ;-)
    Il problema è che lui deve creare anche la tabella, popolarla è il meno.
    @TrigunXX
    Tieni presente che c'è un limite alla lunghezza della stringa che passi per eseguire il command.
    Tempo fa avevo fatto un programma del genere per esigenze particolari e mi ero scontrato con questa cosa(tabelle gigantesche però!).
    Valuta anche che se hai delle relazioni con lo script che hai implementato non le copi.
    Mi associo al consiglio di Riccardone per l'utilizzo dei DTS oppure di Enterprise Manager.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.