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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top