Come usare il processo di copia bulk (BCP) per esportare i dati di Microsoft Dynamics GP da un database e importare dati in un nuovo database

Questo articolo illustra come usare il processo di copia bulk (BCP) per esportare dati e importare dati usando Microsoft Dynamics GP o Microsoft Business Solutions - Great Plains.

Si applica a: Microsoft Dynamics GP
Numero KB originale: 875179

Introduzione

  1. Eseguire un backup del database aziendale.

  2. Copiare e incollare lo script di CreateBulkCopyOut.sql seguente in Microsoft SQL Query Analyzer.

    /* Script to create bcp commands to export data for all tables. */ SET QUOTED_IDENTIFIER OFF select 'bcp "TWO..' + name + '" out ' + name + '.out -e ' + name + '.err -c -b 1000 -U sa -P password -t "|" -S SERVERNAME -r "#EOR#\n"' from sysobjects where type = 'U' order by name
    

    Nello script sostituire i segnaposto seguenti con le informazioni corrette:

    • Sostituire TWO con il nome del database aziendale.

    • Sostituire la password con la password sa.

    • Sostituire SERVERNAME con il nome dell'istanza di Microsoft SQL Server.

      Nota

      Per aprire Query Analyzer, selezionare Start, programmi, Microsoft SQL Server e quindi Query Analyzer.

      Nota

      Se si usa Microsoft SQL Server 2000 Desktop Engine (noto anche come MSDE 2000), eseguire l'istruzione nella console di amministrazione di supporto tecnico Microsoft. Per aprire La console di amministrazione del supporto, selezionare Start, programmi, supporto tecnico Microsoft console di amministrazione e quindi selezionare Console di amministrazione supporto. Support Administrator Console richiede un'installazione separata. È possibile installare il programma usando il numero CD di installazione di Great Plains 2.

  3. Eseguire lo script sul database e quindi salvare i risultati in un file batch. Per effettuare questa operazione, seguire questi passaggi:

    • Se si usa Query Analyzer, selezionare il riquadro dei risultati e quindi selezionare Salva con nome dal menu File . Creare una cartella denominata BCPData, denominare il file Copyout.bate quindi selezionare Salva.
    • Se si usa Support Administrator Console, selezionare File e quindi selezionare Esporta. Creare una cartella e denominarla BCPData. Assegnare al file il nome Copyout.bat. Quindi selezionare Salva.
  4. Copiare e incollare lo script di CreateBulkCopyIn.sql seguente in Analizzatore query.

    /* Script to create bcp commands to import data for all tables. */ SET QUOTED_IDENTIFIER OFF select 'bcp "TWO..' + name + '" in ' + name + '.out -e ' + name + '.err -c -b 1000 -U sa -P password -t "|" -S SERVERNAME -r "#EOR#\n"' from sysobjects where type = 'U' order by name
    

    Nello script sostituire i segnaposto seguenti con le informazioni corrette:

    • Sostituire TWO con il nome del database aziendale.

    • Sostituire la password con la password sa.

    • Sostituire SERVERNAME con il nome dell'istanza di SQL Server.

      Nota

      Per aprire Query Analyzer, selezionare Start, programmi, Microsoft SQL Server e quindi Query Analyzer.

      Nota

      Se si usa SQL Server motore desktop 2000, eseguire l'istruzione nella console di amministrazione del supporto. Per aprire La console di amministrazione del supporto, selezionare Start, programmi, supporto tecnico Microsoft console di amministrazione e quindi selezionare Console di amministrazione supporto. Support Administrator Console richiede un'installazione separata. È possibile installare il programma usando il numero CD di installazione di Great Plains 2.

  5. Eseguire lo script sul database e quindi salvare i risultati in un file batch.

    • Se si usa Query Analyzer, selezionare il riquadro dei risultati e quindi selezionare Salva con nome dal menu File . Creare una cartella e denominarla BCPData. Assegnare al file il nome Copyin.bat e quindi selezionare Salva.
    • Se si usa Support Administrator Console, selezionare File e quindi selezionare Esporta. Creare una cartella e denominarla BCPData. Assegnare al file il nome Copyin.bat. Quindi selezionare Salva.
  6. Eseguire un comando bcp per spostare i dati dal database aziendale. A tale scopo, usare il metodo appropriato.

    • Per Microsoft SQL Server 2000 o MSDE 2000

      1. Aprire la cartella BCPData.

      2. Fare doppio clic sul file Copyout.bat .

        Nota

        Il file batch avvia il processo BCP per copiare i dati dal database in un file di testo.

      3. Aprire la cartella BCPData.

      4. Fare clic con il pulsante destro del mouse sul file Copyout.bat e quindi scegliere Modifica per aprire il file nel Blocco note o in un altro editor di testo

      5. Selezionare tutto il testo. A tale scopo, selezionare Modifica e quindi selezionare Seleziona tutto. In alternativa, premere ALT+A.

      6. Copiare tutto il testo dal fileCopyout.bat negli Appunti. A tale scopo, selezionare Modifica e quindi copia. In alternativa, premere CTRL+C.

      7. Aprire una finestra del prompt dei comandi. A tale scopo, selezionare Start, selezionare Esegui, digitare cmd e quindi selezionare OK.

      8. Incollare il contenuto del file Copyout.bat nella finestra del prompt dei comandi. A tale scopo, fare clic con il pulsante destro del mouse sulla finestra e quindi scegliere Incolla.

    • Per Microsoft SQL Server 2005

      1. Aprire la cartella BCPData.

      2. Fare doppio clic sul file Copyout.bat .

        Nota

        Il file batch avvia il processo BCP per copiare i dati dal database in un file di testo.

  7. Eliminare la società dall'interno di Microsoft Dynamics GP. A tale scopo, accedere a Great Plains come utente sa. Selezionare Strumenti, scegliere Configura, Sistema e quindi Società. Selezionare il vetro di ricerca per visualizzare tutte le società elencate. Selezionare la società e quindi Elimina.

    Nota

    Per le versioni di Microsoft Great Plains precedenti a Microsoft Great Plains 8.0, eliminare la società. Per eliminare la società, eseguire le operazioni seguenti: scegliere Sistema dal menu Configurazione e quindi selezionare Società per eliminare la società.

  8. Rimuovere il database.

    • Se si usa Microsoft SQL Server, aprire Enterprise Manager, espandere il nome del server, espandere Database, fare clic con il pulsante destro del mouse sul database aziendale eliminato nel passaggio 7 e quindi scegliere Elimina.

    • Se si usa SQL Server 2000 Desktop Engine, rimuovere il database dalla console di amministrazione del supporto eseguendo lo script seguente, dove TWO è il nome del database.

      DROP DATABASE TWO
      
  9. Ricreare il database aziendale e le procedure. A tale scopo, avviare Utilità Microsoft Dynamics GP, accedere come utente sa e quindi selezionare Crea nuova società nella finestra di dialogo Attività aggiuntive .

    Nota

    Usare lo stesso nome della società eliminato nel passaggio 7.

  10. Dopo aver creato la società, le tabelle devono essere troncate.

    • Se si usa Microsoft SQL Server, eseguire lo script di Truncate_Table_Company.sql seguente in Analizzatore query.

      /* Script to remove all data from all user tables in the company database */ SET QUOTED_IDENTIFIER OFF if exists (select * from sysobjects where name = 'RM_NationalAccounts_MSTR_FKC') ALTER TABLE dbo.RM00105 DROP CONSTRAINT RM_NationalAccounts_MSTR_FKC Go declare @tablename char(255) DECLARE t_cursor CURSOR for select "truncate table " + name from sysobjects where type = 'U' set NOCOUNT on open t_cursor FETCH NEXT FROM t_cursor INTO @tablename while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin exec (@tablename) end FETCH NEXT FROM t_cursor into @tablename end DEALLOCATE t_cursor GO ALTER TABLE dbo.RM00105 ADD CONSTRAINT RM_NationalAccounts_MSTR_FKC FOREIGN KEY ( CPRCSTNM ) REFERENCES dbo.RM00101 ( CUSTNMBR ) GO
      
    • Se si usa SQL Server 2000 Desktop Engine, eseguire gli script seguenti separatamente nella console dell'amministratore del supporto.

      Script 1

      SET QUOTED_IDENTIFIER OFF if exists (select * from sysobjects where name = 'RM_NationalAccounts_MSTR_FKC') ALTER TABLE dbo.RM00105 DROP CONSTRAINT RM_NationalAccounts_MSTR_FKC
      

      Script 2

      SET QUOTED_IDENTIFIER OFF declare @tablename char(255) DECLARE t_cursor CURSOR for select "truncate table " + name from sysobjects where type = 'U' set NOCOUNT on open t_cursor FETCH NEXT FROM t_cursor INTO @tablename while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin exec (@tablename) end FETCH NEXT FROM t_cursor into @tablename end DEALLOCATE t_cursor
      

      Script 3

      ALTER TABLE dbo.RM00105 ADD CONSTRAINT RM_NationalAccounts_MSTR_FKC FOREIGN KEY ( CPRCSTNM ) REFERENCES dbo.RM00101 ( CUSTNMBR )
      
  11. Spostare nuovamente i dati nel database aziendale. A tale scopo, aprire la cartella BCPData e quindi fare doppio clic sul file batch Copyin.bat . L'esecuzione di questo file batch avvia il processo di spostamento dei dati nel database aziendale. Quando i dati vengono spostati di nuovo nel database, tutti gli indici vengono creati e verificati per ogni tabella.

    Nota

    Al termine del processo, la cartella BCPData conterrà i file con estensione err. Se uno di questi file con estensione err è maggiore di 0 KB, i dati non sono stati importati correttamente per il database aziendale.

Altri passaggi

Se si usa il processo BCP per modificare l'ordinamento di Microsoft SQL Server, è necessario copiare in blocco i dati dal database DYNAMICS e da tutti i database aziendali.

Nota

La modifica dell'ordinamento di Microsoft SQL Server per il database DYNAMICS e per il database aziendale non è supportata da Microsoft. Per informazioni sui servizi di consulenza che potrebbero essere disponibili per modificare l'ordinamento di Microsoft SQL Server, usare una delle opzioni seguenti, a seconda che si sia un cliente o un partner:

Clienti:
Per altre informazioni sui servizi di consulenza per la manipolazione dei dati, contattare il partner di record. Se non si ha un partner di registrazione, visitare Microsoft Pinpoint per identificare un partner.

Partner:
Per altre informazioni sui servizi di consulenza per la manipolazione dei dati, contattare Microsoft Advisory Services all'indirizzo 800-MPN-SOLVE.

A tale scopo, seguire i passaggi da 1 a 11 nella sezione Introduzione . Nel passaggio 10 è anche necessario troncare il database DYNAMICS. A tale scopo, usare uno dei metodi seguenti:

  • Se si usa Microsoft SQL Server, eseguire lo script di Truncate_Tables_Dynamics.sql seguente in Query Analyzer.

    /* ** **
    Truncate_Tables_Dynamics.sql 
    function: Will remove all data from all user tables in the DYNAMICS database
     ** */ 
    
    SET QUOTED_IDENTIFIER OFF 
    
    if exists (select * from sysobjects where name = 'orgEntity_SETP')
    ALTER TABLE dbo.ORG40100
    DROP CONSTRAINT orgEntity_SETP
    GO
    if exists (select * from sysobjects where name = 'orgRelation_MSTR')
    ALTER TABLE dbo.ORG00100
    DROP CONSTRAINT orgRelation_MSTR
    Go
    declare @tablename char(255) 
    
    DECLARE t_cursor CURSOR for
    select "truncate table " + name
    from sysobjects where type = 'U'
    
    set NOCOUNT on
    open t_cursor
    FETCH NEXT FROM t_cursor INTO @tablename
    while (@@fetch_status <> -1)
    begin
    if (@@fetch_status <> -2)
    begin
    exec (@tablename)
    end 
    
    FETCH NEXT FROM t_cursor into @tablename
    end
    
    DEALLOCATE t_cursor
    GO
    ALTER TABLE dbo.ORG40100 ADD 
    CONSTRAINT orgEntity_SETP FOREIGN KEY 
    (
    ENTYLVL
    ) REFERENCES dbo.ORG40000 (
    ENTYLVL
    )
    GO
    ALTER TABLE dbo.ORG00100 ADD 
    CONSTRAINT orgRelation_MSTR FOREIGN KEY 
    ( ENTITYID ) REFERENCES dbo.ORG40100 ( ENTITYID )
    
    GO 
    
  • Se si usa Microsoft SQL Server 2000 Desktop Engine, eseguire gli script seguenti separatamente nella console dell'amministratore del supporto.

    • Script 1

      if exists (select * from sysobjects where name = 'orgEntity_SETP') ALTER TABLE dbo.ORG40100 DROP CONSTRAINT orgEntity_SETP
      
    • Script 2

      if exists (select * from sysobjects where name = 'orgRelation_MSTR') ALTER TABLE dbo.ORG00100 DROP CONSTRAINT orgRelation_MSTR
      
    • Script 3

      declare @tablename char(255) 
      
      DECLARE t_cursor CURSOR for
      select "truncate table " + name
      from sysobjects where type = 'U'
      
      set NOCOUNT on
      open t_cursor
      FETCH NEXT FROM t_cursor INTO @tablename
      while (@@fetch_status <> -1)
      begin
      if (@@fetch_status <> -2)
      begin
      exec (@tablename)
      end 
      
      FETCH NEXT FROM t_cursor into @tablename
      end
      
      DEALLOCATE t_cursor
      
    • Script 4

      ALTER TABLE dbo.ORG40100 ADD 
      CONSTRAINT orgEntity_SETP FOREIGN KEY 
      (
      ENTYLVL
      ) REFERENCES dbo.ORG40000 (
      ENTYLVL
      )
      
    • Script 5

      ALTER TABLE dbo.ORG00100 ADD 
      CONSTRAINT orgRelation_MSTR FOREIGN KEY 
      ( ENTITYID ) REFERENCES dbo.ORG40100 ( ENTITYID )