Является ли scope_identity()
надежным способом получения идентификатора строки, недавно вставленной в другую базу данных на одном и том же сервере SQL?
У меня есть две базы данных DB_A и DB_B, расположенные на одном и том же сервере SQL (2012) У меня есть сохраненный процесс, расположенный в DB_A, в котором строка вставлена в DB_B.Идентификационный идентификатор этой строки должен быть получен для продолжения сохраненного процесса.
insert into DB_B.dbo.CustAddress values (@newAddress);
select @newID = scope_identity()
Я проверил этот подход на своем тестовом сервере, и он отлично работает.Однако, кажется, что иногда (редко и трудно поймать) ID не получается.Идентификатор просто равен 0 (не как возвращение неправильного идентификатора) на рабочем сервере, который является загруженной средой с большим количеством вставок в DB_B из различных источников.Поскольку идентификатора нет, я не могу проверить, успешно ли выполнена вставка, хотя исключений SQL нет.
Мой вопрос заключается в том, могу ли я доверять возвращенному идентификатору и при каких обстоятельствах SQL не сможет вернуть идентификатор идентификаторавновь вставленной строки таким образом?