none
migrare dati da access mantenendo il campo contatore - incremento automatico RRS feed

  • Domanda

  • salve!

    devo migrare una serie di tabelle che correlate tra loroanalizzando le tabelle di access ho alcune tabelle che hanno dei campi contatori (incremento automatico)

    come posso travasare i dati da access a sql mantenendo i valori precedenti MA continuando a far si che il campo sia incremento automatico?

    Pensavo

    di creare la struttura non inserserendo identity yes ma modificandola dopo ma mi da' un errore.

    Come mi consigliate?

    tenete conto che il campo contatore e' utilizzato in tabelle correlate per il collegamento

    grazie anticipatamente

    Pfmarro
    martedì 6 marzo 2012 17:11

Tutte le risposte

  • Hai provato ad utilizzare SQL Server Migration Assistant for Access ? 

    Tra le capacità del tool c'è quella di creare le colonne identity mantenendo gli stessi valori del database Access originale.

    Qui trovi il download della versione 5.2, qui il blog del team di SSMA con utili indicazioni su come usare il tool e qui un video che spiega il suo utilizzo.

    Dai un'occhiata anche a questa pagina, dove segnala alcune limitazioni nella gestione dei campi contatore.

    HTH


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.


    martedì 6 marzo 2012 20:26
  • devo migrare una serie di tabelle che correlate tra loroanalizzando le tabelle di access ho alcune tabelle che hanno dei campi contatori (incremento automatico)

    come posso travasare i dati da access a sql mantenendo i valori precedenti MA continuando a far si che il campo sia incremento automatico? 

    Ciao,

    Dato che non puoi aggiungere/rimuovere la proprietà IDENTITY da una colonna numerica di una tabella preesistente, l'unica strada che ti resta è quella di definirla ma prima di popolare la tabella, impostare l'opzione SET IDENTITY_INSERT a ON come nel seguente esempio:

    USE tempdb;
    
    CREATE TABLE dbo.Students(
    StudentID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    FirstName varchar(10) NOT NULL,
    LastName varchar(10) NOT NULL
    );
    
    SET IDENTITY_INSERT dbo.Students ON;
    
    INSERT dbo.Students(StudentID, FirstName, LastName)
    VALUES (1, 'Lorenzo', 'Benaglia')
         , (2, 'Andrea', 'Montanari')
         , (3, 'Gianluca', 'Hotz');
    
    SET IDENTITY_INSERT dbo.Students OFF;
    
    INSERT dbo.Students
    VALUES ('Marcello', 'Poletti');
    
    SELECT *
    FROM dbo.Students;
    
    /* Output:
    
    StudentID   FirstName  LastName
    ----------- ---------- ----------
    1           Lorenzo    Benaglia
    2           Andrea     Montanari
    3           Gianluca   Hotz
    4           Marcello   Poletti
    
    (4 row(s) affected)
    
    */
    
    DROP TABLE dbo.Students;
    

    SQL Server 2012 offrirà un approccio più standard al problema introducendo le SEQUENCE.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.technet.microsoft.com/Forums/it-IT/sqlserverit

    martedì 6 marzo 2012 20:34
    Moderatore
  • grazie del messaggio

    ho installato il programma Sql Server Migration Tools

    creo un nuovo progetto

    collego il mio database msaccess 2003.mdb

    connetto l'istanza e il database desiderato

    purtroppo continua a dirmi problemi "error occurred while loading children"

    ho MsAccess2003 e' obbligatorio avere office 2010?

    Grazie

    PFMarro

    lunedì 12 marzo 2012 16:18
  • Tra i prerequisiti di SSMA 5.2 c'è anche l'installazione del DAO versione 12 o 14, che puoi installare dal cd di Office 2007 o 2010.

    L'errore completo dovrebbe fare riferimento alle dll mancanti del DAO, in maniera simile a questo che ti riporto a titolo di esempio:

    Error occurred while loading children.
    Access Object Collector error: Database
         Could not load file or assembly 'Microsoft.Office.Interop.Access.Dao, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
         Error occurred while loading content.

    HTH


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    lunedì 12 marzo 2012 18:09