Исправление: Появляется сообщение об ошибке или повреждения данных после выполнения пакета служб SSIS, который содержит задачу потока данных в случае нехватки памяти в SQL Server 2005 или SQL Server 2008

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 как один загружаемый файл. Так как исправления являются накопительными, каждый выпуск содержит все исправления и все исправления безопасности, которые были включены в предыдущие 2008 SQL Server исправления выпуска.

Симптомы

Рассмотрим следующий сценарий:

  • Запустить пакет служб SQL Server Integration Services (SSIS) в SQL Server 2005 или SQL Server 2008.

  • Пакет служб SSIS содержит задачу потока данных.

  • Запуск пакета служб SSIS на компьютере с низкой доступной памяти. Условия нехватки памяти может быть временно или периодически.

  • При выполнении пакета служб SSIS буферов данных записываются на диск из-за условия нехватки памяти.

В этом случае могут возникнуть одно или несколько из следующих симптомов:

Проблема 1

Данные повреждены данные до назначения потока данных. Можно найти, неожиданно становится следующих значений данных в месте назначения потока данных.

  • «» : NULL, пустые или пустые строковые значения

  • 0 : нулевое значение или нулевое значение, которое имеет выше точность и масштаб.

  • 0-0-0 0:0:0 : пунктирная нулевое значение даты

Примечание. Не появится сообщение об ошибке при возникновении этой проблемы.

Случай 2

Появляется одно из следующих сообщений об ошибке преобразования типа данных:

Сообщение об ошибке 1


DTS_E_OLEDBERROR. Ошибка OLE DB. Код ошибки: 0x80004005.

Доступна запись OLE DB. Источник: «SQL собственный клиент Microsoft» Hresult: 0x80004005 Описание: «Недопустимое символьное значение для указания отклонения».


Сообщение об ошибке 2


DTS_E_COLUMNSTATUSERROR. Произошла ошибка с входным столбцом «имя_столбца» (IDnumber) в поле ввода «вход назначения OLE DB» (IDNumber). Возвращенный столбец состояния: «Ошибка преобразования: значение типа данных вызвало переполнение указанного типа.».

Проблема 3

Появляется сообщение об ошибке нарушения ограничения:


DTS_E_OLEDBERROR. Ошибка OLE DB. Код ошибки: 0x80004005.

Доступна запись OLE DB. Источник: «SQL собственный клиент Microsoft» Hresult: 0x80004005 Описание: «инструкции было прервано.».

Доступна запись OLE DB. Источник: «SQL собственный клиент Microsoft» Hresult: 0x80004005 Описание: «нарушение ограничения ПЕРВИЧНОГО ключа «PrimaryKeyName». Не удается вставить повторяющийся ключ в объект «TableName».».


Кроме того при выполнении этого же пакета служб SSIS снова при доступности памяти, эта проблема не возникает.

Причина

При нехватке памяти ресурсов отправляется уведомление подсистемы обработки потока данных, подсистема обработки потока данных записывает буферов данных на диск, временно. Эта проблема возникает, так как значения данных, присваивается значение NULL или неправильно ноль, если подсистема обработки потока данных записывает буферов данных на диск. Таким образом Если подсистема обработки потока данных считывает данные из буферов данных и затем записывает данные назначения потока данных, назначения потока данных будет содержать значения поврежденных данных. Поврежденные данные также могут вызвать ошибки преобразования типа данных или ошибки нарушения ограничения.

Решение

Информация о накопительном пакете обновления

В версии SQL Server 2008

Исправление, устраняющее эту проблему, сначала было выпущено в накопительное обновление 6. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008, щелкните следующий номер статьи базы знаний Майкрософт:

971490 накопительного обновления пакет обновления 6 для SQL Server 2008Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

956909 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008

Пакет обновления 1 (SP1) для SQL Server 2008

Важно. При запуске SQL Server 2008 Пакет обновления 1 (SP1) необходимо установить это исправление.

Исправление этой уязвимости также было выпущено в накопительное обновление 3 для SQL Server 2008 Пакет обновления 1. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:

971491 накопительного обновления 3 для SQL Server 2008 Пакет обновления 1Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Корпорация Майкрософт рекомендует учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

970365 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008 Пакет обновления 1
Исправления Microsoft SQL Server 2008 создаются для определенных пакетов обновления SQL Server. Необходимо установить исправление SQL Server 2008 Пакет обновления 1 для установки SQL Server 2008 Пакет обновления 1. По умолчанию какие-либо исправления, включенный в пакет обновления SQL Server включено в следующий пакет обновления SQL Server.

Пакет обновления 2 (SP2) для SQL Server 2005

Важно. Если на компьютере Пакет обновления 2 для SQL Server 2005 необходимо установить это исправление.


Исправление этой уязвимости первого выпуска накопительного обновления 15 для Пакет обновления 2 для SQL Server 2005. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:

Пакет 15 972510 накопительного обновления для SQL Server 2005 г. Пакет обновления 2Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2005 исправление выпуска. Корпорация Майкрософт рекомендует учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

937137 SQL Server 2005 выполняет построение, выпущенных после Пакет обновления 2 для SQL Server 2005
Исправления для Microsoft SQL Server 2005 создаются для определенных пакетов обновления SQL Server. Необходимо установить Пакет обновления 2 для SQL Server 2005 исправление установки обновления Пакет обновления 2 для SQL Server 2005. По умолчанию какие-либо исправления, включенный в пакет обновления SQL Server включено в следующий пакет обновления SQL Server.

Пакет обновления 3 (SP3) для SQL Server 2005

Важно. Это исправление необходимо использовать при выполнении Пакет обновления 3 для SQL Server 2005.


Исправление этой уязвимости также было выпущено в 5 накопительного обновления Пакет обновления 3 для SQL Server 2005. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:

972511 накопительного обновления 5 для SQL Server 2005 Пакет обновления 3Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2005 исправление выпуска. Корпорация Майкрософт рекомендует учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

960598 SQL Server 2005 выполняет построение, выпущенных после Пакет обновления 3 для SQL Server 2005
Исправления для Microsoft SQL Server 2005 создаются для определенных пакетов обновления SQL Server. Необходимо установить Пакет обновления 3 для SQL Server 2005 исправление установки обновления Пакет обновления 3 для SQL Server 2005. По умолчанию какие-либо исправления, включенный в пакет обновления SQL Server включено в следующий пакет обновления SQL Server.

Временное решение

Для временного решения этой проблемы, устраните проблему нехватки памяти. Минимальный объем памяти, который может вызвать проблемы зависит от компьютера к компьютеру. Обычно это значение находится в диапазоне от 32 мегабайта (МБ) и 64 МБ доступной оперативной памяти. Таким образом рекомендуется настроить сервер для распределения более 64 МБ памяти служб SSIS.

По умолчанию объем доступной памяти, сигналы событий уведомления о нехватке памяти ресурсов составляет около 32 МБ на 4 гигабайта (ГБ) составляет 64 МБ в 4 ГБ. Для получения дополнительных сведений посетите следующий веб-сайт Microsoft Developer Network (MSDN):

http://msdn.microsoft.com/en-us/library/aa366541(VS.85).aspx

Тем не менее трудно полностью предотвратить эту проблему, поскольку доступной памяти может сильно колеблется на занят производственных серверах. Кроме того памяти можно уменьшить по различным причинам в рамках обычной деятельности. Для снижения частоты возникновения проблемы используйте один из следующих методов:

Способ 1

Увеличить объем оперативной памяти компьютера.


Способ 2

Запуск пакета служб SSIS на другом компьютере, чем компьютер, на котором выполняется экземпляр SQL Server.

Способ 3

При выполнении пакета служб SSIS на том же компьютере, на котором выполняется экземпляр SQL Server, значение параметра max server memory для экземпляра меньшее значение, чтобы увеличить объем доступной памяти на компьютере.

Способ 4

Закройте стресс приложения, потребляющие большой объем памяти при запуске пакетов служб SSIS, содержащих задачи потока данных.

Метод 5

Запускать пакеты служб SSIS и последовательно вместо из задач потока данных параллельно, чтобы снизить совокупное потребление памяти.


Метод 6

Метод, описанный в подразделе «Как отслеживать потребление памяти для служб SSIS» в разделе «Дополнительные сведения» для устранения условий нехватки памяти, а затем оптимизировать использование памяти для служб SSIS.

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Дополнительные сведения

Дополнительные сведения о признаках

Проблема 1

Если повреждены данные назначения потока данных, поврежденных данных значения могут отображаться как различные представления в зависимости от типа данных. Например следующие типы данных отображаются в виде представления различных значений поврежденных данных:

DT_STR = ""

Значения NULL, пустой или пустой строки

DT_I4 = 0

Нулевое значение целочисленного типа данных

DT_UI1 = 0

Нулевое значение типа данных целое число без знака

DT_NUMERIC = 00000000000000000000000000000000000000

Нулевое значение, которое имеет выше точность и масштаб.

DT_DBTIMESTAMP = 0-0-0 0:0:0

Пунктирная нулевое значение даты

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

В самых передовых технологий затрагиваются не все столбцы в задачу «Поток данных». Если данные управляются в задачу «Поток данных», с помощью преобразований «Уточняющий запрос», преобразование «Производный столбец» и выражения, некоторые столбцы данных могут оставаться таким же, как их ожидаемых значений. Это происходит потому, что служб SSIS заменяет поврежденные данные во время задачу потока данных их преобразованными значениями.

В других сложных макетов некоторые строки могут быть потеряны. Из-за гибкой природы направление данных в модели потока данных служб SSIS поврежденных данных может перенаправляться неожиданное назначение при непредвиденных значений данных предоставляемой в столбце условные структуры. При использовании преобразования, такие как Условное разбиение преобразования или преобразования подстановки, некоторые строки могут быть утеряны при преобразования перенаправляет поврежденные данные. Например в преобразованиях подстановки, если поврежденные строки не совпадают все справочные данные строки будут потеряны.

Случай 2

Так как нулевые значения не являются допустимыми значениями в некоторые типы данных, ошибки преобразования типа данных может возникнуть при преобразовании типов данных поставщика OLE DB. В некоторых случаях может также возникнуть переполнение типа данных. Например, столбец типа данных datetime имеет «0-0-0 0:0:0» значение. Недопустимое значение вызовет ошибки такого типа, поскольку поставщик OLE DB не удалось отформатировать нули в допустимое значение даты для поставщика OLE DB для собственного клиента SQL.

Проблема 3

Нарушения ограничений может возникнуть из-за назначения потока данных вставляются повторяющиеся значения первичного ключа. Например несколько нулевые значения вставляются в столбец типа данных integer или вставке нескольких значений NULL в столбец типа данных varchar . Аналогичным образом внешнего ключа может быть нарушено при вставке повторяющиеся значения ключа в целевой таблице.

Как определить, появляются ли проблема

Чтобы определить, появляются ли эта проблема может использоваться следующие индикаторы:

  • Можно отслеживать счетчик Выгружено буферов для объекта производительности SQL Server: SSIS конвейера, чтобы определить, записывает ли подсистема обработки потока данных буферов данных на диск из-за уведомление о нехватке памяти ресурсов.

  • Также можно проверить файл DTS.tmp, расположенный в временный каталог, указанный в свойстве BufferTempStoragePath задачи «Поток данных». Если вы Обратите внимание, что увеличение размера файла DTS.tmp, подсистема обработки потока данных выполняет запись на диск буферов данных.

  • Если необходимо определить, имеет ли эта проблема существующего пакета служб SSIS, можно добавить преобразование многоадресной рассылки в задачу потока данных в пакете служб SSIS для направления копии данных в назначение плоских файлов для упрощения наблюдения.

  • Другой индикатор важности нехватки доступной памяти, что следующее сообщение записывается в журнал пакета служб SSIS:


    DTS_I_CANTRELIEVEPRESSURE диспетчер буферов обнаружил системы недостаточно виртуальной памяти, что не удалось выгрузить все буферы. 8 буферов, заблокировано и 8 были заблокированы. Либо не хватает памяти недоступны в конвейере, поскольку недостаточно установлен, другие процессы используют ее или заблокирован слишком много буферов.

Как отслеживать потребление памяти для служб SSIS


Мониторинг памяти для измерения максимальной нагрузки для различных процессов во время выполнения служб интеграции SQL Server для вычисления использования максимальный объем памяти

Наблюдение за максимальное использование памяти различных процедур среды выполнения служб интеграции SQL Server, например DTExec.exe и DTSHost.exe процессов с помощью счетчика Private Bytes объекта процесса в окне монитора производительности.

При выполнении пакетов служб интеграции SQL Server в системном мониторе найдите максимальное значение счетчика Private Bytes объекта процесса . Рассмотрим сценарий, в котором параллельного выполнения нескольких пакетов. В этом случае добавьте максимальные значения всех процессов, выполняемых для получения максимальной памяти.

Наблюдение за внешними процессами для поиска пиков и впадин

Пиковое использование памяти процессов, отличных от службы SQL Server и службы SSIS отслеживать с помощью счетчика Private Bytes объекта процесса в окне монитора производительности. Ищите пик использования, которые могут привести к нехватке памяти для служб SQL Server Integration Services. Например рассмотрим пик, где несколько пользователей использовать протокол удаленного рабочего стола (RDP) для подключения к серверу и рассмотрим раз при запуске программы архивации.

Наблюдение за использованием памяти SQL Server для поиска пиков и впадин

Если сообщение «заблокирован с помощью страницы буфера пула.» не присутствует в последний файл Errorlog, счетчик Private Bytes процесс Sqlservr.exe можно указать, сколько памяти используется службами SQL Server.

При наличии в файле Errorlog последние сообщения используйте счетчик Общая память сервера (КБ) SQL Server: диспетчер памяти объект производительности, чтобы измерить объем памяти буферного пула SQL Server. Кроме того для поиска выделения памяти за пределами буферного пула (MemToLeave) используйте счетчик Private Bytes процесс Sqlservr.exe. Сумма двух значений, значение общая память сервера (КБ), а значение MemToLeave, является хорошей оценки на общее потребление памяти SQL Server.

Монитор производительности и диспетчер задач больше не показывать памяти, занимаемой эти страницы буферного пула, если выполняется одно из следующих:

  • Если Блокировка страниц в памяти пользователю право присваивается стартовой учетной записи службы SQL Server.

  • При включении расширения AWE памяти.

Примечание. Если расширения AWE не включена Блокировка страниц в памяти пользователю права не назначены стартовой учетной записи службы SQL Server, счетчик Байт исключительного пользования для процесс Sqlservr.exe должен показывать память, используемая службами SQL для различных экземпляров SQL Server.

Наблюдение за минимальное значение доступной памяти в Windows

Чтобы отслеживать объем доступной памяти в системе Windows, используйте один из следующих методов:

  • Доступно МБ счетчиков в системном мониторе.

  • Значение Физической памяти (МБ) – бесплатный на вкладке Быстродействие диспетчера задач.

    Примечание. В некоторых операционных системах Физической памяти (МБ) – бесплатный помечается как Физической памяти (Кбайт) – доступно.

Ссылки

Дополнительные сведения о свойстве MainPipeClass.BufferTempStoragePath посетите следующий веб-узел Microsoft Developer Network (MSDN):

http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.pipeline.wrapper.mainpipeclass.buffertempstoragepath.aspx
Дополнительные сведения о том, как оптимизировать производительность сервера с помощью параметров конфигурации памяти, посетите следующий веб-узел Microsoft Developer Network (MSDN):

http://msdn.microsoft.com/en-us/library/aa178118(SQL.80).aspx
Дополнительные сведения о мониторе счетчики производительности посетите следующий веб-узел корпорации Майкрософт:

http://technet.microsoft.com/en-us/library/cc768048.aspx
Дополнительные сведения об использовании областей многоадресной рассылки посетите следующий веб-узел корпорации Майкрософт:

http://technet.microsoft.com/en-us/library/cc758554(WS.10).aspxДополнительные сведения о добавочных модель обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:

935897 добавочных модель обслуживания доступна из группы SQL Server для предоставления исправления для проблем, о которых сообщалось в



Дополнительные сведения о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:

822499 Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server

Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:

Описание 824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Нужна дополнительная помощь?

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

Были ли сведения полезными?

Спасибо за ваш отзыв!

×