Уникальный GUID для нескольких таблиц - PullRequest
0 голосов
/ 10 мая 2019

Я работаю над процессом ETL, в котором мы перемещаем данные из нескольких промежуточных таблиц в соответствующие им таблицы назначения (с некоторым преобразованием).

Этот процесс включает в себя родительский хранимый процесс, который вызывает дочерний процесс, по 1 процессу для каждой таблицы.

У нас есть таблица журнала, в которой поле GUID является первичным ключом.Этот GUID должен оставаться неизменным для всех записей, которые были обновлены / вставлены в соответствующий процесс ETL.

В настоящее время я делаю следующее:

DECLARE @etlid UNIQUEIDENTIFIER = NEWID()
BEGIN
    BEGIN TRY
        EXEC dbo.etl_premier_main @etlid
        EXEC dbo.etl_premier_financial @etlid

Мы просто объявили GUID в родительской процедуре и передали его в качестве параметра дочерним процедурам.

Однако этот метод не гарантирует, что каждый раз он будет генерировать уникальное значение для таблицы журнала.

Любой помощник будет признателен.

1 Ответ

1 голос
/ 10 мая 2019

Вы можете попробовать переключиться на NEWSEQUENTIALID().

Создает GUID, который больше, чем любой GUID, ранее созданный этой функцией на указанном компьютере с момента запуска Windows.

Есть некоторые соображения, которые я прочитал бы в следующем Microsoft Doc

DECLARE @etlid UNIQUEIDENTIFIER = NEWSEQUENTIALID() BEGIN
    BEGIN TRY
        EXEC dbo.etl_premier_main @etlid
        EXEC dbo.etl_premier_financial @etlid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...