1. Въведение в SQL Server Profiler
1.1 Какво е SQL Server Профайлър и защо ни е нужен?
SQL Server Profiler е инструмент с графичен потребителски интерфейс за наблюдение и записване на събития, които се случват в SQL ServerТози мощен диагностичен инструмент позволява на администраторите и разработчиците на бази данни да наблюдават активността на двигателя на базата данни в реално време, което помага за идентифициране на пречки в производителността, отстраняване на проблеми с приложенията и одит на събития, свързани със сигурността.
1.2 SQL Server Профайлър през 2025 г.: Текущо състояние и алтернативи
Microsoft е остарял SQL Server Профилър, започващ с SQL Server 2016 г., препоръчвайки Разширени събития като заместваща технология. Инструментът обаче остава наличен в текущите SQL Server версии, включително SQL Server 2022 г. и все още се използва широко от специалисти по бази данни.
1.3 За кого е предназначено това ръководство
- Това ръководство е предназначено за администратори на бази данни, които трябва да наблюдават SQL Server случаи, диагностициране на проблеми с производителността и осигуряване на надеждността на системата. Администраторите на бази данни ще намерят практически насоки за заснемане на следи, анализ на събития и прилагане на стратегии за мониторинг.
- Разработчиците на приложения се възползват от разбирането как техният код взаимодейства с SQL ServerSQL Profiler помага на разработчиците да идентифицират неефективни заявки, да валидират поведението на приложенията и да отстраняват грешки, свързани с базата данни.
- Анализаторите и консултантите по производителност ще открият усъвършенствани техники за анализ на работното натоварване, планиране на капацитета и оптимизация на системата. Цялостното покритие на конфигурацията на проследяване, филтрирането и анализа позволява задълбочени оценки на производителността на базата данни.
2. разбиране SQL Server Основи на профилера
2.1 Как SQL Server Профайлър работи
SQL Server Profiler работи като клиентско приложение, което се свързва с SQL Trace engine, работещ в SQL ServerКогато създавате проследяване, системата за проследяване следи определени събития и ги записва според вашата конфигурация. Системата за проследяване събира данни за събития с минимално въздействие върху производителността на сървъра, когато е правилно конфигурирана.
Базовата инфраструктура на SQL Trace използва леки куки за събития в целия енджин на базата данни. Когато възникне събитие, което съответства на вашата дефиниция за проследяване, енджинът улавя съответната информация и я изпраща към интерфейса на Profiler или я съхранява във файл или таблица. Тази архитектура позволява гъвкаво събиране на данни без промяна на кода на приложението.
2.2 Ключови понятия и терминология
2.2.1 Събития
Събитията представляват специфични събития в рамките на SQL Server които системата за проследяване може да улови. Всяко събитие съответства на определена операция в базата данни или системна дейност. SQL Server Profiler организира събитията в логически категории за по-лесно конфигуриране.
Често срещаните категории събития включват TSQL за изпълнение на заявки, съхранени процедури за извикване на процедури, заключвания за наблюдение на паралелизъм и грешки и предупреждения за проследяване на изключения. Избирането на подходящи събития определя каква информация ще улавя вашата трасировка и пряко влияе върху полезността и производителността на трасировката.
Разбирането на типовете събития ви помага да конфигурирате ефективни проследявания. Събитията RPC:Completed улавят завършванията на отдалечени извиквания на процедури, събитията SQL:BatchCompleted проследяват пакети от ad-hoc заявки, а събитията Lock:Deadlock идентифицират случаи на безизходица. Изберете събития, които съответстват на вашите специфични цели за отстраняване на неизправности или наблюдение.
2.2.2 Колони с данни
Колоните с данни определят каква информация проследяването събира за всяко събитие. Често срещаните колони включват TextData за действителния SQL израз, Duration за времето на изпълнение, CPU за използването на процесора, Reads за четене на логически диск и Writes за записване на логически диск.
Основните колони варират в зависимост от случая на употреба. Отстраняването на неизправности в производителността обикновено изисква колони Duration (Продължителност), CPU (Цепочки на процесора), Reads (Четения) и Writers (Записи). Одитът на сигурността изисква колони LoginName (Вход), DatabaseName (Име на базата данни) и ObjectName. Отстраняването на грешки в приложенията е от полза за колоните ApplicationName (Апликация), SPID (Специфична идентификация) и Error (Грешка).
Избирането само на необходимите колони намалява натоварването на проследяването и опростява анализа. Избягвайте да събирате всички налични колони, освен ако не е специално необходимо. Всяка допълнителна колона увеличава количеството събрани и обработени данни, което потенциално може да повлияе на производителността на сървъра.
2.2.3 филтри
Филтрите ограничават кои събития проследяването улавя въз основа на зададени критерии. Правилно конфигурираните филтри драстично намаляват обема на проследяването, което прави анализа управляем и минимизира влиянието върху производителността. Филтрите оценяват данните за събитията преди заснемане, предотвратявайки ненужното събиране на данни.
Често срещани критерии за филтриране включват DatabaseName (Име на базата данни) за фокусиране върху конкретни бази данни, ApplicationName (Име на приложение) за изолиране на конкретни приложения, Duration (Продължителност) за улавяне само на бавни операции и LoginName (Име на вход) за проследяване на конкретни потребители. Комбинирането на множество филтри създава прецизни дефиниции за проследяване, които улавят точно това, от което се нуждаете.
Филтрирането, съобразено с производителността, е от съществено значение за производствените среди. Винаги филтрирайте по DatabaseName или ApplicationName, за да избегнете записване на системната активност. Задайте минимални прагове за продължителност, за да игнорирате бързо изпълняващите се заявки. Използвайте филтрите TextData внимателно, тъй като те изискват сравнения на низове, които добавят режийни разходи.
2.2.4 Шаблони за проследяване
Шаблоните за проследяване предоставят предварително конфигурирани събития, колони и филтри за често срещани сценарии. SQL Server Profiler включва няколко вградени шаблона, които служат като отправни точки за създаване на проследяване. Персонализираните шаблони запазват вашите конфигурации за повторна употреба в множество сесии за проследяване.
Стандартният шаблон улавя общ набор от събития, подходящи за основно наблюдение. TSQL шаблонът се фокусира върху изпълнението на заявки с минимални режийни разходи. Шаблонът за настройка събира събития специално за анализ от Database Engine Tuning Advisor. Всеки шаблон балансира събирането на информация спрямо въздействието върху производителността.
Създаването на персонализирани шаблони спестява време и осигурява последователност в сесиите за проследяване. Конфигурирайте проследяване с предпочитаните от вас събития, колони и филтри, след което го запазете като шаблон. Персонализираните шаблони стават особено ценни, когато многократно отстранявате подобни проблеми.
3. Първи стъпки с SQL Server Profiler
3.1 Системни изисквания и предварителни условия
SQL Server Profiler се предлага в комплект с SQL Server Management Studio и поддържа всички текущо поддържани SQL Server версии, от SQL Server 2016 да 2022.
Изискванията за разрешения определят кой може да създава и изпълнява трасирания. Членовете на фиксираната сървърна роля sysadmin имат неограничен достъп до SQL Server Функционалност на профилер. За потребители, които не са системни администратори, разрешението ALTER TRACE предоставя възможност за създаване и управление на следи.
При проследяване на отдалечени сървъри се прилагат мрежови съображения. Клиентските проследявания изискват непрекъсната мрежова свързаност между вашата работна станция и SQL Server екземпляр. Прекъснатите връзки спират клиентските проследявания, което потенциално води до загуба на заснети данни. Сървърните проследявания избягват това ограничение, като се изпълняват изцяло на сървъра на базата данни.
3.2 Как да стартирате SQL Server Profiler
3.2.1 Започвайки от SQL Server Студио за управление (SSMS)
Следвайте тези стъпки, за да стартирате SQL Server Профилер от SSMS:
- Отворете SQL Server Студио за управление и свързване към всеки SQL Server инстанция.
- Кликнете върху менюто Инструменти меню в горната лента с менюта.
- Изберете SQL Server Profiler от падащото меню.
- - SQL Server Приложението Profiler се стартира в нов прозорец.
3.2.2 Стартиране от менюто „Старт“ на Windows
Достъп SQL Server Profiler директно от Windows, като използвате тези стъпки:
- Щракнете върху Windows СТАРТ бутон.
- Тип SQL Server Profiler в полето за търсене.
- Изберете SQL Server Profiler от резултатите от търсенето.
- Приложението се стартира без активни връзки.
Като алтернатива, можете да се придвижвате през йерархията на менюто „Старт“:
- Отворете СТАРТ меню.
- Намерете Microsoft SQL Server Инструменти папка.
- Разгънете папката и щракнете SQL Server Profiler.
3.2.3 Свързване към SQL Server Случаите
След стартирането SQL Server Профилър, установете връзка, следвайки тези стъпки:
- Кликнете досие в лентата с менюта.
- Изберете Нова следа от падащото меню.
- - Свържете се със сървъра появява се диалогов прозорец.
- Въведете името на вашия сървър в Име на сървъра поле.
- Изберете Удостоверяване на Windows or SQL Server заверка.
- Ако използвате SQL Server Удостоверяване, въведете вашите данни за вход.
- Кликнете Свързване за установяване на връзката.
За отдалечени връзки, посочете пълното име на сървъра, включително името на екземпляра, ако е приложимо. Използвайте формата SERVERNAME\INSTANCENAME за именувани екземпляри. Проверете мрежовата свързаност и настройките на защитната стена, ако опитите за свързване са неуспешни.
4. Създаване и конфигуриране SQL Server Следи
4.1 Създаване на първата ви следа с помощта на шаблон
Създайте първата си следа, като използвате тези стъпки:
- Стартиране SQL Server Профилатор.
- Кликнете досие -> Нова следа и се свържете с целевия си сървър.
- - Свойства на трасирането появява се диалогов прозорец.
- Въведете описателно име в Име на следата поле.
- Изберете шаблон от Използвайте шаблона меню.
- Избери Стандартно (по подразбиране) шаблон за общо наблюдение. Или друг шаблон за други цели. Шаблонът предоставя предварително конфигурирани събития, колони и филтри за често срещани сценарии.
- Кликнете бягане за да започнете да записвате събитията веднага.
4.2 Персонализиране на вашата трасировка
Много пъти шаблоните не могат да отговорят на вашите изисквания. В такъв случай можете напълно да персонализирате вашата трасировка:
- В Свойства на трасирането диалогов прозорец.
- Изберете елемента от менюто празно шаблон от Използвайте шаблона меню.
- Кликнете върху менюто Избор на събития раздела, сега можете да персонализирате всички събития, колони с данни и филтри въз основа на вашите изисквания. Ще ги обсъдим в следващите раздели.
4.3 Избор на събития за заснемане
Можете да изберете събитие в Избор на събития раздел:
- Кликнете върху менюто + икона до категорията „Събитие“, за да я разгънете.
- Щракнете върху квадратчето за отметка до събитието, за да го изберете.
4.3.1 Разбиране на категориите събития
SQL Server Profiler организира събитията в категории за логическо групиране. Категорията „Съхранени процедури“ включва събития за изпълнение на процедури, включително SP:Starting, SP:Completed и SP:StmtCompleted. Тези събития проследяват извикванията на съхранени процедури и изпълнението на отделни оператори в рамките на процедурите.
Категорията TSQL обхваща изпълнението на ad-hoc заявки със събития като SQL:BatchStarting и SQL:BatchCompleted. Тези събития проследяват заявки, подадени директно към SQL Server извън съхранените процедури.
Категорията „Заключвания“ следи събития, свързани с паралелизма, включително „Заключване:Получено“, „Заключване:Освободено“, „Заключване:Блокиране“ и „Заключване:Време за изтичане“. Използвайте тези събития за диагностициране на проблеми с блокиране и безизходица, които влияят на производителността на приложението.
Категорията „Грешки и предупреждения“ обхваща събития с изключения, включително „Изключение“, „Внимание“ и „Съобщение за грешка на потребителя“. Тези събития помагат за идентифициране на грешки в приложенията и SQL Server предупреждения по време на сесии за проследяване.
4.3.2 Избор на правилните събития за вашия сценарий
Мониторингът на производителността изисква събития, които отчитат потреблението на ресурси. Изберете RPC:Completed и SQL:BatchCompleted, за да проследявате изпълнението на заявки. Включете колоните Duration (Продължителност), CPU (Целусен процесор), Reads (Четения) и Writes (Записи), за да измерите използването на ресурси. Тези събития осигуряват основата за идентифициране на пречки в производителността.
Одитът на сигурността изисква събития, които проследяват удостоверяване и оторизация. Изберете Вход за одит, Изход за одит, Неуспешно влизане за одит и Обект: Отворен, за да наблюдавате достъпа до базата данни. Включете колоните LoginName, DatabaseName и ObjectName, за да идентифицирате кой е осъществил достъп до какви ресурси.
Сценариите за отстраняване на грешки се възползват от цялостното записване на събития. Включете събития от съхранени процедури, SQL пакетни събития и събития за грешки, за да проследите пълните потоци на изпълнение. Заснемете допълнителен контекст с колоните SPID, ApplicationName и HostName, за да съпоставите събитията с конкретни сесии.
4.4 Конфигуриране на колони с данни
По подразбиране, когато изберете събитие, всички негови колони с данни ще бъдат избрани (отметнати). Можете да премахнете избора на ненужните колони, за да намалите натоварването и да опростите анализа:
Основните колони за всяка трасировка включват EventClass за идентифициране на типа на събитието, TextData за заснемане на действителния SQL оператор, LoginName за идентифициране на изпълняващия потребител и StartTime за отбелязване на времето, когато е възникнало събитието. Тези колони предоставят основен контекст за всяко заснето събитие.
Колоните, свързани с производителността, измерват потреблението на ресурси. „Продължителност“ показва колко време е отнело дадено събитие в микросекунди. „Целувен процесор“ показва времето на процесора в милисекунди. „Четения“ отчита четенето на логически страници. „Записи“ проследява записите на логически страници. Тези показатели идентифицират ресурсоемки операции, изискващи оптимизация.
Колоните за сигурност и одит проследяват моделите на достъп до данни. DatabaseName идентифицира коя база данни е била достъпвана. ObjectName указва съответната таблица или обект. ApplicationName разкрива кое приложение е инициирало дейността. Заедно тези колони предоставят подробни одитни следи.
4.5 Настройка на филтри за намаляване на шума
4.5.1 Общи критерии за филтриране
Конфигурирайте филтрите, като използвате следния подход:
- Отворете Свойства на трасирането диалогов прозорец.
- Кликнете върху менюто Избор на събития таб.
- Кликнете Филтри на колоните бутон в долния десен ъгъл.
- Изберете колона от списъка вляво.
- Конфигурирайте критериите за филтриране в панела вдясно.
- Кликнете OK за да приложите филтъра.
Филтрите за имена на приложения изолират активността от конкретни приложения. Разгънете колоната ApplicationName в диалоговия прозорец на филтъра, въведете името на приложението си в като поле и SQL Server Profiler улавя само събития от това приложение. Този филтър се оказва безценен при отстраняване на проблеми, специфични за приложението.
Филтрите за имена на бази данни ограничават записа до конкретни бази данни. Филтрирайте по DatabaseName, за да изключите активността на системната база данни и да се съсредоточите върху базите данни на вашето приложение. Въведете имена на бази данни в като or равен поле в зависимост от това дали се нуждаете от съвпадение на заместващи символи.
Филтрите за продължителност улавят само бавно изпълняващи се операции. Задайте минимален праг в По-голямо или равно поле под колоната „Продължителност“. Например, задаването на „Продължителност“ >= 1000 улавя само събития, отнемащи повече от една секунда, филтрирайки бързо изпълняващите се заявки.
Филтрите за потребителски имена проследяват активността на конкретни потребители. Филтрирайте по потребителско име (LogName), за да наблюдавате конкретни потребители на базата данни. Този подход помага да се идентифицира кои потребители изпълняват проблемни заявки или имат достъп до чувствителни данни.
4.4.2 Най-добри практики за филтриране
Ефективното филтриране балансира събирането на данни с въздействието върху производителността. Винаги прилагайте поне един филтър, за да предотвратите улавянето на прекомерна системна активност. Филтрите DatabaseName и ApplicationName трябва да бъдат вашата отправна точка за повечето проследявания.
Избягвайте прекалено широки следи в производствени среди. Нефилтрираните следи улавят огромни обеми от данни, което потенциално може да влоши производителността на сървъра и да направи анализа непрактичен. Задайте специфични критерии за филтриране, насочени към вашите цели за отстраняване на неизправности.
Тествайте филтрите преди внедряване в производствена среда. Първо изпълнете проследявания в среди за разработка или тестване, за да проверите дали филтрите улавят очакваните събития без прекомерни режийни разходи. Настройте критериите за филтриране въз основа на обема на заснетите данни.
4.5 Работа с шаблони за проследяване
4.5.1 Общ преглед на вградените шаблони
Стандартният шаблон осигурява балансирано заснемане на събития, подходящо за общо наблюдение. Той включва често срещани събития за изпълнение на заявки, извиквания на съхранени процедури и основно проследяване на грешки. Използвайте този шаблон, когато се нуждаете от цялостна видимост, без да знаете точно какво да търсите.
Шаблонът TSQL се фокусира специално върху изпълнението на заявки с минимален избор на събития. Той улавя събитията SQL:BatchCompleted и RPC:Completed с основни колони за анализ на производителността. Този шаблон предлага по-ниски режийни разходи от стандартния шаблон.
Шаблонът за настройка оптимизира избора на събития за анализ от Database Engine Tuning Advisor. Той улавя събития и колони, необходими за анализ на работното натоварване и препоръки за индекси. Използвайте този шаблон, когато подготвяте трасирания за автоматизирана настройка на производителността.
Шаблонът TSQL_Replay включва всички събития и колони, необходими за функционалността за повторно възпроизвеждане на проследяване. Той улавя подробни подробности за изпълнението, което ви позволява да възпроизвеждате заснетите натоварвания в тестови среди. Този шаблон генерира по-големи файлове с проследяване поради обширното събиране на данни.
4.5.2 Създаване на персонализирани шаблони
Създайте персонализирани шаблони, като следвате тези стъпки:
- Кликнете досие -> Шаблони -> Нов шаблон …
- Въведете описателно име в Име на нов шаблон поле.
- По желание, отметнете Базирайте нов шаблон върху съществуващ такъв и изберете съществуващ шаблон, ако не искате да изграждате от нулата:
- Кликнете върху менюто Избор на събитие раздел, персонализирайте шаблона за проследяване с желаните от вас събития, колони и филтри, точно както вие направете с нормална следа.
- Кликнете Спестявания за да запазите шаблона.
Експортиране на шаблони за споделяне с членове на екипа или за целите на архивирането:
- Кликнете досие -> Шаблони -> Експортиране на шаблон.
- Изберете шаблона, който искате да експортирате.
- Отидете до желаното място за запазване.
- Въведете име на файл и щракнете Спестявания.
- Споделете *.tdf файла (SQL Server файл с шаблон за профилер) с други SQL Server Потребители на профилер.
4.6 Запазване на изхода от трасирането
По подразбиране SQL Server Profiler ще покаже събитията в прозореца за проследяване, но НЯМА да ги запази. Можете да изберете да запазите данните от проследяването във файл или таблица в Свойства на трасирането диалогов прозорец, когато създавате нова следа.
4.6.1 Запазване във файл
- В Свойства на трасирането диалог, проверка Запазване във файл.
- Щракнете върху иконата на папката, за да отворите файловия браузър.
- Отидете до желаното място за запазване.
- Въведете име на файл с разширение .trc.
- Кликнете Спестявания.
- комплект Задаване на максимален размер на файла за ограничаване на размера на отделните файлове.
- Разреши Активиране на прехвърляне на файлове за създаване на множество файлове.
- По желание активирайте Сървърът обработва данни за проследяване за следи от страна на сървъра.
Управлението на размера на файловете предотвратява изчерпване на дисковото пространство. Задайте максималния размер на файла на разумна стойност, като например 500 MB или 1 GB, въз основа на наличното дисково пространство и очакваната продължителност на проследяване. Прехвърлянето на файлове автоматично създава нови файлове, когато се достигне ограничението за размер, като към името на файла се добавя число.
4.6.2 Запазване в таблица
- В Свойства на трасирането диалог, проверка Запазване в таблицата.
- - Таблица с дестинации появява се диалогов прозорец.
- Изберете сървъра от Сървър меню.
- Изберете базата данни от База данни меню.
- Изберете съществуваща таблица или въведете ново име на таблица в Маса поле.
- Кликнете OK за да потвърдите.
- По избор зададено Задаване на максимален брой редове за ограничаване на размера на таблицата.
Съображения за производителност се прилагат при записване в таблици. Съхранението на таблици въвежда допълнителни режийни разходи в сравнение със съхранението на файлове, защото SQL Server трябва да записва данни за проследяване чрез системата за съхранение. Използвайте таблично съхранение, когато трябва незабавно да заявите данни за проследяване с T-SQL.
Запазването на данни става важно за таблично базирани трасирания. Задайте максимален брой редове, за да предотвратите прекаленото им разрастване. Архивирайте или изтривайте редовно стари данни от трасирания, за да поддържате производителността. Помислете за разделяне на големи таблици за трасиране за по-добра управляемост.
5. Управление и управление SQL Server Следи
5.1 Стартиране, пауза и спиране на трасирания
Управлявайте изпълнението на проследяване с помощта на бутоните в лентата с инструменти:
- Зеленото СТАРТ Бутонът започва да записва събития според вашата конфигурация.
- Кликнете пауза за временно спиране на събирането на данни, без да се губи връзката.
- Кликнете Спиране за да прекратите проследяването и да затворите връзката.
Чрез елементи от менюто:
Чрез щракване с десния бутон върху произволен запис в прозореца за проследяване:
Управлението на жизнения цикъл на проследяването влияе върху ресурсите на сървъра. Активните проследявания консумират памет и процесорна мощност пропорционално на обема на заснетите събития. Паузирайте проследяванията през периоди, когато наблюдението не е необходимо, за да намалите режийните разходи. Спрете проследяванията напълно, когато анализът приключи, за да освободите ресурси.
Клиентските трасирания изискват активна връзка с Profiler. Затварянето на SQL Server Прозорецът на Profiler спира незабавно клиентските следи. Минимизирайте прозореца на Profiler, вместо да го затваряте, за да поддържате следите да се изпълняват, докато работите в други приложения.
5.2 Мониторинг на следи в реално време
Следете записаните събития, докато се случват, в главния прозорец за проследяване. Всеки ред представлява едно събитие с колони, показващи свойствата на събитието. Решетката се актуализира непрекъснато по време на активни проследявания, като по подразбиране показва най-скорошните събития в долната част.
Идентифицирайте модели и проблеми, като наблюдавате честотата и характеристиките на събитията. Събитията с голяма продължителност показват проблеми с производителността. Честите събития за грешки предполагат проблеми с приложенията. Необичайната активност при влизане може да сигнализира за проблеми със сигурността. Мониторингът в реално време позволява незабавна реакция на възникващи проблеми.
Превъртете през заснетите събития, за да разгледате конкретни случаи. Щракнете върху произволен ред, за да изберете събитие и да видите пълните му подробности. Щракнете двукратно върху събития, за да отворите подробни диалогови прозорци със свойства, показващи стойностите на всички колони. Използвайте функцията Scroll Lock, за да предотвратите автоматичното превъртане, докато преглеждате исторически събития.
5.3 Управление на множество едновременни трасирания
Едновременното изпълнение на множество трасирания осигурява гъвкавост за сложни сценарии за наблюдение. Създавайте отделни трасирания за различни аспекти на дейността на базата данни, като например едно трасиране за наблюдение на производителността и друго за одит на сигурността. Всяко трасиране се изпълнява независимо със собствена конфигурация.
Разпределението на ресурсите става критично при множество трасирания. Всяка активна трасирана система изразходва памет, процесор и потенциално дискови операции. Ограничете броя на едновременните трасирания и се уверете, че всяка трасирана система използва подходящи филтри, за да се минимизират режийните разходи. Следете производителността на сървъра, докато изпълнявате множество трасирания.
Координирайте времето за проследяване, за да предотвратите припокриване на трасирания с голямо натоварване. Ако е възможно, изпълнявайте трасирания, изискващи големи ресурси, по време на периоди с ниска активност. Планирайте различни трасирания по различно време, вместо да изпълнявате всичко едновременно.
5.4 Следи от страна на клиента спрямо следи от страна на сървъра
По подразбиране новосъздадената следа е следа от страна на клиента, която изисква активна връзка от SQL Server Профилър към сървъра на базата данни. Проследяването спира незабавно, ако връзката се загуби или Профилърът е затворен.
Можете също така да създадете проследяване от страна на сървъра, което се изпълнява изцяло на SQL Server екземпляр без да се изисква активна връзка с Profiler. Проследяването от страна на сървъра продължава да се изпълнява дори след затваряне SQL Server Профилер, който записва данни в посоченото местоположение на файла.
За да създадете проследяване от страна на сървъра:
- Щракнете върху Файл -> Нова следа …
- В Свойства на трасирането диалог, проверка Запазване във файл
- Задайте местоположението на файла и други настройки.
- Разреши Сървърът обработва данни за проследяване за създаване на следа от страна на сървъра.
Последиците за производителността се различават значително между типовете проследявания. Клиентските проследявания трябва да предават данни по мрежата към интерфейса на Profiler, което добавя латентност и консумация на честотна лента. Сървърните проследявания въвеждат по-малко режийни разходи, тъй като данните се записват директно на диска на сървъра.
Използвайте клиентски трасирания за отстраняване на неизправности по заявка, бързи диагностични сесии и ситуации, в които незабавната визуална обратна връзка е ценна. Изберете сървърни трасирания за производствен мониторинг, продължителни заснемания и сценарии, изискващи работа без наблюдение.
6. Анализиране SQL Server Данни за профилиране
6.1 Отваряне и преглед на запазени трасирания
Заредете запазените файлове с трасиране, като използвате тези стъпки:
- Стартиране SQL Server Профилатор.
- Кликнете досие -> Отворете -> Файл за проследяване.
- Отидете до местоположението на файла с трасирането.
- Изберете .trc файла и щракнете върху Отворете.
- Данните от проследяването се зареждат в главния прозорец.
Заредете таблиците за проследяване, следвайки този процес:
- Кликнете досие -> Отворете -> Таблица за проследяване.
- Свържете се със сървъра, на който се намира таблицата за проследяване.
- Изберете базата данни от База данни меню.
- Изберете масата от Маса меню.
- Кликнете OK за да заредите данните.
6.2 Филтриране и търсене на данни за проследяване
6.2.1 Филтриране след заснемане
Приложете филтри към заредените данни за проследяване, като използвате тези стъпки:
- Кликнете редактирам -> Какво или натиснете Ctrl + F.
- Въведете текст за търсене в Намерете това, поле.
- Изберете колоната, в която да търсите Погледни вътре меню.
- Кликнете Намерете Следваща за да намерите съответстващи събития.
Филтрирането по колони прецизира показваните данни, без да се записват повторно събития. Щракнете с десния бутон върху заглавката на колоната и изберете опции за филтриране от контекстното меню. Въведете критерии за филтриране, за да се показват само съответстващите редове. Този подход ускорява анализа, като скрива неподходящи събития.
6.2.2 Намиране на специфични събития
Функцията за търсене помага за намирането на конкретни събития в големи файлове с трасирания. Използвайте диалоговия прозорец „Търсене“, за да търсите по текстово съдържание, тип събитие или стойност на колона. Регулярните изрази позволяват сложни модели на търсене, когато е необходимо.
Маркирайте важни събития за бърза справка по време на анализ. Щракнете с десния бутон върху интересни събития и изберете опции за маркиране, за да ги маркирате. Придвижвайте се между отметките, като използвате клавишни комбинации или команди от менюто, което улеснява сравняването на свързани събития.
6.3 Групиране и агрегиране на събития
Групирайте събитията по стойности на колоните, за да идентифицирате модели и да обобщите активността. Щракнете с десния бутон на мишката върху заглавката на колоната и изберете Групиране по тази колона за организиране на събития. Групираните изгледи свиват подобни събития, което улеснява виждането на общите модели.
Агрегираните изгледи предоставят статистически обобщения на данните за проследяване. Групирайте по TextData, за да видите колко пъти е изпълнена всяка заявка. Групирайте по LoginName, за да видите обобщения на активността за всеки потребител. Агрегирането разкрива модели, които не са очевидни веднага в подробните списъци със събития.
Разгъвайте и свивайте групите, за да разгледате по-подробно конкретни категории. Щракнете върху иконите плюс и минус до заглавките на групите, за да покажете или скриете групираните събития. Този йерархичен изглед улеснява анализа отгоре надолу, започвайки с модели на високо ниво и задълбочавайки се в детайли.
6.4 Извличане на SQL заявки от следи
Извличане на заявки от данни за проследяване, като се следват тези стъпки:
- Намерете интересуващата ви заявка в мрежата за проследяване.
- Щракнете върху реда, за да изберете събитието.
- Вижте пълния текст на заявката в долния панел.
- Натискане Ctrl + A за да изберете целия текст на заявката.
- Натискане Ctrl + C за да копирате текста на заявката.
- Поставете заявката в Management Studio за допълнителен анализ.
Идентифицирайте проблемните заявки, като сортирате по колони за производителност. Щракнете върху заглавката на колоната „Продължителност“, за да сортирате по време на изпълнение. Най-бавните заявки се показват отгоре или отдолу в зависимост от посоката на сортиране. По подобен начин сортирайте по процесор, четене или запис, за да идентифицирате ресурсоемки операции.
Експортирайте заявки за тестване, като ги копирате от прозорците за проследяване в заявки. Модифицирайте извлечените заявки, за да тествате стратегии за оптимизация. Сравнете планове за изпълнение и показатели за производителност между оригиналните и оптимизираните версии.
6.5 Съпоставяне на събития и разбиране на потока на изпълнение
Връзките между събития родител-дете показват йерархии на изпълнение. SQL:BatchStarting събития родителски SQL:StmtStarting събития, които от своя страна са родителски събития на изпълнение на процедури. Разбирането на тези връзки помага за проследяване на пълните пътища на изпълнение във вашия код.
Проследяването на транзакциите свързва свързани събития във времето. Използвайте колоната SPID, за да групирате събитията по сесия. В рамките на една сесия събитията се случват в хронологичен ред, показвайки последователността на операциите. Този изглед разкрива как различните операции взаимодействат в рамките на транзакциите.
Съпоставете събития, като разгледате споделените стойности на колоните. Събития с еднакъв SPID са възникнали в една и съща сесия. Събития с едно и също име на приложение (ApplicationName) са дошли от едно и също приложение. Използвайте тези корелации, за да разберете сложни сценарии на изпълнение.
7. Обща SQL Server Случаи на употреба на профилер
7.1 Отстраняване на проблеми с производителността
7.1.1 Идентифициране на бавни заявки
Заснемайте бавни заявки, използвайки следната конфигурация:
- Създайте нова следа, използвайки TSQL шаблон.
- В Избор на събития раздел, проверете SQL:BatchCompleted и RPC: Завършено са избрани.
- Кликнете Филтри на колоните.
- Изберете Продължителност от списъка с колони.
- Въведете 1000000 в По-голямо или равно поле за записване на заявки, отнемащи повече от 1 секунда.
- Кликнете OK и започнете проследяването.
- Изпълнявайте проследяването по време на пикови периоди на използване.
- Спрете проследяването и сортирайте по продължителност, за да идентифицирате най-бавните заявки.
Анализът, базиран на продължителност, разкрива модели на времето за изпълнение. Сортирайте заснетите събития по колона „Продължителност“, за да видите първо най-дълго изпълняваните операции. Разгледайте колоната TextData за тези събития, за да идентифицирате действителните заявки, отговорни за закъсненията.
Заявките, изискващи интензивно използване на процесора и входно-изходните данни, изискват различни подходи за оптимизация. Сортирайте по колона „CPU“, за да намерите заявки, обвързани с процесора, които се нуждаят от алгоритмични подобрения. Сортирайте по колони „Reads“ или „Writes“, за да идентифицирате заявки, обвързани с входно-изходни данни, които се възползват от индексиране или пренаписване на заявки.
7.1.2 Откриване на блокиране и безизходици
Конфигурирайте откриването на блокиране, като следвате тези стъпки:
- Създайте нова следа.
- В Избор на събития раздел, разгъване Брави.
- Изберете Заключване: Безизходица и Заключване: Верига с безизходно заключване.
- Разширете Грешки и предупреждения.
- Изберете Отчет за блокиран процес.
- Включи колони: SPID, Текстови данни, Име на базата данни, Входно име.
- Стартирайте проследяването и наблюдавайте за събития на заключване.
Мониторингът на събития за заключване разкрива проблеми с паралелизма, влияещи върху производителността на приложението. Събитията за заключване: Безизходица показват кога SQL Server открити и разрешени ситуации на безизходица. Заключване: Верижните събития на безизходица показват процесите, участващи в безизходиците.
Графиките за безизходица предоставят визуални представяния на сценарии за безизходица. Когато възникне събитие за безизходица, колоната TextData съдържа XML, описващ безизходицата. Копирайте този XML и го отворете в SQL Server Management Studio, за да видите графичната диаграма на безизходицата, показваща кои процеси се блокират взаимно.
7.1.3 Намиране на липсващи индекси
Заснемане на работното натоварване за анализ на индекси чрез следните стъпки:
- Създайте нова следа, използвайки настройване шаблон.
- Конфигурирайте следата да се запазва във файл.
- Изпълнете проследяването по време на представителни периоди на натоварване.
- Съберете поне няколко часа активност.
- Спрете проследяването и запазете файла.
- Стартирайте съветника за настройка на двигателя на базата данни.
- Изберете файла за проследяване като източник на работно натоварване.
- Изпълнете анализа, за да получите препоръки за индекси.
Интеграцията с Database Engine Tuning Advisor автоматизира препоръките за индекси. Tuning Advisor анализира записаното работно натоварване и предлага индекси, които биха подобрили производителността. Прегледайте внимателно препоръките преди внедряване, като вземете предвид разходите за съхранение и поддръжка.
7.2 Отстраняване на неизправности в приложението
7.2.1 Отстраняване на грешки в приложенията
Проследяване на грешки в приложението с помощта на тази конфигурация:
- Създайте нова следа.
- Разширете Грешки и предупреждения в раздела „Избор на събития“.
- Изберете изключение, Съобщение за грешка на потребителя, и Внимание.
- Включи колони: Грешка, Текстови данни, Име на приложение, SPID.
- Филтриране по Име на приложение да се съсредоточите върху вашата кандидатура.
- Стартирайте проследяването и възпроизведете сценария на грешката.
- Прегледайте записаните събития за грешки за диагностична информация.
Проследяването на грешки разкрива подробности за изключенията, често скрити от приложенията. Колоната „Грешка“ съдържа SQL Server номера на грешки. Колоната TextData показва съобщенията за грешки и заявката, която е причинила грешката. Колоната „Тежест“ показва нивата на тежест на грешката.
Мониторингът на изключенията улавя проблеми по време на изпълнение, включително нарушения на ограниченията, грешки в разрешенията и събития на изтичане на времето. Съпоставете събитията за грешки с предходни събития на заявки, за да разберете какво е задействало изключенията.
7.2.2 Проследяване на комуникацията между приложение и база данни
Следете активността на приложенията, като следвате тези стъпки:
- Създайте нова следа, използвайки Standard шаблон.
- Кликнете Филтри на колоните.
- Изберете Име на приложение и въведете името на приложението си в като поле.
- По избор филтрирайте по Име на хост за изолиране на конкретни сървъри.
- Стартирайте проследяването по време на операциите на приложението.
- Прегледайте записаните събития, за да видите всички взаимодействия с базата данни.
Филтрирането по име на приложение изолира заявките от конкретни приложения. SQL Server Задава името на приложението от низовете за свързване, което улеснява проследяването на отделни приложения в среди с множество приложения. Проверете дали низът за свързване включва параметъра „Име на приложението“ за ефективно филтриране.
Проследяването на връзките показва жизнения цикъл на сесията, включително събития за влизане, изпълнение на заявки и излизане. Следете скоростта на създаване на връзки, за да идентифицирате проблеми с обединяването на връзки. Прекомерният отлив на връзки показва потенциални проблеми с конфигурацията на приложението.
7.2.3 Валидиране на поведението на приложението
Проверете очакваното поведение на приложението, използвайки анализ на проследяване. Заснемете всички операции с базата данни по време на бизнес транзакция и проверете дали правилните заявки се изпълняват в правилната последователност. Сравнете действително заснетите заявки с очакваното поведение, за да идентифицирате несъответствия.
Валидирането на параметри гарантира, че приложенията предават правилни стойности на съхранените процедури и параметризираните заявки. Проверете записания текст на заявката, за да проверите дали стойностите на параметрите отговарят на очакванията. Неправилните параметри често причиняват логически грешки, които се проявяват като неправилни бизнес резултати.
7.3 Одит на сигурността
7.3.1 Наблюдение на опитите за влизане
Конфигурирайте наблюдението на влизането, като използвате тези стъпки:
- Създайте нова следа.
- Разширете Одит на сигурността в раздела „Избор на събития“.
- Изберете Вход за одит, Изход от одита, и Входът за одит не бе успешен.
- Включи колони: Входно име, Име на хост, Име на приложение, Начален час.
- Стартирайте проследяването, за да наблюдавате активността по удостоверяване.
- Прегледайте неуспешните събития за влизане за потенциални проблеми със сигурността.
Успешните и неуспешните влизания осигуряват цялостно проследяване на удостоверяването. Събитията за одит на влизане записват успешни опити за удостоверяване с информация за самоличността на потребителя и източника. Събитията за одит на влизане с неуспешни данни показват неуспешни опити за влизане, които може да представляват атаки или проблеми с конфигурацията.
Проследяването на удостоверяването разкрива модели в достъпа до базата данни. Следете честотата на влизане, за да откриете необичайна активност. Многократните неуспешни опити за влизане, последвани от успешно влизане, може да показват компрометирани идентификационни данни. Неуспешните влизания от неочаквани местоположения изискват разследване.
7.3.2 Достъп до данни за проследяване и модификации
Следете достъпа до данни, използвайки тази конфигурация:
- Създайте нова следа.
- Разширете Одит на сигурността.
- Изберете Достъп до обекти от базата данни за одит.
- Включи колони: Име на обект, Входно име, Текстови данни, Име на базата данни.
- Филтриране по Име на обект за наблюдение на специфични чувствителни таблици.
- Стартирайте проследяването, за да уловите опитите за достъп.
Проследяването на SELECT, INSERT, UPDATE, DELETE осигурява цялостен одит на модификациите на данните. Заснемайте SQL:BatchCompleted събития с подходящи филтри за наблюдение на всички операции за достъп до данни. Филтрирайте по ObjectName или TextData, за да се фокусирате върху чувствителни таблици.
Достъпът до чувствителни данни изисква внимателно наблюдение, за да се гарантира спазването на политиките за сигурност. Създавайте следи специално за таблици, съдържащи лична информация, финансови данни или друга поверителна информация. Преглеждайте редовно моделите на достъп, за да идентифицирате неподходящ достъп до данни.
Откривайте подозрителна активност чрез анализ на модели на заявки в заснетите следи. Търсете необичайни заявки, които не съответстват на нормалното поведение на приложението. SELECT оператори без клауза WHERE, извличащи цели таблици, може да показват опити за извличане на данни.
Опитите за ескалация на привилегии се показват като грешки в разрешенията или опити за изпълнение на административни команди. Следете за заявки, които се опитват да осъществят достъп до системни таблици, да променят конфигурацията на сървъра или да създадат привилегировани акаунти. Филтрирайте за събития за грешки и прегледайте колоната TextData за подозрителна активност.
7.4 Планиране на капацитета и анализ на работното натоварване
Установете базови стойности, като заснемете представително натоварване по време на нормални операции. Изпълнявайте проследявания по време на типичното работно време, за да разберете стандартните модели на активност. Запазете тези проследявания като базови стойности на производителността за бъдещи сравнения.
Идентифицирането на пиковото натоварване разкрива кога системата ви е максимално натоварена. Заснемайте следи през различни периоди от време, включително работно време, прозорци за пакетна обработка и активност след работно време. Анализирайте броя на събитията и потреблението на ресурси, за да идентифицирате пикови периоди.
Моделите на използване на ресурсите се появяват от анализа на работното натоварване. Групирайте събитията по времеви интервали, за да видите разпределението на активността през целия ден. Изчислете агрегирани показатели за процесора, дисковия вход/изход и продължителността, за да определите количествено потреблението на ресурси. Използвайте тези данни, за да планирате надстройки на капацитета или да идентифицирате възможности за оптимизация.
8. Разширени SQL Server Техники за профилиране
8.1 Създаване на следи от страна на сървъра с T-SQL
8.1.1 Използване на sp_trace_create и свързани процедури
Създавайте следи от страна на сървъра програмно, използвайки съхранени процедури на T-SQL. Този подход позволява автоматизирано създаване и управление на следи, без да е необходимо SQL Server Графичният интерфейс на Profiler.
Дефинирайте проследяване от страна на сървъра, използвайки този примерен код:
- Декларирайте променливи за идентификатор на трасиране и път до файла.
- Извикайте sp_trace_create, за да създадете нова следа.
- Използвайте sp_trace_setevent, за да добавите събития и колони.
- По желание използвайте sp_trace_setfilter за конфигуриране на филтри.
- Обадете се на sp_trace_setstatus, за да стартирате проследяването.
Процедурата sp_trace_create инициализира нова дефиниция на трасиране. Указва пътя до изходния файл, максималния размер на файла и опциите за прехвърляне. Процедурата връща идентификатор на трасиране, използван в последващи извиквания на процедури за конфигуриране на трасирането.
Добавете събития, използвайки процедурата sp_trace_setevent. Укажете идентификатора на проследяване, идентификатора на събитие и идентификатора на колона за всяка комбинация събитие-колона, която искате да заснемете. Извикайте тази процедура няколко пъти, за да изградите пълни конфигурации на проследяване.
Конфигурирайте филтри с процедурата sp_trace_setfilter. Задайте идентификатора на проследяване, идентификатора на колона, логическия оператор, оператора за сравнение и стойността на филтъра. Няколко извиквания на филтри се комбинират, за да създадат сложни критерии за филтриране.
Стартирайте проследяването, като извикате sp_trace_setstatus със стойност на състоянието 1. Спрете проследяването, като извикате същата процедура със стойност на състоянието 0. Изтрийте дефинициите на проследяването, като извикате със стойност на състоянието 2.
8.1.2 Предимства на проследяванията от страна на сървъра
Намалените клиентски режийни разходи правят проследяванията от страна на сървъра идеални за производствен мониторинг. Сървърът на базата данни обработва всички операции по проследяване, без да изразходва ресурси на клиентската машина. Мрежовата честотна лента не се изразходва за предаване на събития към клиентско приложение.
Автоматизираното изпълнение позволява събиране на следи без наблюдение. Следите от страна на сървъра продължават да се изпълняват след създаването им, дори ако няма клиентска връзка. Планирайте създаването на следи чрез SQL Server Задачи на агенти за автоматизирано наблюдение.
По-ниско въздействие върху производителността е резултат от обработката от страна на сървъра. Събитията се записват директно на диска без допълнителна сериализация или мрежово предаване. Управлението на буфера оптимизира входно/изходните операции на диска за по-добра обща производителност.
8.2 Функционалност за повторно възпроизвеждане на трасиране
8.2.1 Заснемане на следи за повторно възпроизвеждане
Създайте трасирания, готови за повторно възпроизвеждане, като следвате тези стъпки:
- Създайте нова следа, използвайки TSQL_Replay шаблон.
- Проверете дали са избрани всички задължителни събития и колони.
- Конфигурирайте следата да се запазва във файл.
- Изпълнете проследяването по време на периода на натоварване, който искате да заснемете.
- Спрете проследяването и запазете файла.
Задължителните събития и колони осигуряват пълно възпроизвеждане на трасирането. Шаблонът TSQL_Replay включва всички необходими типове събития и колони с данни. Липсата на задължителни елементи предотвратява успешното възпроизвеждане, така че винаги използвайте този шаблон, когато записвате за целите на повторното възпроизвеждане.
8.2.2 Възпроизвеждане на трасирания
Възпроизведете заснетите работни натоварвания, като използвате тези стъпки:
- In SQL Server Профильор, щракнете досие -> Отворете -> Файл за проследяване.
- Изберете файла с трасиране, готов за повторно възпроизвеждане.
- Кликнете Replay -> СТАРТ .
- Свържете се с целевия сървър в диалоговия прозорец за повторно възпроизвеждане.
- Конфигурирайте опциите за повторно възпроизвеждане, включително реда и времето за повторно възпроизвеждане.
- Кликнете OK за да започне повторното възпроизвеждане.
- Следете напредъка на повторното възпроизвеждане в прозореца за състояние.
Опциите за конфигурация на повторното възпроизвеждане контролират как SQL Server Профилърът възпроизвежда заснетото работно натоварване. Възпроизвежда събитията в реда, в който са били заснети, за да се запазят времевите връзки. Конфигурирайте дали да се запази оригиналното време или да се възпроизведат събитията възможно най-бързо.
8.2.3 Случаи на употреба за повторно възпроизвеждане на проследяване
Тестването на натоварване се възползва от повторното възпроизвеждане на трасирания, като възпроизвежда реалистични натоварвания. Заснемайте трасирания на производственото натоварване и ги възпроизвеждайте спрямо тестови системи, за да валидирате производителността при реални модели на употреба. Настройте настройките за паралелизъм, за да симулирате различни нива на натоварване.
Валидирането на миграцията на средата гарантира, че новите системи могат да се справят със съществуващите натоварвания. Заснемайте следи от текущите производствени системи и ги възпроизвеждайте на нов хардуер или актуализиран. SQL Server версии. Сравнете показателите за производителност, за да проверите дали миграциите няма да влошат производителността.
Сценариите за тестване включват регресионно тестване след промени в кода, валидиране на промените в оптимизатора в SQL Server версии и хардуерни конфигурации за стрес тестване. Replay осигурява постоянни, повтарящи се натоварвания за надеждно тестване.
8.3 Интегриране на SQL Profiler с Database Engine Tuning Advisor
Създайте файлове с натоварвания за Database Engine Tuning Advisor, като заснемате следи с подходящи събития. Използвайте шаблона за настройка, за да гарантирате, че цялата необходима информация е заснета за анализ.
Стартирайте Database Engine Tuning Advisor и изберете файла с трасиране като източник на работно натоварване. Advisor анализира заснетите заявки и препоръчва индекси, индексирани изгледи или стратегии за разделяне, които биха подобрили производителността.
Работният процес за оптимизиране на производителността интегрира заснемането на трасиране с анализ на настройването. Заснемайте представителни натоварвания по време на нормални операции, анализирайте с Tuning Advisor, преглеждайте препоръки, тествайте предложените промени в разработката и накрая внедрете одобрените промени в продукцията.
8.4 Автоматизиране на събирането на следи
Планиране на проследявания с помощта на SQL Server Агентски задачи за автоматично събиране на данни. Създайте T-SQL скриптове, които дефинират следи от страна на сървъра, използвайки процедури sp_trace. Планирайте изпълнението на тези скриптове в определени часове или интервали.
Автоматизацията на PowerShell позволява сложни сценарии за управление на проследяване. Пишете PowerShell скриптове, които създават проследяване, следят състоянието му и обработват събраните данни. Планирайте PowerShell скриптове чрез Task Scheduler или SQL Server Агент.
SQL Server Задачите на агентите осигуряват надеждно планирано изпълнение. Създавайте задачи, които стартират проследявания в началото на периодите на наблюдение и спират проследяванията след завършване на събирането на данни. Конфигурирайте известия за задачи, за да предупреждавате администраторите за неуспехи.
8.5 Програмен анализ на следи
Четете файлове с трасиране с T-SQL, използвайки функцията fn_trace_gettable. Тази функция, която използва таблични стойности, анализира файловете с трасиране и връща данни за събития като резултатен набор. Извършете заявка към тези данни, използвайки стандартния T-SQL, за да извършите персонализиран анализ.
Персонализираните скриптове за анализ позволяват автоматизирана обработка на проследявания. Пишете заявки, които изчисляват обобщени статистически данни, идентифицират модели или сигнализират за аномалии. Планирайте тези скриптове да се изпълняват автоматично след завършване на събирането на проследявания.
Генерирайте отчети чрез заявки към данни за проследяване, съхранени в таблици. Създавайте изгледи, които обобщават събития по период от време, потребител или приложение. Изграждайте решения за отчети, които предоставят редовна информация за активността и производителността на базата данни.
9. SQL Server Най-добри практики за профилиране
9.1 Най-добри практики за ефективност
9.1.1 Минимизиране на разходите за проследяване
Изберете само необходимите събития, за да намалите натоварването при проследяване. Всеки допълнителен тип събитие увеличава количеството данни, което системата за проследяване трябва да обработи. Прегледайте целите си за мониторинг и включете само събития, пряко свързани с тези цели.
Използвайте филтрите ефективно, за да предотвратите събирането на неподходящи данни. Филтрирайте по име на база данни, за да изключите системните бази данни. Филтрирайте по продължителност, за да събирате само бавни заявки. Филтрирайте по име на приложение, за да се фокусирате върху конкретни приложения. Правилното филтриране драстично намалява натоварването от проследяване.
Съображенията от страна на сървъра спрямо тези от страна на клиента влияят върху производителността. Следите от страна на сървъра записват данни директно на диска с минимални режийни разходи. Следите от страна на клиента предават събития по мрежата към интерфейса на Profiler, добавяйки латентност и консумация на честотна лента. Използвайте следи от страна на сървъра за наблюдение на производството.
9.1.2 Оптимизиране на съхранението на следи
Управлението на размера на файловете предотвратява изчерпване на дисковото пространство. Задайте максимални ограничения за размер на файловете, подходящи за наличното място за съхранение. Активирайте прехвърлянето на файлове, за да създавате множество файлове, вместо да увеличавате един файл за неопределено време. Следете дисковото пространство по време на изпълнение на проследяването.
Съхранението на таблици спрямо файловото съхранение включва различни компромиси по отношение на производителността. Файловото съхранение предлага по-добра производителност по време на изпълнение на проследяване, защото заобикаля механизма за съхранение. Табличното съхранение позволява T-SQL заявки към данни от проследяване, но добавя разходи за запис. Изберете типа съхранение въз основа на вашите изисквания за анализ.
9.2 Най-добри практики за сигурност
Управлението на разрешенията контролира кой може да създава и изпълнява проследявания. Предоставяйте разрешение ALTER TRACE само на доверени потребители, които се нуждаят от възможности за проследяване. Членовете на ролята sysadmin имат неограничен достъп до проследяване. Преглеждайте и одитирайте разрешенията за проследяване редовно.
Защитата на чувствителни данни изисква внимателно конфигуриране на проследяването. Избягвайте заснемането на пълния текст на заявката, когато работите с чувствителни данни. Помислете за филтриране или криптиране на изхода на проследяването, съдържащ поверителна информация. Съхранявайте файловете с проследяване на сигурни места с подходящ контрол на достъпа.
Защитата на файловете за проследяване предотвратява неоторизиран достъп до заснетите данни. Задайте разрешения за файлове, за да ограничите достъпа до файловете за проследяване. Шифровайте файловете за проследяване, ако съдържат чувствителна информация. Изтрийте файловете за проследяване след приключване на анализа, за да сведете до минимум риска от излагане.
9.3 Съображения, свързани с производствената среда
9.3.1 Кога да използвате Profiler в продукцията
Оценката на риска определя кога SQL Server Profiler е подходящ за производствена употреба. Profiler въвежда измерими режийни разходи, които се увеличават с обхвата на проследяване. Оценете дали диагностичната стойност оправдава въздействието върху производителността, преди да стартирате производствени проследявания.
Конфигурациите с минимално въздействие позволяват по-безопасно проследяване на производството. Използвайте високоселективни филтри, за да улавяте само критични събития. Задайте прагове за продължителност, за да игнорирате бързо изпълняващите се заявки. Ограничете продължителността на проследяването до кратки периоди по време на сесии за отстраняване на неизправности. Конфигурирайте проследявания от страна на сървъра, за да намалите натоварването на клиента.
9.3.2 Алтернативи за мониторинг на производството
Разширените събития осигуряват по-ниски разходи за мониторинг на производството. Тази модерна технология предлага по-добра производителност и гъвкавост от SQL Server Profiler. Мигрирайте решенията за мониторинг към Extended Events за дългосрочна производствена употреба.
Query Store автоматично събира данни за производителността на заявките, без ръчно конфигуриране на проследяването. Активирайте Query Store в производствени бази данни, за да проследявате статистиката за изпълнението на заявките във времето. Query Store предоставя повечето възможности за наблюдение на производителността без допълнителните разходи за проследяване.
Динамичните изгледи за управление предлагат леко наблюдение за специфични сценарии. DMV предоставят информация за текущото състояние, без да записват исторически събития. Периодично запитвайте DMV, за да наблюдавате състоянието на сървъра, без да е необходимо непрекъснато проследяване.
9.4 Най-добри практики за управление на следи
Правилата за именуване гарантират, че файловете с трасиране са разпознаваеми и организирани. В имената на файловете с трасиране включете дата, час, име на сървъра и предназначение. Използвайте последователни модели на именуване във всички трасирания, за да улесните управлението и анализа.
Документацията записва конфигурацията и целта на проследяването. Документирайте какви събития сте заснели, защо сте създали проследяването и какво сте научили от анализа. Поддържайте дневник на проследяванията, изпълнени в производствени системи, за целите на съответствието и отстраняването на неизправности.
Политиките за съхранение предотвратяват прекомерното натрупване на файлове за проследяване. Определете колко дълго трябва да се съхраняват файловете за проследяване въз основа на бизнес изискванията и капацитета за съхранение. Автоматизирайте изтриването на стари файлове за проследяване, за да освободите дисково пространство. Архивирайте важните следи в дългосрочно хранилище преди изтриване.
9.5 често срещани грешки, които трябва да избягвате
Прекомерното проследяване води до прекомерно натоварване на производителността и генерира неуправляеми обеми данни. Избягвайте да записвате всички събития без филтри. Започнете с тесни, фокусирани проследявания и разширявайте обхвата само когато е необходимо. Повече данни не винаги са по-добри за ефективно отстраняване на неизправности.
Забравянето за спиране на проследяванията води до прахосване на ресурси и запълване на дисково пространство. Винаги спирайте проследяванията, когато мониторингът е завършен. Задайте ограничения за продължителност на проследяването или максимален размер на файловете, за да предотвратите неконтролируеми проследявания. Редовно наблюдавайте изпълняващите се проследявания и спирайте неактивните или ненужните проследявания.
Пренебрегването на оптимизацията на филтрите води до лоша производителност и труден анализ. Инвестирайте време в конфигурирането на ефективни филтри, преди да стартирате проследявания. Тествайте филтрите в среди за разработка, за да се уверите, че те улавят очакваните данни. Прегледайте и прецизирайте филтрите въз основа на заснетите резултати.
10. Алтернативи на SQL Server Профилър през 2025 г.
10.1 Разширени събития: Модерната замяна
10.1.1 Какво представляват разширените събития
Разширените събития представляват SQL Serverсъвременната архитектура за обработка на събития. Microsoft е проектирал тази система специално за справяне с SQL Server Ограниченията на Profiler включват режийни разходи за производителност и гъвкавост на конфигурацията. Extended Events предоставя цялостни възможности за наблюдение със значително по-ниска консумация на ресурси.
Архитектурата и предимствата отличават разширените събития от по-старите технологии за проследяване. Механизмът за събития се интегрира дълбоко в SQL ServerОсновната архитектура на , която улавя събития с минимални разходи. Асинхронното буфериране на събития предотвратява блокирането на операциите с базата данни от наблюдение. Гъвкавите опции за насочване позволяват разнообразни конфигурации на изхода.
Предимствата в производителността правят Extended Events идеални за мониторинг на производството. Сравнителните тестове показват, че Extended Events въвеждат 50-90% по-малко режийни разходи от еквивалентните. SQL Server Проследявания на профилера. Архитектурата се мащабира по-добре с големи обеми събития и поддържа повече едновременни сесии за наблюдение.
10.1.2 Мигриране от Profiler към Extended Events
Картографирането на събитията се превежда SQL Server Събития на Profiler в еквиваленти на разширени събития. Повечето събития на Profiler имат съответстващи еквиваленти на разширени събития. Microsoft предоставя документация, която съпоставя често срещани събития между двете системи.
Създаването на сесия в Extended Events изисква изучаване на нов синтаксис и концепции. Дефинирайте сесии на събития, като използвате T-SQL CREATE EVENT SESSION оператори или графичния интерфейс Extended Events в Management Studio. Сесиите определят кои събития да се заснемат, какви данни да се събират и къде да се съхраняват резултатите.
10.1.3 Разширени инструменти и интерфейси за събития
Потребителският интерфейс на SSMS Extended Events предоставя графично управление на сесиите. Достъпвайте до Extended Events чрез папката Management в Object Explorer. Създавайте, променяйте и наблюдавайте сесии на събития чрез интерфейса. Преглеждайте заснетите данни в графични формати, включително решетки и диаграми.
Управлението на сесии чрез T-SQL позволява програмен контрол на разширени събития. Напишете CREATE EVENT SESSION изрази, за да дефинирате сесии в код. Използвайте ALTER EVENT SESSION, за да промените работещите сесии. Премахнете сесии с DROP EVENT SESSION. Този подход улеснява автоматизираните решения за наблюдение.
10.2 SQL Server Магазин за заявки
Query Store автоматично събира данни за производителността на заявките за бази данни, където е активирана. Тази функция проследява плановете на заявките, статистиката за изпълнението и показателите за производителност във времето без ръчно конфигуриране на проследяването. Query Store поддържа исторически данни, което позволява анализ на тенденции и откриване на регресия.
Мониторингът на производителността на заявките в реално време чрез Query Store разкрива текущото поведение на системата. Преглеждайте наскоро изпълнените заявки, техните планове за изпълнение и потреблението на ресурси. Идентифицирайте заявки с нарастваща продължителност или променящи се планове за изпълнение, които може да показват проблеми.
Анализът на историческите заявки позволява сравнение между различни периоди от време. Query Store съхранява данни за производителността за конфигурируеми периоди на съхранение. Сравнете текущата производителност с историческите базови стойности, за да идентифицирате регресии. Анализирайте тенденциите в производителността, за да предвидите бъдещите нужди от капацитет.
Използвайте Query Store, когато имате нужда от автоматично, постоянно наблюдение на производителността. Активирайте Query Store в производствени бази данни, за да проследявате непрекъснато поведението на заявките. Query Store допълва отстраняването на неизправности, базирано на проследяване, като предоставя исторически контекст за проблеми с производителността.
10.3 Динамични изгледи за управление (DMV)
Олекотеният мониторинг чрез DMVs предоставя информация за текущото състояние, без да записва исторически събития. DMVs разкриват вътрешни SQL Server статистика и метаданни чрез изгледи с възможност за заявки. Заявки към DMV, използващи стандартни T-SQL SELECT оператори.
Често срещаните DMV заявки за наблюдение на производителността включват sys.dm_exec_query_stats за статистика за производителността на заявките, sys.dm_exec_requests за текущо изпълнявани заявки и sys.dm_os_wait_stats за статистика за чакане. Тези изгледи предоставят информация за състоянието и активността на сървъра в даден момент.
DMV допълват мониторинга, базиран на проследяване, като предоставят показатели в реално време. Използвайте DMV за бързи проверки на състоянието и анализ на текущото състояние. Комбинирайте заявки от DMV с данни от проследяване за цялостни подходи за отстраняване на неизправности.
10.4 Инструменти за мониторинг от трети страни
Търговските алтернативи предлагат подобрени възможности за мониторинг отвъд SQL ServerВградените инструменти на . Продукти от доставчици като SolarWinds, Redgate и Quest предоставят цялостни функции за наблюдение, предупреждение и анализ. Тези инструменти често комбинират множество източници на данни, включително трасирания, DMV и броячи на производителността.
Сравнението на характеристиките разкрива силните страни на различните подходи за мониторинг. Инструментите на трети страни предоставят превъзходни потребителски интерфейси, автоматизирани предупреждения и исторически тенденции. SQL ServerВградените инструменти на предлагат нулеви допълнителни разходи и по-дълбока интеграция. Оценете инструментите въз основа на вашите специфични изисквания и бюджет.
10.5 Избор на правилния инструмент за вашите нужди
Матрицата на решенията помага за избора на подходящи инструменти за мониторинг. За отстраняване на неизправности ad-hoc, SQL Server Profiler остава достъпен и ефективен. За мониторинг на производството, Extended Events или Query Store осигуряват по-добра производителност. За цялостен корпоративен мониторинг, решенията на трети страни предлагат най-много функции.
Критериите за избор на инструменти включват разходи за производителност, лекота на използване, изисквания за съхранение на данни и бюджетни ограничения. Вземете предвид експертния опит на вашия екип, когато избирате инструменти. Познатите инструменти позволяват по-бързо отстраняване на проблеми, дори ако по-новите алтернативи предлагат по-добри функции.
Комбинирайте множество инструменти за цялостни стратегии за мониторинг. Използвайте Query Store за непрекъснато проследяване на производителността, Extended Events за разследване на специфични проблеми и DMVs за проверки на състоянието в реално време. Този многопластов подход осигурява надежден мониторинг без прекомерни режийни разходи.
11. Отстраняване на проблеми SQL Server Проблеми с профилера
11.1 Често срещани проблеми с връзката
Неуспехите в удостоверяването предотвратяват SQL Server Профилърът да се свързва с целевите сървъри. Проверете дали използвате правилните идентификационни данни за избрания метод за удостоверяване. Удостоверяването на Windows изисква вашият Windows акаунт да има подходящи SQL Server разрешения. SQL Server Удостоверяването изисква валидни SQL идентификационни данни за вход.
Проблеми с мрежовата свързаност се проявяват като грешки при изчакване или прекъсвания на връзката. Проверете SQL Server позволява отдалечени връзки в конфигурацията си. Проверете настройките на защитната стена, за да разрешите трафика на SQL ServerПортът на 's. Тествайте основната свързаност, използвайки ping и telnet, преди да отстраните проблеми, специфични за Profiler.
11.2 Проблеми с производителността на Profiler
Бавното изпълнение на проследяването показва прекомерно натоварване от конфигурацията на проследяването. Прегледайте избраните събития и елиминирайте ненужните. Добавете филтри, за да намалите обема на заснетите събития. Помислете за използване на проследявания от страна на сървъра, за да намалите натоварването от страна на клиента.
Високата консумация на ресурси засяга и двете SQL Server и клиента Profiler. Следете процесора и паметта на сървъра по време на изпълнение на проследяването. Ако ресурсите на сървъра са ограничени, увеличете селективността на филтъра или намалете продължителността на заснемане. Проблемите с клиентските ресурси изискват затваряне на други приложения или надграждане на клиентския хардуер.
11.3 Проблеми с файловете и таблиците за проследяване
Повредените файлове с трасиране предотвратяват отварянето в SQL Server Профильор. Повредата обикновено е резултат от неправилно прекратяване на проследяването или грешки на диска. Опитайте да отворите файла в текстов редактор, за да проверите дали не е напълно повреден. Понякога частични данни могат да бъдат възстановени чрез импортиране в таблица с помощта на fn_trace_gettable.
Проблеми с достъпа до таблица възникват при опит за зареждане на следи от SQL Server таблици. Проверете дали имате разрешение SELECT за таблицата за проследяване. Проверете дали таблицата не е била премахната или преименувана. Уверете се, че се свързвате с правилния сървър и база данни, съдържащи таблицата за проследяване.
11.4 Липсващи събития или непълни данни
Неправилната конфигурация на филтрите води до пропускане на очаквани събития от проследяванията. Прегледайте внимателно критериите за филтриране, за да се уверите, че не изключват желаните събития. Тествайте филтрите, като стартирате кратки проследявания и проверите дали заснетите данни отговарят на очакванията. Премахнете филтрите временно, за да определите дали те причиняват проблема.
Препълване на буфера възниква, когато SQL Server Не може да записва данни за проследяване достатъчно бързо, за да се справи с генерирането на събития. Това обикновено се случва с нефилтрирани проследявания по време на висока активност. Симптомите включват липсващи събития или предупреждения „Събитията не бяха заснети“. Решете проблема, като добавите филтри за намаляване на обема на събитията или увеличите производителността на дисковия входно/изходен режим за местоположението на файла с проследяване.
11.5 Сривове и грешки на Profiler
Често срещаните съобщения за грешки включват „Не може да се създаде проследяване“, което показва проблеми с разрешенията или ограничения на ресурсите. Съобщенията „Проследяването е спряно“ предполагат грешки при проследяване от страна на сървъра, вероятно поради условия на препълване на диска. Грешките „Невалидно определение на проследяване“ показват проблеми с конфигурацията.
Стратегиите за разрешаване зависят от конкретната грешка. Грешките в разрешенията изискват предоставяне на разрешение ALTER TRACE на потребителя. Грешките в ресурсите изискват освободено дисково пространство или памет. Грешките в конфигурацията изискват преглед и коригиране на настройките за проследяване. Рестартирайте. SQL Server Профилър, ако престане да отговаря.
12. Практически SQL Server Сценарии и примери за профилиране
12.1 Сценарий 1: Идентифициране на най-бавните заявки във вашата база данни
Това ръководство демонстрира заснемане и анализиране на бавни заявки.
Конфигурирайте проследяването, като следвате тези стъпки:
- Стартиране SQL Server Profiler и се свържете с целевия си сървър.
- Кликнете досие -> Нова следа.
- Въведете „Анализ на бавни заявки“ в Име на следата поле.
- Изберете TSQL от Използвайте шаблона меню.
- Кликнете Избор на събития таб.
- Кликнете Филтри на колоните.
- Изберете Продължителност и въведете 1000000 в По-голямо или равно.
- Изберете Име на базата данни и въведете името на вашата база данни в като.
- Кликнете OK за да затворите филтрите.
- Разреши Запазване във файл и посочете път до файла.
- Кликнете бягане за да започнете да снимате.
Изпълнете проследяването по време на пиковите работни часове за поне 30 минути, за да обхванете представително натоварване. Спрете проследяването след събиране на достатъчно данни.
Анализирайте резултатите, следвайки този процес:
- Кликнете върху менюто Продължителност заглавка на колоната за сортиране по време на изпълнение.
- Определете 10-те най-дълго изпълнявани заявки.
- За всяко запитване, разгледайте Текстови данни колона.
- Копирайте текста на заявката и го поставете в Management Studio.
- Използвайте Показване на прогнозен план за изпълнение да анализирате заявката.
- Търсете сканирания на таблици, липсващи индекси или неефективни съединения.
- Оценки на посетители процесор, Чете, и Пише колони за модели на потребление на ресурси.
12.2 Сценарий 2: Отстраняване на грешки при проблем с безизходица
Този пример показва как да се улавят и анализират безизходици.
Конфигурирайте наблюдението на блокиране, като използвате тези стъпки:
- Създайте нова следа с име „Разследване на безизходица“.
- Кликнете Избор на събития таб.
- Кликнете Показване на всички събития.
- Разширете Брави категория.
- Изберете Заключване: Безизходица.
- Изберете Заключване: Верига с безизходно заключване.
- Разширете Грешки и предупреждения категория.
- Изберете Отчет за блокиран процес.
- Уверете се, Текстови данни колоната е избрана.
- Кликнете бягане за да започнете наблюдение.
Когато възникне безизходица по време на изпълнение на проследяване, събитието Lock:Deadlock се появява в мрежата на проследяването.
Интерпретирайте информацията за безизходица, като следвате тези стъпки:
- Кликнете върху менюто Заключване: Безизходица ред на събитието.
- Виж Текстови данни колона в долния панел.
- Копирайте XML съдържанието от TextData.
- Отворете Management Studio и създайте нов прозорец за заявки.
- Поставете XML файла в прозореца на заявката.
- Запазете файла с разширение .xdl.
- Отворете .xdl файла в Management Studio, за да видите графиката на безизходицата.
- Графиката показва участващите процеси, заключените ресурси и избраната жертва.
- Прегледайте заявките от двата процеса, за да разберете конфликта.
Стъпките за разрешаване обикновено включват пренареждане на операциите в кода на приложението за достъп до ресурси в последователен ред, намаляване на обхвата на транзакциите или внедряване на подходящи подсказки за заключване.
12.3 Сценарий 3: Проследяване на всички заявки от конкретно приложение
Този сценарий демонстрира наблюдение на заявки, специфични за приложението.
Конфигурирайте специфично за приложението проследяване, като използвате тези стъпки:
- Създайте нова следа с име „Проследяване на заявки за приложение“.
- Изберете елемента от менюто Standard шаблон.
- Кликнете Избор на събития таб.
- Кликнете Филтри на колоните.
- Изберете Име на приложение.
- Въведете името на приложението си в като поле.
- Ако приложението ви използва пулиране на връзки, може да се нуждаете от съвпадение със заместващи символи.
- Кликнете OK за да приложите филтъра.
- Разреши Запазване в таблицата за по-лесно запитване.
- Кликнете бягане за да започнете да снимате.
Анализът на шаблоните на заявките разкрива как вашето приложение взаимодейства с SQL Server:
- След събиране на данни, спрете проследяването.
- Отворете Management Studio и се свържете със сървъра с таблицата за проследяване.
- Извършете заявка към таблицата с трасирания, за да анализирате модели.
- Пребройте заявките по тип, за да видите съчетанието от операции.
- Идентифицирайте най-често изпълняваните заявки.
- Потърсете заявки, които могат да бъдат кеширани или оптимизирани.
- Проверете за повтарящи се идентични заявки, показващи липсващо обединяване на връзки.
12.4 Сценарий 4: Одит на достъпа до данни за съответствие
Този пример показва създаването на журнал за одит на сигурността.
Конфигурирайте одита на сигурността, като следвате тези стъпки:
- Създайте нова следа с име „Пътека за одит на сигурността“.
- Кликнете Избор на събития таб.
- Кликнете Показване на всички събития.
- Разширете Одит на сигурността категория.
- Изберете Вход за одит, Изход от одита, Входът за одит не бе успешен.
- Изберете Достъп до обекти от базата данни за одит.
- Разширете TSQL категория.
- Изберете SQL:BatchCompleted.
- Кликнете Филтри на колоните.
- Филтриране по Име на обект за наблюдение на специфични чувствителни таблици.
- Разреши Запазване в таблицата за дългосрочно запазване.
- Активиране на проследяване от страна на сървъра за операция без наблюдение.
- Кликнете бягане да започне одит.
Генериране на одитни отчети чрез заявка към таблицата за проследяване:
- Създавайте заявки, обобщаващи достъпа по потребител и период от време.
- Идентифицирайте необичайни модели на достъп или активност след работно време.
- Документирайте неуспешните опити за влизане за проверка на сигурността.
- Експортирайте одитни данни към системи за отчитане за документиране на съответствието.
- Архивирайте завършените следи от одит съгласно правилата за съхранение.
12.5 Сценарий 5: Заснемане на работно натоварване за тестване на производителността
Този сценарий демонстрира заснемане на работното натоварване за целите на тестването.
Създайте трасирания, готови за повторно възпроизвеждане, като използвате тези стъпки:
- Създайте нова следа с име „Заснемане на работното натоварване“.
- Изберете TSQL_Replay от падащото меню на шаблона.
- Този шаблон включва всички задължителни събития и колони за повторно възпроизвеждане.
- Кликнете Избор на събития таб.
- Приложете филтри, ако искате да заснемете конкретни сегменти от работното натоварване.
- Разреши Запазване във файл.
- Посочете път до файла с достатъчно дисково пространство.
- Задайте подходящи ограничения за размера на файла и активирайте превключване между тях.
- Кликнете бягане за да започнете да снимате.
Заснемане по време на представителни бизнес операции. За цялостно заснемане на работното натоварване, стартирайте проследяването в продължение на няколко часа, обхващайки различни модели на активност. Спрете проследяването, след като съберете достатъчно данни.
Анализът на работното натоварване разкрива модели на поведение на системата:
- Отворете заснетия файл с трасиране в SQL Server Профилатор.
- Прегледайте разпределението на събитията по вид и време.
- Изчислете агрегирани показатели за потребление на ресурси.
- Идентифицирайте периодите на пикова активност и затрудненията в ресурсите.
- Използвайте проследяването за анализ на Database Engine Tuning Advisor.
- Повторете проследяването спрямо тестовите системи, за да валидирате промените.
13. Откриване на корупция в базата данни с SQL Server Profiler
13.1 Използване SQL Server Профильор за ранни предупредителни знаци за корупция
Повредата на базата данни представлява една от най-сериозните заплахи за целостта на данните и надеждността на системата. SQL Server Profiler не е специализиран инструмент за откриване на корупция, той може да улови критични предупредителни знаци, които показват потенциални проблеми с корупцията, изискващи незабавно разследване.
13.2 Събития, водещи до критични грешки, показващи потенциална повреда
- Грешки със степен на тежест 24 (823, 824, 825): Хардуерни и медийни повреди.
- Грешка 605: Неуспешни опити за извличане на страница
- Грешка 8928 и 8929: Повреда на обекта
13.3 Подозрителни поведения на базата данни и модели на предупреждения
- Повтарящи се времеви ограничения за заявки за конкретни обекти
- Нарушения на достъпа и сривове на приложенията
- Необичайно групиране на грешки
13.4 Изпълняване на DBCC CHECKDB въз основа на констатациите на Profiler
If SQL Server Ако Profiler открие подозрителни повреди, можете да използвате DBCC CHECKDB, за да извършите пълна проверка на базата данни. След това извършете поправка, ако повреди бъдат потвърдени. Написали сме подробно ръководство как да се изпълнят тези задачи.
Ако DBCC CHECKDB не успее да поправи базата данни, повредите са сериозни. В такъв случай можете да прибегнете до инструмент за възстановяване на SQL от трета страна.
14. Често задавани въпроси
В: Да SQL Server Профилърът все още се поддържа в SQL Server 2022?
О: Да, SQL Server Profiler все още е включен в SQL Server 2022 и SQL Server Management Studio, въпреки че е остаряло от SQL Server 2016 г. Microsoft продължава да доставя инструмента с текущите версии, но препоръчва мигриране към Extended Events за нови реализации на мониторинг. Инструментът остава функционален и широко използван за отстраняване на неизправности и ad-hoc анализ.
Въпрос: Каква е разликата между SQL Server Профилер и SQL проследяване?
A: SQL Server Profiler е инструмент с графичен потребителски интерфейс, който се свързва с двигателя за проследяване SQL, работещ в SQL ServerSQL Trace е основната технология, която всъщност улавя събития. Можете да създавате трасирания, използвайки интерфейса на Profiler или директно чрез T-SQL съхранени процедури, като sp_trace_create. Profiler осигурява по-лесна конфигурация, докато T-SQL трасиращите елементи предлагат повече възможности за автоматизация.
В: Колко режийни разходи за производителност SQL Server Добавяне на профилер?
A: Въздействието върху производителността варира в зависимост от конфигурацията на проследяването. Добре филтрирано проследяване, улавящо само специфични събития, може да добави 1-5% режийни разходи. Лошо конфигурираните проследявания без филтри могат да добавят 20-50% или повече режийни разходи, особено в натоварени системи. Следите от страна на сървъра имат по-малко въздействие от следите от страна на клиента. Винаги използвайте филтри, за да намалите обема на събитията и първо тествайте проследяванията в непроизводствени среди.
В: Мога ли да тичам SQL Server Профайлър на производствени сървъри?
A: Можете да бягате SQL Server Профилър на производствени сървъри, но бъдете внимателни. Използвайте силно селективни филтри, ограничете продължителността на проследяването и предпочитайте проследявания от страна на сървъра, за да сведете до минимум въздействието. Изпълнявайте производствени проследявания по време на периоди с ниска активност, когато е възможно. За непрекъснато наблюдение на производството, помислете за Extended Events или Query Store, тъй като те предлагат по-ниски режийни разходи.
В: Какви разрешения са ми необходими, за да използвам SQL Server Профайлър?
A: Необходимо ви е разрешение ALTER TRACE, за да създавате и изпълнявате проследявания. Членовете на фиксираната сървърна роля sysadmin автоматично получават това разрешение. За потребители, които не са sysadmin, изрично предоставете разрешение ALTER TRACE. Освен това се нуждаете от подходящи разрешения, за да запазвате данни за проследяване във файлове или таблици въз основа на вашата конфигурация.
В: Защо не мога да видя всички събития в моята следа?
A: Липсата на събития обикновено е резултат от прекалено рестриктивни филтри или препълване на буфера. Прегледайте конфигурацията на филтъра си, за да се уверите, че не изключва желаните събития. Препълване на буфера възниква, когато SQL Server Не мога да записвам събития достатъчно бързо, обикновено с нефилтрирани следи на натоварени системи. Добавете филтри, за да намалите обема на събитията или да увеличите производителността на дисковия входно/изход. Проверете за съобщения за грешки, показващи, че събитията не са били заснети.
В: Как да събера информация за безизходица с SQL Server Профайлър?
A: Създайте проследяване, което включва събитията Lock:Deadlock и Lock:Deadlock Chain от категорията Locks. Уверете се, че е избрана колоната TextData, тъй като тя съдържа XML файла на графиката на блокирането. Когато възникне блокиране, копирайте XML файла от колоната TextData, запазете го с разширение .xdl и го отворете в SQL Server Management Studio, за да видите графичната диаграма на безизходицата.
В: Каква е разликата между запазването на следи във файлове и в таблици?
A: Файловете предлагат по-добра производителност по време на изпълнение на проследяване, защото заобикалят SQL Server енджин за съхранение. Файловите трасирания записват данни директно на диска с минимални режийни разходи. Таблиците трасирания записват през енджин за съхранение, добавяйки режийни разходи, но позволявайки незабавни T-SQL заявки към данните от трасирания. Използвайте файлове за сценарии, чувствителни към производителността, и таблици, когато трябва да заявите данни веднага по време или след заснемането.
В: Мога ли да автоматизирам SQL Server Събиране на следи от профилер?
A: Да, автоматизирайте събирането на следи, използвайки следи от страна на сървъра, създадени със съхранени процедури на T-SQL. Напишете скриптове, използвайки sp_trace_create и свързани процедури, след което ги планирайте да се изпълняват. SQL Server Задачи на агенти. Този подход позволява събиране на следи без наблюдение по определени графици. PowerShell скриптовете предоставят друга опция за автоматизация за по-сложни сценарии.
В: Колко дълго трябва да изпълнявам проследяване?
A: Продължителността на проследяването зависи от вашите цели. За отстраняване на специфични проблеми, стартирайте проследявания, докато възпроизвеждате проблема, обикновено 5-30 минути. За анализ на производителността, заснемайте поне един час по време на пикови периоди на активност. За анализ на работното натоварване или планиране на капацитета, събирайте няколко часа в различни периоди от време. Винаги спирайте проследяванията, когато мониторингът е завършен, за да освободите ресурси.
В: Какво трябва да направя, ако файлът ми с трасиране стане твърде голям?
A: Активирайте прехвърлянето на файлове в свойствата на трасирането, за да създадете множество по-малки файлове вместо един голям файл. Задайте максимален размер на файла, подходящ за вашето дисково пространство и нужди от анализ. Използвайте филтри, за да намалите обема на заснетите събития. За големи трасирания, помислете за анализ на данните в сегменти, вместо да зареждате цялото трасиране наведнъж. Архивирайте или изтривайте редовно стари файлове с трасирания, за да управлявате дисковото пространство.
В: Как да намеря заявките, които причиняват високо натоварване на процесора?
A: Създайте проследяване със събития SQL:BatchCompleted и RPC:Completed. Включете колоните CPU, Duration и TextData. Филтрирайте по Duration, за да обхванете само заявки, надвишаващи праг, например 1000 милисекунди. След събиране на данни, сортирайте по колоната CPU в низходящ ред. Заявките в горната част консумират най-много процесорно време. Разгледайте тези заявки за възможности за оптимизация, като липсващи индекси или неефективна логика.
В: Може SQL Server Планове за изпълнение на заявки за заснемане на профилер?
A: SQL Server Profiler може да събира информация за плана за изпълнение чрез събитията Showplan XML в категорията „Производителност“. Изберете събития Showplan XML или Showplan XML Statistics Profile, за да събирате пълни планове за изпълнение. Колоната TextData съдържа XML данни за плана. Въпреки това, за рутинен анализ на плана за изпълнение, SQL Server Функциите за графичен план за изпълнение на Management Studio или Query Store предоставят по-лесни алтернативи.
В: Кой е най-добрият шаблон за начало за общо наблюдение?
A: Стандартният шаблон предоставя добра отправна точка за общо наблюдение. Той включва често срещани събития за изпълнение на заявки, извиквания на съхранени процедури и проследяване на грешки с балансирани режийни разходи. За наблюдение с по-малко въздействие, фокусирано върху производителността на заявките, използвайте шаблона TSQL. Персонализирайте шаблоните въз основа на вашите специфични нужди, като добавите филтри и коригирате избора на събития, след като разберете основите.
В: Как да проследя само конкретно приложение или потребител?
A: Използвайте филтри по колони, за да изолирате конкретни приложения или потребители. За приложения филтрирайте по колона ApplicationName, като използвате името, посочено във вашия низ за свързване. За потребители филтрирайте по колона LoginName с SQL Server вход или име на акаунт в Windows. Комбинирайте няколко филтъра, за да стесните фокуса допълнително, например филтриране по ApplicationName (Име на приложение) и DatabaseName (Име на база данни), за да наблюдавате активността на едно приложение в конкретна база данни.
15. Заключение и следващи стъпки
15.1 Основни изводи
SQL Server Profiler остава ценен инструмент за отстраняване на проблеми с ad-hoc бази данни, въпреки остарелия си статус. Лесният интерфейс и цялостното заснемане на събития го правят идеален за бързи диагностични сесии, когато се нуждаете от незабавни резултати. Използвайте Profiler за отстраняване на специфични проблеми, анализ на поведението на приложенията и одит на сигурността.
Най-добрите практики включват агресивно използване на филтри за минимизиране на въздействието върху производителността, предпочитане на проследявания от страна на сървъра за производствени среди и ограничаване на продължителността на проследяването до необходимите периоди. Изберете само важни събития и колони, за да намалите натоварването. Запазвайте проследяванията във файлове, а не в таблици, за по-добра производителност по време на заснемане.
15.2 Движение напред: Възприемане на съвременни инструменти
Преход от SQL Server Profiler към Extended Events за дългосрочни решения за мониторинг. Въпреки че Profiler остава функционален, инвестирането на време в изучаването на Extended Events ви подготвя за бъдещи SQL Server версии. Започнете с прости сесии с разширени събития, които репликират вашите общи следи от Profiler.
Активирайте Query Store в производствени бази данни, за да получите автоматично наблюдение на производителността без ръчно конфигуриране на проследяване. Query Store непрекъснато записва плановете на заявките и статистическите данни за изпълнението, предоставяйки базови данни за анализ на производителността. Комбинирайте Query Store с целеви сесии на Extended Events за цялостно наблюдение.
15.3 Допълнителни ресурси
Следните ресурси ще ви помогнат да задълбочите SQL Server Познания за профилиране и бъдете в крак с най-добрите практики за мониторинг:
Официална документация на Microsoft
- SQL Server Документация за профилера – Изчерпателен справочник за събития, колони и процедури
- Съхранени процедури на системата за проследяване на SQL – T-SQL справочник за създаване на следи от страна на сървъра
- Разширена документация за събития – Насоки за миграция и съвременни подходи за мониторинг
- Документация за хранилището за заявки – Справочник за автоматично проследяване на производителността на заявките
- Инструменти за наблюдение и настройване на производителността – Общ преглед на всички SQL Server опции за наблюдение
Ресурси на общността
- SQL Server Централна – Статии, форуми и скриптове за професионалисти в областта на базите данни
- Преливане на стека SQL Server Етикет – Въпроси и отговори от общността за специфични въпроси за отстраняване на неизправности
- Reddit r/SQLServer – Дискусионен форум за SQL Server теми и съвети
- Форуми на SQLServerCentral.com – Активни дискусии в общността относно профилирането и производителността
- MSDN SQL Server Форуми – форуми за поддръжка на общността, хоствани от Microsoft
Блогове и технически статии
- SQL Server Performance Monitor – Специализирано съдържание за мониторинг и оптимизация на производителността
- Блог на Brent Ozar Unlimited – Най-добри практики за оптимизация и мониторинг на производителността
- SQLSkills.com – Експертно ниво SQL Server съдържание от лидери в индустрията
- Microsoft SQL Server Блог – Официални актуализации на продуктите и обявления за функции
- Прост разговор – практичен SQL Server уроци и казуси
Обучение и сертифициране
- Microsoft Научете – Безплатни онлайн обучителни модули за SQL Server
- Сертифициран от Microsoft: Администратор на бази данни Azure – Официален път за сертифициране
- Pluralsight SQL Server Курсове – Видео обучение за профилиране и оптимизиране на производителността
- Обучение на LinkedIn SQL Server Обучение – Курсове за професионално развитие
- Udemy SQL Server Курсове за представяне – Практически възможности за обучение
Книги и публикации
- SQL Server Настройка на производителността на заявките – Изчерпателно ръководство за оптимизация на производителността
- професионалист SQL Server Вътрешни елементи – Задълбочено потапяне в тях SQL Server архитектура
- SQL Server Планове за изпълнение – Разбиране на оптимизацията на заявките
- Експертно индексиране на производителността за SQL Server – Дизайн и оптимизация на индекси
- SQL Server Разширено отстраняване на неизправности и оптимизиране на производителността – Разширени диагностични техники
Инструменти и помощни програми
- SQL Server Студио за управление – Основен интерфейс за SQL Server Profiler
- Azure DataStudio – Модерен инструмент за бази данни, работещи с различни платформи
- sp_WhoIsActive – Популярна съхранена процедура за наблюдение, създадена от общността
- SQL Sentry Plan Explorer – Безплатен инструмент за анализ на план за изпълнение
- DBForge Studio – Трета страна SQL Server инструмент за разработка и администриране
За автора
Юан Шенг е старши администратор на бази данни (DBA) с над 10 години опит в SQL Server среди и управление на корпоративни бази данни. Той е разрешил успешно стотици сценарии за възстановяване на бази данни във финансови услуги, здравеопазване и производствени организации.
Юан е специализиран в SQL Server възстановяване на база данни, решения с висока наличности оптимизация на производителността. Неговият богат практически опит включва управление на многотерабайтови бази данни, внедряване Винаги включени групи за наличности разработване на автоматизирани стратегии за архивиране и възстановяване за критично важни бизнес системи.
Чрез техническата си експертиза и практичен подход, Юан се фокусира върху създаването на изчерпателни ръководства, които помагат на администраторите на бази данни и ИТ специалистите да решават сложни задачи. SQL Server предизвикателствата ефикасно. Той е в крак с най-новото SQL Server издания и развиващите се технологии за бази данни на Microsoft, като редовно тества сценарии за възстановяване, за да гарантира, че препоръките му отразяват най-добрите практики в реалния свят.
Имате въпроси относно SQL Server възстановяване или имате нужда от допълнителни насоки за отстраняване на проблеми с базата данни? Юан приветства обратна връзка и предложения за подобряване на тези технически ресурси.























