У SQL Server не підтримується сценарій виконання сторонніх об'їзди або аналогічні методи

Переклади статей Переклади статей
Номер статті: 920925 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

Підсумки

Функції, які використовують обхідних шляхів або аналогічні методи, щоб змінити поведінку Microsoft SQL Server може спричинити такі проблеми:
  • Проблеми із продуктивністю
  • Неправильні результати
  • дублювання диска і пам'ять корупцією
  • Втрата відповідь сервера SQL
  • Неочікувана процесу
  • Неможливості сценарій виконання стандартних діагностики, таких як функцію fn_get_sql і команда DBCC INPUTBUFFER
  • Збільшення шансів на питань безпеки
Примітка. корпорація Майкрософт не надає послуг підтримки для сторонні функції, які використовують обхідних шляхів або аналогічні методи щоб змінити поведінку SQL Server. Якщо для роботи з SQL Server допоміжних послуг з SQL Server питання, і встановлено, що обхідних шляхів або аналогічні методи, які змінюють поведінку SQL Server може бути залучені, за підтримки професійного запитає, відключити або видалити такі обхідних шляхів або аналогічні характеристики як виправлення неполадок крок. Перед тим, як додаткове виправлення може відбуватися, виявленої неполадки повинні бути відтворені без будь-яких функцій гак. Слід питання вже не може відбуватися, Microsoft може рекомендувати, що ви зверніться до виробника програми для сторонні функції і переходьте напрямок від цього постачальника.

Додаткові відомості

Обхідних шляхів є потужними. Об'їзди забезпечують покращені можливості і ризик/винагорода компроміс. Зазвичай, коли гак впроваджено у SQL Server, застосовні код вводиться в простір процесу. Перехопили SQL Server методи, або функції. Ця діяльність може змінити поведінку основних виконання SQL Server.

Нижче наведено приклад ситуації і можливі побічні ефекти.
  • Вхідні пакети трафіку (TDS) мережі відскановані і змінено. Гак додається критичних місце в net_readdata мережі процес нитку. Навіть 100 процесора в цьому місці може суттєво зменшити ставка пропускної здатності пакетного.

    Зміни у фактичних даних TDS може призвести до пам'яті-писак. Ця проблема викликало різні проблеми стійкості SQL Server і в даних корупції. Проблеми може викликати пакетів TDS, частково змінено і повторити сміття на SQL Server. Журналювання об'єктів на цьому рівні може викрити паролі та інші конфіденційні дані, що SQL Server трасування покликана заглушити і захисту.
  • SQL Server парсингу процедури detoured змінити поведінку. Нижче наведено можливі побічні ефекти.
    • Виконання планів не відповідають фактичним запит на змінення текст.
    • Команду надсилання лише один раз від клієнта. Тим не менш, команда виконується кілька разів.
    • Трасуванням показує оригінальний команду замість змінені запит на змінення.
    • Команда DBCC INPUTBUFFER показує оригінальний команду замість змінені запит на змінення.
    • Fn_get_sql функція показує неправильних даних. Крім того, функція fn_get_sql є сприйнятливі до винятками і неправильні результати. Функція fn_get_sql використовується в багатьох рішення моніторингу і може призвести до проблем на рішення моніторингу.
    • Порожнина тіла може бути перервана планувальник користувацький режим (UMS) і планування SQL Server операційної системи (SQLOS). Це призводить до втрати відповідь сервера SQL до виконання змін та до перебоїв у роботі.
  • Detoured API для Win32, які надають удосконалені засоби забезпечення безпеки. В залежність завдання від реалізації журналювання об'єктів на цьому рівні може викрити паролі та інші конфіденційні дані. В цілому переривається UMS і SQLOS планування. Це призводить до втрати SQL Server відповідь і відключень.
  • Змінивши функції таблиць і переспрямуванням основні функції SQL Server або Windows API не підтримуються в рамках процесу SQL Server. Це може призвести до нестабільності і нестандартна поведінка в SQL Server функціональність.
Наступний приклад показує, що kernel32!GetQueuedCompletionStatus функція була detoured.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
У роботі асамблеї для функції GetQueuedCompletionStatus першу інструкцію була замінена на стрибок інструкція.
0:038> u kernel32!GetQueuedCompletionStatus
kernel32!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
Складання інжектіруемих код показує detoured діяльності і заклик до файлу MyDLL.
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. Прикріпити налагодження інструменти для Windows до SQL Server, або завантаження файлу дампа повний користувача.
  2. Виконайте наступну команду налагоджувач. Ця команда перевіряє кожне зображення проти зображення на диску, щоб визначити, чи вводилися обхідних шляхів.
    !for_each_module "!chkimg -v @#Base -d"
  3. Від'єднати налагоджувач.
Щоб отримати налагодження інструменти для Windows, відвідайте веб-сайт корпорації Майкрософт:
http://www.Microsoft.com/whdc/devtools/debugging/default.mspx
Якщо зображення у пам'яті було змінено, вивід може мати такий вигляд:
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!ConnectionClose
ssnetlib!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. Докладніше про об'їзди і подібні методи, такі Microsoft досліджень Центру веб-сайті:
http://Research.Microsoft.com/SN/detours

Властивості

Номер статті: 920925 - Востаннє переглянуто: 7 травня 2014 р. - Редакція: 3.0
Застосовується до:
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
  • Microsoft SQL Server 2014 Developer
  • Microsoft SQL Server 2014 Enterprise
  • Microsoft SQL Server 2014 Express
  • Microsoft SQL Server 2014 Standard
  • Microsoft SQL Server 2014 Web
Ключові слова: 
kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtuk
Машинний переклад
ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 920925

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com