Тупик при регистрации изменения значения переменной с помощью задачи SQL

Утро

Я читал "Проблема служб интеграции SQL Server 2008 - Дизайн - Решение". В нем описывается способ регистрации изменений переменных, которые я пытаюсь воспроизвести в SQL 2005.

  1. Создайте переменные, например. PackageId, Затронутые Записями. - Установите для Raise ChangeEvent значение true.
  2. Создайте строковую переменную g.g. стрПеременноеЗначение. - Установите Raise ChangeEvent в false.
  3. В обработчике события пакета: OnVariableValueChanged добавьте задачу скрипта «SCR Преобразование значения в строку».
  4. Добавить ReadOnlyVariables: System::VariableValue
  5. Добавить ReadWriteVariables: User::strVariableValue
  6. В скрипте задайте для локальной переменной значение System::VariableValue.value.tostring.
  7. Установите переменную User::strVariableValue в локальную переменную
  8. Добавьте компонент «Выполнение задачи SQL» «Значение переменной журнала SQL изменено», вызывающий SP без наборов результатов.
  9. Установите сопоставление параметров с User::PackageId, System::VariableName, User::strVariableValue.

Когда это выполняется, я получаю тупик на User::PackageID

Ошибка: 0xC001405B в значении переменной журнала SQL изменено: обнаружена взаимоблокировка при попытке заблокировать переменную «User::_PackageID» для доступа на чтение. Блокировку не удалось получить после 16 попыток, и время ожидания истекло.

Шаг сценария завершается успешно, но задача «Выполнение SQL» завершается со сбоем. Я использую Visual Studio 2005 версии 8.0.50727.42, Microsoft SQL Server Integration Services Designer версии 9.00.4035.00 и BIDSHelper версии 1.4.3.0.

Любые идеи?


person Community    schedule 27.07.2010    source источник


Ответы (3)


Эврика!

У меня была такая же проблема и привела к нескольким тупиковым постам, потом обнаружил рут.

У меня была инфраструктура, работающая нормально, и я хотел принудительно зарегистрировать некоторую информацию. Поэтому я изменил значение переменной фреймворка «strVariableValue», и это вызвало тупик с задачей изменения события. Я исправил, создав свою собственную переменную «strLogMe» и поместив все, что хотел, в журнал.

Мораль: не трогайте переменные фреймворка

person Homer Roderick    schedule 14.06.2013


Я внезапно получал эту ошибку («обнаружена взаимоблокировка» и т. д.), которая, казалось, совпадала с I.T. сделав патч Microsoft Windows на сервере. Были пакеты, которые использовали задачи сценариев с переменными только для чтения и/или чтения-записи в пользовательском интерфейсе служб SSIS. Несмотря на то, что это казалось проблемой окружающей среды (поскольку пакеты работали в течение нескольких месяцев, а затем внезапно перестали работать, хотя я не изменил никакого кода), я подумал, что ж (как я видел из различных сообщений в блогах за годы прошло), были случаи, когда компании выпускали патчи для серверов, а затем их пакеты SSIS ломались; и блоги, казалось, говорили: измените способ блокировки переменных, не ссылайтесь на них в пользовательском интерфейсе; вместо этого заблокируйте их явно в коде. Итак, я попробовал то же самое. Это не исправило.

Оказывается, какой-то человек удалил разрешения пользователя, под чьим именем запускаются пакеты, из группы AD; эти разрешения были необходимы, потому что он пытался скопировать файл из каталога, который требовал разрешений на чтение в каталоге. Эти пакеты обычно вызываются заданием агента SQL с использованием идентификатора прокси. Когда пакет запускался вручную из SSMS, он работал. Но когда он был запущен путем вызова задания агента SQL, он потерпел неудачу.

Суть в том, что это было просто совпадение, что пакеты начали давать сбой примерно во время обновления Windows. Но другой (основной) момент заключается в том, что если ваш пакет пытается получить доступ к файлу в сети, а идентификатор (или идентификатор прокси-сервера), под которым запускается этот пакет, не имеет разрешений на исходный или целевой каталог, тогда ваш пакет может потерпит неудачу, и проблема может проявиться таким загадочным образом, где она выглядит как проблема взаимоблокировки переменных, но на самом деле это проблема с правами доступа к файлам. Я потратил на это всего день, но... может быть, это кому-то пригодится в будущем.

person David Barrows    schedule 08.10.2014