データベースにテーブル (ssis エラー処理とログ記録の一部として作成されたログ テーブル) があります。このテーブルに行を挿入し、scope_identity() を使用してテーブルから最後の ID 値を取得しようとしています。しかし、scope_identity?() に対してNULLを取得しています。1 つのストアド プロシージャの一部として使用されている dml ステートメントと scope_identity() ステートメントを参照してください。
insert into logging.execution_log
(ParentLogID, Description, PackageName, PackageGuid, MachineName, ExecutionGuid, LogicalDate, Operator, StartTime, EndTime, Status,FailureTask)
select @ParentLogID, @Description, @PackageName, cast(@PackageGuid as uniqueidentifier), @MachineName, cast(@ExecutionGuid as uniqueidentifier),
@logicalDate, @operator, getdate(), null, @status, null
**set @LogID = cast(scope_identity() as int)**
しかし、@logidの値を取得しようとすると、nullのみが返されます
logging.execution_log テーブルのLogId列に ID 仕様が既にあることに注意してください。
よろしく
*追加の詳細(いくつかのテストを行ったときに理解しました) テストの一環として、次のようにいくつかの新しい行を手動で挿入しました、StartTime、EndTime、Status、FailureTask)
select 1, 2, 3, **NEWID()**,
5, **NEWID()**,
7, 8, getdate(), null, 0, null
select scope_identity()
select * from logging.execution_log
次に、IDの最後の値を表示します..........それは問題ありませんが、問題は、PackageGuidをsystem::Packageid(ssisシステム変数)として渡し、ExecutionGuidをsystem ::executioninstanceGUIDとして渡すと、挿入されますテーブルの行は正しくありますが、scope_identi または @@identity または ident_current を使用して最後の ID 値を取得できません (すべてが null を示しています)*