Как импортировать данные с помощью SSIS для последовательных направляющих?

Есть ли какой-нибудь способ импортировать данные в SSIS, где я ожидаю, что PK будут последовательными направляющими?

Единственный способ, который мне удалось найти, - это создать временную таблицу со столбцом по умолчанию newsequentialid() загружая данные туда, затем копируя их в правильную таблицу. Это не очень элегантно и требует много времени, чтобы добавить несколько дополнительных слоев в мои пакеты, чтобы приспособиться к этому.

2 ответа

Решение

Я не использую GUID в качестве PK, но вы не можете установить newsequentialid() в качестве значения по умолчанию, тогда любая вставка в вашу базу данных будет использовать это.

Вы смотрели на предложение OUTPUT?

По сути, вы выводите все, что было вставлено (включая поля идентификаторов) в переменную таблицы или временную таблицу. Вы не можете вставить его непосредственно в другую таблицу, если другая таблица имеет отношение внешнего ключа. Всякий раз, когда я использовал его, я использовал временную таблицу, а затем вставлял ее в дочернюю таблицу.

Вот пример его использования:

DECLARE @roles TABLE (
    SecurityRoleId int
)

INSERT dbo.SecurityRole (
    SecurityRoleName,
    SecurityRoleDescription,
    LastUpdatedGuid
)
OUTPUT
    INSERTED.SecurityRoleId
INTO @roles
SELECT
    SecurityRoleName,
    SecurityRoleDescription,
    NEWID()
FROM @SecurityRole


INSERT INTO dbo.SecurityRoleDtl (
    SecurityRoleId,
    MemberSecurityRoleId
)
SELECT
    1,
    SecurityRoleId
FROM @roles
Другие вопросы по тегам