Ошибка SSIS с назначением OLE DB при выполнении

Я новичок в SSIS, поэтому следил за некоторыми онлайн-учебниками. Я столкнулся со следующим и не могу понять, что произошло. ошибка связана с соединением OLE DB

если кто-нибудь может указать мне в правильном направлении, чтобы решить эту проблему, это было бы здорово.

SSIS package "c:\users\****\documents\visual studio 2015\Projects\tutorials\tutorials\basicpackage.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Warning: 0x80049304 at Data Flow Task, SSIS.Pipeline: Warning: Could not open global shared memory to communicate with performance DLL; data flow performance counters are not available.  To resolve, run this package as an administrator, or on the system's console.
Information: 0x40043006 at Data Flow Task, SSIS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Data Flow Task, SSIS.Pipeline: Pre-Execute phase is beginning.
Information: 0x402090DC at Data Flow Task, Flat File Source [2]: The processing of file "L:\sql queries\SSIS TUTORIAL\apps.txt" has started.
Information: 0x4004300C at Data Flow Task, SSIS.Pipeline: Execute phase is beginning.
Information: 0x402090DE at Data Flow Task, Flat File Source [2]: The total number of data rows processed for file "L:\sql queries\SSIS TUTORIAL\apps.txt" is 5.
Error: 0xC0202009 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "Cannot insert the value NULL into column 'ID', table 'ssis.dbo.Apps'; column does not allow nulls. INSERT fails.".
Error: 0xC0209029 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
Error: 0xC0047022 at Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "OLE DB Destination" (23) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (36). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
Information: 0x40043008 at Data Flow Task, SSIS.Pipeline: Post Execute phase is beginning.
Information: 0x402090DD at Data Flow Task, Flat File Source [2]: The processing of file "L:\sql queries\SSIS TUTORIAL\apps.txt" has ended.
Information: 0x4004300B at Data Flow Task, SSIS.Pipeline: "OLE DB Destination" wrote 4 rows.
Information: 0x40043009 at Data Flow Task, SSIS.Pipeline: Cleanup phase is beginning.
Task failed: Data Flow Task
Warning: 0x80019002 at basicpackage: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (3) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "c:\users\****\documents\visual studio 2015\Projects\tutorials\tutorials\basicpackage.dtsx" finished: Failure.

Первую ошибку не могу устранить. Я проверил соединение, таблицу назначения в базе данных SQL и не знаю, в чем проблема. может ли это быть связано с проверкой подлинности Windows для доступа к БД?

Error: 0xC0202009 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.

person sql2015    schedule 13.10.2017    source источник
comment
Включить содержимое файла apps.txt и определение таблицы dbo.Apps   -  person Mazhar    schedule 13.10.2017
comment
"Cannot insert the value NULL into column 'ID' . Либо удалите ограничение NOT NULL для столбца ID (не рекомендуется), либо проверьте наличие NULL в исходном коде.   -  person Prabhat G    schedule 13.10.2017
comment
@Prabhat-G Я думал, что если я ничего не свяжу со столбцом БД «ID» в разделе «Отображение» диспетчера подключений, тогда проблем не будет. столбец «ID» будет просто автоматически увеличиваться?   -  person sql2015    schedule 13.10.2017


Ответы (1)


Эта ошибка, по-видимому, объясняется этой строкой в ​​выводе

Доступна запись OLE DB. Источник: «Собственный клиент Microsoft SQL Server 11.0». Hresult: 0x80004005 Описание: «Не удается вставить значение NULL в столбец «ID» таблицы «ssis.dbo.Apps».

Не зная содержимого файла L:\sql queries\SSIS TUTORIAL\apps.txt и структуры таблицы SSIS.dbo.Apps, трудно указать точную область проблемы, кроме как сказать, что в таблице есть столбец с именем ID, который не принимает значения NULL, и в файле есть строка, в которой содержимое соответствующего столбца имеет значение NULL .

[EDIT} Обновление после комментариев OP

У тебя вроде такой стол

CREATE TABLE dbo.Apps (
      Id    UNIQUEIDENTIFIER PRIMARY KEY
    , Apps  CHAR (1)
    , Rating CHAR   (1)
    , Summary CHAR  (1)
);

И пытаюсь вставить что-то подобное, ничего в столбце Id

INSERT INTO dbo.Apps
( Id, Apps, Rating, Summary)
VALUES
(NULL , '1', '2', '3' ) 

Вы получите эту ошибку

Сообщение 515, уровень 16, состояние 2, строка 5 Не удается вставить значение NULL в столбец «Идентификатор» таблицы «xStuff.dbo.Apps»; столбец не допускает пустых значений. ВСТАВИТЬ не удается.

Поэтому я бы порекомендовал вам изменить определение таблицы таким образом, так как вы хотите, чтобы столбец идентификатора автоматически увеличивался, UNIQUEIDENTIFIER на INT IDENTITY

CREATE TABLE dbo.Apps (
      Id    INT IDENTITY PRIMARY KEY
    , Apps  CHAR (1)
    , Rating CHAR   (1)
    , Summary CHAR  (1)
);

и это будет работать

INSERT INTO dbo.Apps
(     Apps
    , Rating
    , Summary
)
VALUES
(  '1', '2', '3'), (  'A', 'B', 'C')

см. вывод

введите здесь описание изображения

person Mazhar    schedule 13.10.2017
comment
Спасибо за ваш ответ. мой файл apps.txt содержит 3 заголовка App|Rating|Summary. моя таблица БД SQL APPs содержит 4 столбца ID|App|Rating|Summary. идентификатор установлен как PK, а тип данных установлен как uniqueIdentifier, что означает, что он не допускает пустых значений. Я не думал, что это будет проблемой, я думал, что это будет заполнено, когда пакет будет запущен? - person sql2015; 13.10.2017
comment
уникальный идентификатор не увеличивается автоматически и не имеет значения по умолчанию, если вы не создадите ограничение по умолчанию - person Mazhar; 13.10.2017