PK がシーケンシャル GUID であると予想される SSIS にデータをインポートする方法はありますか?
これまでに思いついた唯一の方法は、列がデフォルトnewsequentialid()
でそこにデータをロードし、それを正しいテーブルにコピーする一時テーブルを作成することです。これはあまりエレガントではなく、これに対応するためにパッケージに多数のレイヤーを追加する必要があるため、多少時間がかかります。
PK がシーケンシャル GUID であると予想される SSIS にデータをインポートする方法はありますか?
これまでに思いついた唯一の方法は、列がデフォルトnewsequentialid()
でそこにデータをロードし、それを正しいテーブルにコピーする一時テーブルを作成することです。これはあまりエレガントではなく、これに対応するためにパッケージに多数のレイヤーを追加する必要があるため、多少時間がかかります。
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
GUID を PK として使用することはありませんが、newsequentialid() をデフォルト値として設定することはできません。データベースへの挿入ではそれが使用されます。