Поскольку соединение с сервером sql прервано, @@ identity станет нулевым, и, следовательно, вы получите нулевое значение.
Здесь вы не можете использовать scope_identity (), поскольку его область действия ограничена местом, то есть процедурой вВаш случай, когда он вызывается.
ident_current () всегда возвращает последнее значение идентификатора для таблицы, которую вы указали.Это может работать некорректно в случае репликации
Update your commandText to ="Select ident_current("+e.Row.Table.TableName+")"
Вот результаты использования различных методов получения значения идентификатора.Замените dbo.M_PatientEntry именем вашей таблицы
select ident_current('dbo.M_PatientEntry')
---------------------------------------
13
select @@identity from dbo.M_PatientEntry
---------------------------------------
NULL
NULL
select scope_identity()
---------------------------------------
NULL
select scope_identity() from dbo.M_PatientEntry
---------------------------------------
NULL
NULL
Также старайтесь избегать @@ Identity, вместо этого используйте scope_identity () или ident_current @@ identity, которое даст вам увеличенное значение результата таблицы триггеров, если вы используете триггер на том жетаблица, где происходит вставка.
см. эту документацию