Come importare i dati con SSIS per i GUID sequenziali?
-
25-09-2019 - |
Domanda
Esiste un modo per importare i dati in SSIS, dove mi aspetto che il PK di essere GUID sequenziali?
L'unico metodo che ho potuto venire con finora è quello di creare una tabella temporanea con la colonna inadempiente per newsequentialid()
il caricamento dei dati in là quindi copiare alla tabella corretta. Questo non è molto elegante ed è un po consumo di dover aggiungere un po 'di strati extra nei miei pacchetti per accogliere questa volta.
Soluzione
I don t uso GUID come PK, ma non si può impostare NEWSEQUENTIALID () come valore di default, allora ogni inserto al datbase userà che
.Altri suggerimenti
Hai guardato la clausola OUTPUT ?
In sostanza, è uscita tutto ciò che è stato inserito (compresi i campi di identità) in una variabile di tabella o di una tabella temporanea. Non è possibile inserire direttamente in un'altra tabella se l'altra tabella ha una relazione di chiave esterna. Ogni volta che ho usato, ho usato una tabella temporanea e poi inserito da lì nella tabella figlio.
Ecco un esempio del suo utilizzo:
DECLARE @roles TABLE (
SecurityRoleId int
)
INSERT dbo.SecurityRole (
SecurityRoleName,
SecurityRoleDescription,
LastUpdatedGuid
)
OUTPUT
INSERTED.SecurityRoleId
INTO @roles
SELECT
SecurityRoleName,
SecurityRoleDescription,
NEWID()
FROM @SecurityRole
INSERT INTO dbo.SecurityRoleDtl (
SecurityRoleId,
MemberSecurityRoleId
)
SELECT
1,
SecurityRoleId
FROM @roles