1

无论如何将数据导入SSIS,我希望PKs是顺序指导?

到目前为止,我能想出的唯一方法是创建一个临时表,该列默认newsequentialid()将数据加载到那里,然后将其复制到正确的表中。这不是很优雅,并且不得不在我的包中添加一堆额外的层来适应它有点费时。

4

2 回答 2

1

你看过OUTPUT 子句吗?

基本上,您将插入的任何内容(包括标识字段)输出到表变量或临时表中。如果另一个表有外键关系,则不能将其直接插入到另一个表中。每当我使用它时,我都会使用一个临时表,然后从那里插入到子表中。

以下是它的使用示例:

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
于 2010-02-16T03:13:25.020 回答
0

我不使用 GUID 作为 PK,但您不能将 newsequentialid() 设置为默认值,那么任何插入到您的数据库中的内容都会使用它。

于 2010-02-03T20:53:17.577 回答