Задержек или сходные методы могут вызвать непредвиденное поведение с SQL Server

Применимо к: Microsoft SQL Server 2005 Express EditionMicrosoft SQL Server 2005 Express Edition with Advanced ServicesMicrosoft SQL Server 2005 Express Edition with Advanced Services

Обзор


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

Функции, использующие задержек или сходные методы, чтобы изменить поведение SQL Server может вызвать следующие проблемы:
  • Проблемы с производительностью
  • Неверные результаты
  • Повреждения диска и памяти
  • Потеря ответ SQL Server
  • Неожиданное завершение процесса
  • Невозможность использования стандартных диагностики, функция fn_get_sql и команды DBCC INPUTBUFFER
  • 100-процентной загрузке Процессора и долго время восстановления базы данных, при использовании таблицы OLTP в памяти в SQL Server
Эти же проблемы могут возникнуть при использовании программного обеспечения сторонних разработчиков связанных серверов, расширенных процедур или COM-объекты внутри процесса SQL Server. Обходит скрыты от просмотра администратор базы данных. Для выявления detour, необходимо использовать методы, описанные в разделе «Дополнительные сведения», следующий. Связанные серверы, объектов COM и расширенных процедур явной регистрации, определены интерфейсы.

Примечание. Из-за скрытого характера задержек и отсутствие опубликованных интерфейсов Microsoft не предоставляет поддержку для сторонних средств, использующих задержек или сходные методы. Третьей стороны отвечает за поддержку его собственный код так же, как он будет отвечать за свой собственный связанный сервер или другой разрешено развертывания.

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

Это не намерение Открывание detour, выберите экземпляр SQL Server не поддерживаются. Корпорация Майкрософт подтверждает, что некоторые реализации необходимы. Тем не менее Корпорация Майкрософт требует проверки поддержки задержек. Detour из известных и надежных компании определенно отличается от Непредвиденная detour, который используется вирусом. Корпорация Майкрософт не гарантирует или сертификации эти продукты независимых производителей или как продукты независимых производителей взаимодействовать с продукты и службы Майкрософт. Вместо этого сторонние поставщики несут ответственность за идентификацию и надежности своих продуктов и служб. Если у вас возникли вопросы о сторонних продуктах и услугах, пожалуйста доступ к применимым сторонних производителей. Корпорация Майкрософт не несет ответственности за любые проблемы, вызванные использование сторонних продуктов и услуг в связи с SQL Server.

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


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

Ниже приведены некоторые пример ситуации и возможные побочные эффекты.
  • Сканирования и изменении входящих пакетов сетевого трафика (TDS). Detour добавляется в критических местоположение на поток процесса net_readdata сети. Даже 100 циклов ЦП в этом месте может значительно снизить пропускную способность курс партии.

    Изменение фактических данных TDS может привести к scribblers памяти. Эта проблема срабатывания различных стабильность работы SQL Server и повреждению данных. Могут возникать пакет TDS частично изменить и повторить сборки мусора для SQL Server. Регистрирующие средства на этом уровне могут предоставлять пароли и другие конфиденциальные данные, трассировка предназначена для подавления и защиты SQL Server.
  • Чтобы изменить поведение detoured процедуры синтаксического анализа SQL Server. Ниже перечислены возможные побочные эффекты.
    • Планы выполнения запроса фактический текст не совпадают.
    • Команда отправляется только один раз от клиента. Тем не менее команда выполняется несколько раз.
    • Журнал трассировки показывает исходную команду вместо измененного запроса.
    • Команда DBCC INPUTBUFFER показывает исходную команду вместо измененного запроса.
    • Функция fn_get_sql отображает неверные данные. Кроме того функция fn_get_sql уязвим для исключения и неверные результаты. Функция fn_get_sql используется многими решениями наблюдения и может привести к проблемам в решениях для наблюдения.
    • В целом планировщика режима пользователя (UMS) и операционная система SQL Server (SQLOS) планирование может быть прервано. Это приводит к потере ответа SQL Server, изменений производительности и сбои в работе.
  • API-интерфейсы Win32, которые обеспечивают дополнительные функции безопасности detoured. В зависимости от реализации средства ведения журнала на этом уровне может предоставлять пароли и другие конфиденциальные данные. В целом UMS и планирование SQLOS прерывается. Это приводит к потере ответа SQL Server и сбои в работе.
  • Изменение функции таблиц, а также перенаправлении основных функций SQL Server или Windows API не поддерживаются внутри процесса SQL Server. Это может привести к нестабильности системы и непредвиденное поведение функций SQL Server.
В следующем примере показано kernel32! GetQueuedCompletionStatus функция была detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait

В сборке для функции GetQueuedCompletionStatus первая инструкция был заменен инструкцию перехода.
0:038> u kernel32!GetQueuedCompletionStatuskernel32!GetQueuedCompletionStatus 
77e660f1 e90a9f00aa jmp 21e70000 ß This points to an address that does not appear in the loaded module list (lm). It is injected code.
77e660f6 83ec10 sub esp,10h
Сборки для введенного кода показан вызов файла MyDLL и detoured деятельности.
0:038> u 21e70000  
21e70000 55 push ebp
21e70001 8bec mov ebp,esp
21e70003 51 push ecx
21e70004 8b4518 mov eax,dword ptr [ebp+18h]
21e70007 50 push eax
21e70008 8b4d14 mov ecx,dword ptr [ebp+14h]
21e7000b 51 push ecx
21e7000c 8b5510 mov edx,dword ptr [ebp+10h]
21e7000f 52 push edx
21e70010 8b450c mov eax,dword ptr [ebp+0Ch]
21e70013 50 push eax
21e70014 8b4d08 mov ecx,dword ptr [ebp+8]
21e70017 51 push ecx
21e70018 e8234d19ee call MyDLL+0x4d40 (10004d40) <- Call to the MyDLL file.
21e7001d 8945fc mov dword ptr [ebp-4],eax
21e70020 8b55fc mov edx,dword ptr [ebp-4]


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

Примечание. Всегда проверяйте этот метод перед его в рабочей среде. При использовании средства отладки для Windows, процесс может зафиксировать при выполнении команды. Это может негативно сказаться на рабочем сервере.
  1. Присоединить к SQL Server средства отладки для Windows, или загрузите полный пользовательский файл дампа.
  2. Введите следующую команду отладчика. Эта команда проверяет каждое изображение от дискового образа, чтобы определить, был ли вставлен задержек.
    !for_each_module "!chkimg -v @#Base -d"
  3. Отсоедините отладчик.
Получить средства отладки для Windows, можно на веб-узел Майкрософт:Если была изменена в памяти изображения, результат может выглядеть следующим образом:
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dll
Scanning section: .text
Size: 56488
Range to scan: 0c261000-0c26eca8
0c263710-0c26371a 11 bytes - ssnetlib!ConnectionClose

[ 8b ff 55 8b ec 83 ec 10:68 00 00 00 00 e9 27 8a ]
0c2641e0-0c2641ea 11 bytes - ssnetlib!ConnectionReadAsync (+0xad0)

[ 8b ff 55 8b ec 83 ec 38:68 00 00 00 00 e9 00 7e ]
0c265160-0c26516a 11 bytes - ssnetlib!ConnectionWriteAsync (+0xf80)

[ 8b ff 55 8b ec 83 ec 28:68 00 00 00 00 e9 ba 70 ]
Total bytes compared: 56488(100%)
Number of errors: 33
33 errors : 0c260000 (0c263710-0c26516a)
Можно просмотреть сборки, подробно рассмотрим эту проблему следующим образом:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:
0c263710 6800000000 push 0
0c263715 e9278ada03 jmp MyDLL!MyGetQueuedCompletionStatus <- A detour has been installed.


Антивирусные программы, которые отслеживают атак путем внедрения кода SQL можно detour кода SQL Server. В этом случае результат! for_each_module «! @# chkimg - v Base -d» расширение может показать, что SQL Server функций yyparse и ex_raise2 , будут изменены:

Comparison image path: <symbol file path>\sqlservr.exeRange to scan: c81000-3de7d48    ed71a8-ed71ad  6 bytes - sqlservr!yyparse  [ ff f5 41 54 41 55:e9 c7 95 5c 76 90 ]1202820-1202824  5 bytes - sqlservr!ex_raise2 (+0x32b678)  [ ff f3 57 41 54:e9 20 e0 29 76 ] Total bytes compared: 51801416(17%)Number of errors: 11 

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