web-dev-qa-db-fra.com

Les données d'importation SQL lorsque la source et la destination ont une colonne de données et d'identité

J'utilise une option de données d'importation et d'exportation pour importer des données d'une base de données dans une autre base de données. Les deux bases de données ont une structure similaire de tables. Toutes les tables ont une clé primaire qui est l'élément d'identité (incrémenté automatiquement par 1) .Both Source et Tables de destination ont des rangées.

Maintenant, quand j'importe des données, je reçois une erreur comme Failure inserting into the read-only column

Donc j'ai activé enable identity insert Cochez la case et essayé d'importer des données. Dans ce cas, j'ai eu une erreur comme indiqué ci-dessous

Copying to [dbo].[Misc_Data] (Error)
Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Violation of PRIMARY KEY constraint 'PK_Misc_Data'. Cannot insert duplicate key in object 'dbo.Misc_Data'. The duplicate key value is (1).".
(SQL Server Import and Export Wizard)

Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "input "Destination Input" (50)" failed because error code 0xC020907B occurred, and the error row disposition on "input "Destination Input" (50)" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)

Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Destination - Misc_Data" (37) failed with error code 0xC0209029 while processing input "Destination Input" (50). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)

Je pense que lorsque j'accepte l'insertion d'identité sur SQL, essayez d'insérer des lignes avec des valeurs identiques telles que dans la table Souce pour la colonne d'identité et vous donne une erreur.

Alors, comment puis-je importer des données dans ce cas. Lorsque vous avez des données dans la colonne Source et Destination et Identity Identity est définie comme clé primaire.

ÉDITER La requête que j'ai utilisée pour importer une table sauf une colonne (colonne d'identité) est indiquée ci-dessous.

SELECT [Name]
  ,[Status]
  ,[Last_Checked]
  ,[RecievedDate]
  ,[RecptNo]
  ,[Date2]
  ,[processedDate]
  ,[ind_num]
  ,[AcNo]
  ,[returnType]
  ,[sign]
  ,[oldStatus]
  ,[Acno_old]
  ,[Remarks]
  ,[FileName]
  ,[Status_checked]
  ,[Date_Time]
  ,[By]

De [dbname]. [DBO]. [Mytable]

Dans ce cas, j'ai une erreur comme

- Pre-execute (Error)
Messages
Error 0xc0202004: Data Flow Task 1: The number of columns is incorrect.

(Assistant d'importation et d'exportation SQL Server)

Error 0xc0202025: Data Flow Task 1: Cannot create an OLE DB accessor. Verify that the column metadata is valid.
 (SQL Server Import and Export Wizard)

Error 0xc004701a: Data Flow Task 1: component "Destination - Query" (73) failed the pre-execute phase and returned error code 0xC0202025.
(SQL Server Import and Export Wizard)

Les deux tables ont la même structure et les mêmes types de données. Je reçois toujours une erreur.

1
IT researcher

N'utilisez pas seulement la table entière. Choisissez plutôt l'option d'écrire une requête.

BasicInstructions

Ensuite, écrivez simplement une instruction SELECT qui n'utilise pas cette colonne d'identité. SoBasic

Alternativement, lorsque vous mappez des colonnes, si vous cliquez sur "Supprimer des lignes dans la table de destination", il tronquera la table cible avant de charger les données. Si l'opportunité existe pour que les données soient supprimées du système source et qu'il aurait dû rester dans la destination, cette étape ne vous conviendra pas.

enter image description here

Votre colis ressemblerait à quelque chose comme ça

enter image description here

13
Zane