Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:✅ Хранилище данных в Microsoft Fabric
Таблицы можно перенести в хранилище данных Fabric с суррогатными ключевыми столбцами после адаптации к различиям в IDENTITY реализации в хранилище данных Fabric. В этой статье описывается надежная стратегия миграции, помогая преодолеть этот разрыв и успешно переместить схему и данные в хранилище данных Fabric.
Перенос баз данных в хранилище данных Fabric представляет уникальные проблемы для организаций, использующих существующие суррогатные столбцы, такие как IDENTITY или SEQUENCE функции в ядре СУБД SQL:
- В отличие от традиционных сред SQL Server, хранилище данных Fabric использует распределенную модель для создания значений идентификаторов, что гарантирует уникальность, но не гарантирует последовательный порядок.
-
IDENTITYВ хранилище данных Fabric не поддерживаетсяIDENTITY_INSERT. Невозможно напрямую вставить существующие значения. -
IDENTITYв хранилище данных Fabric не поддерживает конфигурациюSEEDилиINCREMENT.IDENTITYзначения являются уникальными и автоматически управляемыми.
-
- Только тип данных bigint поддерживается для
IDENTITYстолбцов в хранилище данных Fabric. - Хранилище данных Fabric не применяет ограничения ключей.
Пошаговый процесс миграции
Чтобы проиллюстрировать подход, описанный в этой статье, рассмотрим две таблицы: Customers таблицу и таблицу Orders . Таблица Orders ссылается на таблицу Customers с помощью столбца CustomerID .
Чтобы перенести эти таблицы из источника в таблицы хранилища данных Fabric, использующие IDENTITY столбцы, необходимо наполнить целевую таблицу новыми идентификаторами и обновить ссылаемую таблицу. Мы можем добиться этого с помощью следующей стратегии:
- Загрузите данные из исходных таблиц в промежуточные таблицы в хранилище данных Fabric, не использующие
IDENTITYстолбцы. - Загрузите данные из промежуточных таблиц в конечные таблицы, использующие
IDENTITYстолбец, но скопируйте исходные данные столбца идентификатора из промежуточной таблицы в новый временный столбец в окончательных таблицах. -
UPDATEссылки в связанных таблицах.
Пример. Перенос данных из таблиц, использующих столбцы IDENTITY, в хранилище данных Fabric
В следующих шагах описывается, как эту стратегию можно выполнить с помощью IDENTITY столбцов в хранилище данных Fabric.
Шаг 1. Загрузка исходных данных в промежуточные таблицы
Начните с создания промежуточных таблиц в хранилище данных Fabric, которые отражают схему ваших исходных таблиц, но при этом создайте промежуточные таблицы со столбцами IDENTITY.
Загрузите исходные данные в эти промежуточные таблицы, включая исходные значения идентификаторов.
Шаг 2. Вставка данных в целевые таблицы и сопоставление устаревших значений IDENTITY
Затем вставьте данные из промежуточных таблиц в целевые таблицы в хранилище.
Целевая таблица должна использовать IDENTITY в ключевом столбце.
На этом шаге сопоставить исходные значения идентификаторов из промежуточной таблицы с новым столбцом в целевой таблице.
Например, при миграции таблицы Customers можно использовать, например, такой оператор:
-- Pseudo code: replace ... with your own column list
INSERT INTO dbo.Customers (Name, Email, ... , LegacyCustomerID)
SELECT s.Name, s.Email, ..., s.CustomerID
FROM dbo.Staging_Customers AS s;
Этот подход сохраняет исходное значение удостоверения в столбце LegacyCustomerID для последующего использования.
Повторите этот шаг для всех таблиц в хранилище, использующих IDENTITY столбцы.
Шаг 3. Обновление связей внешнего ключа с использованием значений устаревших идентификаторов
Для таблиц с внешними ключами, ссылающимися на столбец IDENTITY, соедините с промежуточной версией указанной таблицы, используя временный столбец устаревшего идентификатора, чтобы получить новые идентификаторы, созданные хранилищем данных Fabric.
Например, при переносе Orders таблицы, ссылающейся на клиентов:
INSERT INTO dbo.Orders (OrderDate, ... , CustomerID)
SELECT o.OrderDate, ..., c.CustomerID
FROM dbo.Staging_Orders AS o
INNER JOIN dbo.Customers AS c
ON o.CustomerID = c.LegacyCustomerID;
Этот подход гарантирует, что связи между таблицами сохраняются, даже когда IDENTITY создает новые идентификаторы в будущем.
Шаг 4 (необязательно): очистка временных столбцов
После подтверждения правильности сопоставлений всех связей и целостности данных при необходимости можно удалить устаревшие столбцы идентификаторов из целевых таблиц:
ALTER TABLE Orders
DROP COLUMN LegacyCustomerID;
При необходимости сохраняйте столбцы, такие как LegacyCustomerID в конечной таблице для будущих аудитов, родословной или устранения неполадок.