1

PK がシーケンシャル GUID であると予想される SSIS にデータをインポートする方法はありますか?

これまでに思いついた唯一の方法は、列がデフォルトnewsequentialid()でそこにデータをロードし、それを正しいテーブルにコピーする一時テーブルを作成することです。これはあまりエレガントではなく、これに対応するためにパッケージに多数のレイヤーを追加する必要があるため、多少時間がかかります。

4

2 に答える 2

1

OUTPUT句を見ましたか?

基本的に、テーブル変数または一時テーブルに挿入されたもの (ID フィールドを含む) はすべて出力します。他のテーブルに外部キー関係がある場合、別のテーブルに直接挿入することはできません。私がそれを使用したときはいつでも、一時テーブルを使用し、そこから子テーブルに挿入しました。

以下はその使用例です。

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 に答える