У меня проблема с командой SSIS OLE DB.то, что я пытаюсь сделать, это вставить в таблицу "person" и захватить вновь созданный PersonID (идентификатор таблицы) из вставки, поскольку мне нужно это для создания отношения в таблице PersonContactInfo, это должно быть довольно просто.
Я не могу выполнить сохраненную процедуру, и там около 10 тыс. Строк, поэтому с OLE DB-командой все должно быть в порядке
Я попытался написать этот код, и он должен соответствовать:
DECLARE @PersonID int
---
--- create new person
---
INSERT INTO [dbo].[Personer_LF_TEST](Fornavne, Efternavne, Oprindelse, OprettetDato, OprettetAf,OprindelseID)
VALUES (?, ?, 'Klimaquiz', ?, 499,7)
SET @PersonID = (SELECT scope_identity())
---
--- update phonenumber
---
INSERT INTO [dbo].[Kontaktinfo_LF_TEST](PersonID, KontaktInfoTypeID, Notat, Tekst, Oprettet)
VALUES (@PersonID, 5, ?,?, Getdate() )
---
--- update Email
---
INSERT INTO [dbo].[Kontaktinfo_LF_TEST](PersonID, KontaktInfoTypeID, Notat, Tekst, Oprettet)
VALUES (@PersonID, 2,?, ?, Getdate() )
---
--- create persontypecode
---
INSERT INTO [dbo].[PersonArtskoder_LF_TEST](PersonID, ArtskoderID, Notat, Aktiv, CreatedBy, CreatedOn, ModifiedBy, ModifiedOn, StartDato, SlutDato)
VALUES (@PersonID,?, ?, 1, 209, getdate(), 209, getdate(), getdate(), NULL )
Я также попытался просто запустить первую часть с успехом, как это:
-- Create new Person
INSERT INTO [dbo].[Personer_LF_TEST](Fornavne,Efternavne,Oprindelse,OprettetDato,OprettetAf,OprindelseID)
VALUES(?, ?,'Klimaquiz',?,499,7)
, которая вставляет 10 тыс. Строк
, если попытаться это сделать, это не удастся
-- Create new person
INSERT INTO [dbo].[Personer_LF_TEST](Fornavne,Efternavne,Oprindelse,OprettetDato,OprettetAf,OprindelseID)
VALUES(?, ?,'Klimaquiz',?,499,7)
-- Insert Phone number
INSERT INTO [dbo].[Kontaktinfo_LF_TEST](PersonID, KontaktInfoTypeID, Tekst, Oprettet)
VALUES (1,5,?,Getdate())
текст ошибки:
Ошибка в задаче потока данных [Команда OLE DB [178]]: код ошибки SSIS dts_E_OLEDBERROR.произошла ошибка OLE DB.
Код ошибки: 0x80004005.Доступна запись OLE DB.Источник: «Собственный клиент Microsoft SQL Server 11.0». Hresult: 0x80004005 Описание: «Вставить список значений не соответствует списку столбцов»
Но входные данные должны соответствовать списку столбцов.
это "своего рода" код, который я хотел бы, чтобы команда OLD DB выполняла
DECLARE @PersonID int
---
--- create new person
---
INSERT INTO [dbo].[Personer_LF_TEST](Fornavne, Efternavne, Oprindelse, OprettetDato, OprettetAf,OprindelseID)
VALUES ('Simster', 'Mann', 'Klimaquiz', '03-25-2019', 499,7)
SET @PersonID = (SELECT scope_identity())
---
--- update phonenumber
---
INSERT INTO [dbo].[Kontaktinfo_LF_TEST](PersonID, KontaktInfoTypeID, Notat, Tekst, Oprettet)
VALUES (@PersonID, 5, 'WEB','22004400', Getdate() )
---
--- update Email
---
INSERT INTO [dbo].[Kontaktinfo_LF_TEST](PersonID, KontaktInfoTypeID, Notat, Tekst, Oprettet)
VALUES (@PersonID, 2,'WEB', 'Simster@codewithme.dk', Getdate() )
---
--- create persontypecode
---
INSERT INTO [dbo].[PersonArtskoder_LF_TEST](PersonID, ArtskoderID, Notat, Aktiv, CreatedBy, CreatedOn, ModifiedBy, ModifiedOn, StartDato, SlutDato)
VALUES (@PersonID,'30395', 'WEB', 1, 209, getdate(), 209, getdate(), getdate(), NULL )