Русские Блоги
Руководство по началу работы с dbForge Studio для SQL Server: как создавать и редактировать запросы
Создать запрос:
1. Создайте соединение с сервером. Дополнительные сведения о том, как создать соединение с сервером, см. В разделе Как подключиться к базе данных.
2. Щелкните «Разработка SQL» на странице «Пуск», а затем щелкните «Редактор SQL». Или щелкните стандартную панель инструментов в новом SQL или нажмите CTRL + N ;. Откроется пустой документ SQL.
3. Введите запрос к базе данных.
4. Щелкните «Выполнить» или нажмите CTRL + F5, чтобы просмотреть результаты запроса.
Редактор SQL dbForge Studio предоставляет множество функций, которые упрощают написание кода и управление им. Давайте рассмотрим некоторые функции Intellisense, которые помогут вам при кодировании.
Примеры методов кодирования:
Чтобы показать вам некоторые функции dbForge Studio Intellisense, мы выполняем запрос, нам нужно отобразить все адреса сотрудников в базе данных AdventureWorks2012, зарегистрированные в Ньютон-Сити.
1. Откройте редактор SQL.
2. Начните вводить оператор выбора. Введите первые три буквы "sel". dbForge Studio отображает список соответствующих ключевых слов и фрагментов кода. Вы можете выбрать ключевое слово SELECT из списка и нажать ENTER. Ключевые слова появятся в редакторе SQL.

Вы также можете использовать фрагменты оператора select. Введите буквы «ssf» и нажмите клавишу TAB. В этом случае в редакторе SQL появляется оператор SELECT * FROM.

3. Укажите таблицу, из которой нужно извлечь данные. Начните вводить первую букву имени таблицы, dbForge Studio отобразит список допустимых таблиц в базе данных AdventureWorks2012. Если вы продолжите вводить символы, список будет отфильтрован и будет включать только таблицы, начинающиеся с этих символов. После выбора элемента вы можете вставить его в код, нажав клавишу TAB или ENTER. dbForge Studio также отображает быструю информацию для каждого выделенного элемента в списке. Это позволяет сразу просматривать структуру объекта.

Эта адресная таблица является первой в списке, поэтому выберите ее, а затем нажмите клавишу TAB или ENTER, чтобы вставить ее в редактор SQL. dbForge Studio автоматически назначает псевдонимы адресной таблице.
4. Нам нужно выбрать категорию адреса, хранящуюся в отдельной таблице. Аналогичным образом введите или вставьте ключевое слово JOIN и нажмите клавишу SPACE. dbForge Studio покажет вам все доступные решения для реализации JOIN. Выберите необходимое предложение и нажмите ENTER.

5. Используйте оператор WHERE, чтобы завершить запрос и создать место, где нам нужно только отобразить адрес города Ньютон. Введите предложение, используйте подсказки, чтобы выбрать желаемый элемент, который нужно поместить под условие, а затем нажмите Enter.

Задайте условие a.City = ‘Newton’.

6. Чтобы отформатировать текст запроса, нажмите Ctrl + K, D или выберите параметр «Дополнительно» в меню «Правка», а затем нажмите «Форматировать документ».

7. Чтобы развернуть столбец таблицы, поместите курсор после звездочки и нажмите клавишу TAB.

Нет необходимости извлекать все столбцы из таблицы адресов, поэтому мы можем сохранить только необходимые столбцы.
8. Теперь мы можем выполнить запрос, чтобы увидеть результаты. Для этого нажмите кнопку «Выполнить» на панели инструментов «Отладка» или нажмите F5.

Теперь мы получили то, что хотели. Как видите, функция Intellisense, предоставляемая dbForge Studio, позволяет создавать сложные запросы несколько раз.
Друзья, купившие подлинную лицензию dbForge Studio для SQL Server, могут щелкнуть "Проконсультируйтесь в онлайн-службе поддержки клиентов"О
Полезные возможности dbForge для администрирования баз данных MS SQL Server
В данной статье будут разобраны полезные возможности dbForge, которые помогают в администрировании баз данных MS SQL Server. Также прошу заметить, что не все возможности будут разобраны.
Буду очень признателен, если в комментариях появятся альтернативные решения, а также дополнения к этой статье.
Возможности
Сначала рассмотрим синхронизацию баз данных (на панели «Синхронизация базы»):

1. Сравнение схем двух экземпляров баз данных (как на одном, так и на разных серверах):

Здесь необходимо указать источник и получателя. После этого сразу нажимаем кнопку «Сравнить»
1.1. Получаем результат сравнения:

Слева показывается, что у источника, а справа-что у получателя. Внизу показывается, что разное в базах данных. Также есть возможность галочками выбрать, что переносить к получателю. В результате сравнения вся схема делится на четыре блока:
— чего нет в получателе (ставя галочку, Вы помечаете объект на создание в получателе)
— что разное, но есть в обоих базах данных (ставя галочку, Вы помечаете изменения на перенос к получателю)
— что есть только в получателе (ставя галочку, Вы помечаете объект на удаление)
— что одинаковое
1.3. Сверху справа нажимаем кнопку «Синхронизировать»:

1.4. Здесь важно посмотреть все вкладки слева и в конце нажать кнопку «Начать». Также лучше выбрать «Открыть скрипт во внутреннем редакторе», а на вкладке «Опции» не создавать резервных копий
1.5. Созданный скрипт проанализировать и применить к базе или сразу к группе баз данных, где это необходимо
2. Сравнение данных двух экземпляров баз данных (как на одном, так и на разных серверах):

Здесь необходимо указать источник и получателя. После этого сразу нажимаем кнопку «Сравнить». Во вкладку «Соответствия» стоит заходить лишь тогда, когда у таблиц нет первичных ключей и нужно настроить соответствие, а также, чтобы не сравнивать все, а только указанные таблицы
2.1. В результате получаем, что отличается по таблицам вверху, а внизу-какие данные отличаются:

2.2. Далее нажимаем справа вверху кнопку «Синхронизировать»:

Здесь лучше выбрать «Открыть скрипт синхронизации во внутреннем редакторе», а на вкладке «Опции» убрать создания резервных копий. В конце нажать кнопку «Начать»
2.3. Созданный скрипт проанализировать и применить к базе или сразу к группе баз данных, где это необходимо
3. Теперь рассмотрим управление фрагментацией индексов (на панели «Администрирование»):

3.1. Здесь нужно указать сервер и базу данных:

3.2. После этого необходимо зайти в «Опции» и настроить режим оптимизации индексов:

3.3. Далее нажать на кнопку «ОК» и в списке индексов нажать кнопку «Проанализировать». Выделить нужные индексы и нажать кнопку «Исправить»:

3.4. В итоге опять будет выведен список тех индексов, у которых процент фрагментации и количество страниц выше, чем указано в настройках на вкладке «Опциях».
Результат
В данной статье были рассмотрены некоторые возможности dbForge для администрирования баз данных, которые позволяют сравнивать разные экземпляры баз данных по схемам и по данным. Что в свою очередь позволяет выявить проблемы с репликациями данных, а также проблемы с рассинхронизацией схем баз данных. Также всегда можно проверить и дефрагментировать нужные индексы при необходимости.
Основы мониторинга производительности и диагностики проблем в SQL Server
23.03.2020
insci
SQL Server
комментария 3
В этой статье мы рассмотрим популярные инструменты, T-SQL запросы и скрипты для обнаружения и решения различных возможных проблем с производительностью SQL Server. Эта статья поможет вам разобраться, когда вашему SQL Server недостаточно ресурсов (памяти, CPU, IOPs дисков), найти блокировки, выявить медленные запросы. Посмотрим какие есть встроенные инструменты и бесплатные сторонние скрипты и утилиты для анализа состояния Microsoft SQL Server.
Инструменты для диагностики SQL Server
Если вы правильно диагностировали проблему, то половина работы уже сделана. Рассмотрим какие инструменты обычно используются системным администратором для диагностики различных проблем в SQL Server:
- T-SQL — самый мощный, простой и незаменимый инструмент для поиска проблем и анализом производительности SQL Server. Практически все другие инструменты для работы с SQL Server используют T-SQL. Нет ничего такого, чтобы вы не смогли сделать с помощью T-SQL.
- SQL Server Management Studio — без SSMS практически невозможно работать с SQL Server. С помощью SSMS вы можете посмотреть Activity monitor, проанализировать план запроса, посмотреть параметры сервера или базы данных и многие другие вещи.
- Журналы ошибок SQL Server и Windows – если что-то идёт не так, журнал ошибок — это первое место, куда смотрит системный администратор. Журнал ошибок SQL Server можно посмотреть через SSMS. Журналы Windows можно посмотреть через оснастку eventvwr.msc.
- Монитор ресурсов Windows — resmon.exe незаменимый инструмент Windows для быстрой оценки состояния ресурсов сервера. Использование оперативной памяти и процессора можно посмотреть и через Диспетчер задач, но детальное использование сети и жесткого диска можно посмотреть только через resmon и perfmon.
- Системный монитор Windows (Performance Monitor) — Perfmon.exe это основное средство мониторинга Windows, он содержит в себе разнообразные “счетчики”, как системных метрик, так и приложений, включая SQL Server. Обычно счетчики perfmon обрабатывают с помощью других систем мониторинга, например, Zabbix, так как в perfmon неудобно хранить и смотреть данные за прошедшее время.

- Сторонние приложения — существует много платных и бесплатных приложений для мониторинга SQL Server. Например, одним из бесплатных приложений является dbForge Monitor от компании Devart. Приложение устанавливается как дополнение к SSMS и позволяет выводить очень удобный дашборд для отображения текущего состояния вашего SQL Server (информация об использовании памяти, CPU, нагрузках, блокировках, процессах, информацию о бэкапах, “тяжелых SQL запросах”, производительности дисковой подсистемы и т.д.).

- Скрипты Brentozar – это популярное решение для диагностики настроек и работоспособности SQL Server. У brentozar есть много скриптов для различных задач, но для диагностики нас интересует “sp_blitz”. Скачать можно бесплатно с официального сайта https://www.brentozar.com/blitz/. Запустите sp_Blitz.sql чтобы установить необходимые процедуры и выполните их exec sp_blitz для диагностики. Этот инструмент бесплатный и поддерживается сообществом SQL Server. Sp_blitz определит все популярные проблемы с вашим сервером и посоветует как их решить.

- Наборы T-SQL скриптов — удобно иметь под рукой коллекции разнообразных T-SQL запросов для диагностики SQL Server, так как не всегда есть время писать собственные запросы, лучше вооружиться заранее. Ниже перечислены ссылки на полезные T-SQL/PowerShell запросы, которые я часто использую при диагностике и тюнинге MS SQL:
-
— набор запросов для мониторинга CPU/RAM/Disk IO и прочих параметров.
Обнаружение и решение проблем с производительностью SQL Server
Самой распространенной проблемой с которой сталкивается системный администратор, работающий с SQL Server, это жалобы пользователей на производительность запросов и самого сервера: “тормозит”, “долго выполняется запрос“, и так далее.
Прежде всего нужно убедиться, что серверу хватает ресурсов. Рассмотрим, как в SQL Server быстро проанализировать использование памяти, CPU, дисков и наличие блокировок.
Анализ использования оперативной памяти SQL Server
Для начала нужно определить сколько памяти доступно SQL Server. Для этого запустите SSMS (SQL Server Management Studio), зайдите на сервер и зайдите в свойства сервера (ПКМ по названию сервера в Обозревателе объектов).

Сам по себе доступный объём RAM вам ничего не скажет. Нужно сравнить это число с используемой памятью в Диспетчере Задач и самим движком SQL Server с помощью DMV.
В Диспетчере задач, во вкладке Подробности, найдите sqlservr.exe и посмотрите сколько оперативной памяти использует этот процесс.
- Если на сервере, например, 128 GB оперативной памяти, а процесс sqlservr.exe использует 60 GB и ограничений по RAM у SQL Server нет, то оперативной памяти вам хватает.
- Если SQL Server использует 80-90% RAM от заданной или максимальной, то в таком случае нужно смотреть DMV. Имейте в виду, что sqlservr.exe не сможет использовать всю оперативную память. Если на сервере 128 GB, то sqlservr.exe может использовать только 80-90% (100-110 GB), так как остальная память резервируется для операционной системы.
Имейте в виду, что процесс SQL Server’a не отдаёт оперативную память обратно в систему. Например, ваш SQL Server обычно использует 20 GB памяти, но при месячном отчете он увеличивает потребление до 100 GB, и даже когда вычисление отчета закончится и сервер будет работать в прежнем режиме, процесс SQL Server’a всё равно будет использовать 100 GB до перезагрузки службы.
Даже если вы уверены, что оперативной памяти серверу хватает, не будет лишним точно знать объём потребляемой RAM.
Узнать реальное использование RAM можно с помощью Dynamic Management Views. DMV это административные вьюверы (представления). С помощью DMV можно диагностировать практически любую проблему в SQL Server.
Посмотрим sys.dm_os_sys_memory, для удобства используем запрос:
Рассмотрим каждый выводимый параметр:
- [Total Physical Memory] – объём оперативной памяти доступный в операционной системе. На некоторых серверах может показывать немного больше реально установленной.
- [Available Physical Memory] – объём оперативной памяти доступный для SQL Server, без учета уже захваченной SQL Server.
- [Total Page File (MB)] – Объём “Сommit limit”. Commit Limit = Оперативная память + все файлы подкачки. То есть, если у вас на сервере 32 GB оперативной памяти и 16 GB файл подкачки, commit limit будет 48 GB.
- [Available Page File (MB)] – Объём файла подкачки.
- Percentage Used – процент занятой оперативной памяти. Такого параметра нет в самом sys.dm_os_sys_memory, но он считается по формуле available_physical_memory_kb / total_physical_memory_kb
- [Memory State] – Состояние RAM. Поле system_memory_state_desc содержит в себе состояние потребления оперативной памяти в виде текста. Значение этого поля считается исходя из других двух: system_low_memory_signal_state и system_high_memory_signal_state. Вы можете выбирать их напрямую, если вам нужен Boolean/bit формат данных. Для ознакомления со всеми полями sys.dm_os_sys_memory ознакомьтесь с документацией https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-sys-memory-transact-sql?view=sql-server-ver15
Все эти данные полезны, если вы хотите точно определить сколько ваш SQL Server потребляет RAM. Чаще всего это используют, если есть подозрения что для экземпляра выделено слишком много оперативной памяти.
Если Вам нужно убедиться, что серверу хватает RAM, вы можете смотреть только на поля system_low_memory_signal_state, system_high_memory_signal_state и system_memory_state_desc. Если system_low_memory_signal_state = 1, то серверу явно не хватает оперативной памяти.
Загрузка процессора в SQL Server
Нагрузку на процессор определить проще, так как это можно сделать в Диспетчере задач. Чтобы узнать текущую нагрузку на процессор, найдите в Диспетчере задач процесс sqlservr.exe

Если вы хотите узнать нагрузку за прошедшее время, можно воспользоваться запросом:

В результате мы получим поминутную статистику использования процессора.
Анализ нагрузки на диск SQL Server

Посмотрим на загрузку дисков в операционной системе. Для этого запустите resmon.exe.
Нам нужна вкладка Disk. В секции Disk Activity отображаются файлы, к которым идёт обращение, и их скорость read/write на текущий момент. Отфильтруйте эту секцию по Total (кликните на Total). На самом верху будут файлы, которые на данный момент максимально используют диск. В случае с SQL Server это может быть полезно чтобы определить какая база больше всего нагружает диск на текущий момент.
В секции Storage отображаются все диски в системе. В этой секции нам нужны 2 параметра – Active Time и Disk Queue. Active Time в процентах отображает нагрузку на диск, то есть если вы видите на диске C:\ Active Time равный 90, это значит что ресурс чтения/записи диска на текущий момент используется на 90%. Столбец Disk Queue отображает очередь обращений к диску, и если значение очереди не равно нулю, то диск загружен на 100% и не справляется с нагрузкой. Так же если Active Time близок к 100, то диск используется практически на пределе своих возможностей по скорости.
Просмотр блокировок в SQL Server
После того как мы убедились, что серверу хватает ресурсов, можно переходить к просмотру блокировок.
Блокировки можно посмотреть через Activity Monitor в SSMS, но мы воспользуемся T-SQL, так как этот вариант более удобен и нагляден. Выполняем запрос:
Этот запрос возвращает список блокировок в виде дерева. Это удобно в работе, так как обычно, если возникает одна блокировка, она провоцирует за собой другие. Аналогично в Activity Monitor или в выводе sp_who2 можно увидеть поле “Blocked By”.
Если запрос ничего не вернул, то блокировок нет.
Если запрос вернул какие-то данные, то нужно проанализировать цепочку.

HEAD значит что этот запрос является причиной всех остальных блокировок ниже по дереву. 64 – это идентификатор процесса (SPID). После этого пишется тело запроса, который вызвал блокировку. Если у вас хватает ресурсов сервера, то скорее всего дело в самом запросе и во взаимном обращении к каким-то объектам. Для того чтобы сказать точнее, нужно анализировать конкретный запрос, который вызвал блокировку.
Политики SQL Server
Даже когда у вас всё работает хорошо и жалоб нет, на самом деле может быть много проблем, которые всплывут позже. Для этого в SQL Server есть политики.
Политика в SQL Server это, грубо говоря, проверка правила на соответствие заданному значению. Например, с помощью политик вы можете убедиться, что на всех базах на сервере выключен Auto Shrink. Рассмотрим пример импорта и выполнения политики
В SSMS, подключитесь к серверу, на котором хотите выполнять политики (Management -> раздел Policy Management).


Импортируем файл Database Auto Shrink.xml. Жмём Evaluate

На экземпляре node1 две базы данных, test1 и test2. На test2 включен autoshrink. Посмотрим детали.
Политика определила включенный параметр AutoShrink, в описании обычно пишется объяснения к правилам. В данном случае дается объяснение почему auto shrink лучше отключать.
Политики могут выполняться либо по расписанию, либо по требованию (разово). Результаты выполнения политики можно посмотреть в журнале политик.
При установке SQL Server нужно выбирать только используемые компоненты СУБД, и указывать настройки в соответствии с конфигурацией “железа” вашего сервера. Всегда следите чтобы серверу хватало ресурсов, и чтобы на сервере не было блокировок
Самым мощным инструментом для диагностики SQL Server является T-SQL и DMV. Так же рекомендуется построить круглосуточный мониторинг над SQL Server и над обслуживающей его инфраструктурой для обнаружения всех возможных проблем.
Предыдущая статья Следующая статья
7 DB Forge SQL Studio Features Discovered in Less Than 2 Hours
An acquaintance of mine introduced me to dbForge SQL Studio some time ago and I was absolutely blown away by the capabilities of the product. DbForge is an integrated development environment for SQL Server that extends the capabilities of SSMS significantly.
dbForge SQL Studio is particularly impressive to me having also had experience with Oracle Database Administration, where it was typical to use TOAD to interact with Oracle Databases rather than the native SQL Developer that ships with Oracle Database Software. In this article, I will highlight seven simple but interesting features I noticed in dbForge IDE.
Detailed Connection Options
dbForge provides many of the options available in SQL Server Management Studio when connecting to an instance of SQL Server. You can choose the server, authentication mode and whether to save your password or not. But you can do more than this. dbForge allows you to select the exact database you want to connection on the GUI and you can opt to NOT display other databases (See Figure 1). This is a good idea because it can help one avoid errors like running code unintentionally on a particular database because one forgot to change the database context. This error can easily happen if live and UAT databases are in the same instance or if an application has a suite of databases with similar tables such as a transaction and history tables with the same structure.

Figure 1: Basic Connection to SQL Serve on dbForge
dbForge also provides for more advanced users who may want to connect to an instance using a string (See Figure 2).

Figure 2: Advanced Connection to SQL Server on dbForge
Modify an Existing Connection
When using dbForge SQL Studio, you can change the options you selected when connecting to the instance simply by selecting “Modify Connection” from the drop down menu displayed when you right-click the connection name. This allows you to make changes to the existing connection as if you are establishing a new connection but retains the work you have already done in your script for example (See Figure 3).

Figure 3: Modify Connection in dbForge SQL Studio
Limit the List of Databases Displayed
When you uncheck the option to “show all databases” at the point of configuring your connection, you can see ONLY the specific database you opted for. This keeps you interface looking tidy and helps avoid a situation where you accidentally make changes to another database visually (See Figures 4 and 5). In this scenario you can still change database context using the USE clause.

Figure 4: Connect to AU, Show All Databases

Figure 5: Connect to AU, Do Not Show All Databases
SQL Complete and SQL Formatting
dbForge can be considered a complete SQL Manager solutions bundling many features. It also offers great auto-complete capabilities when coding SQL. The basic T-SQL commands are suggested in upper case as you type giving you a much neater output eventually. dbForge also handles indentation quite well as you type code (See Figure 6). I was hoping however that I would get commas automatically when selecting a column list, but this did not happen. Talk about Oliver Twist asking for more.
Most SQL Server database administrators are familiar with the IntelliSense feature in SQL Server Management Studio (SSMS). SQL Complete is a more robust version of this auto-complete feature giving your productivity in SQL coding a dramatic boost. SQL Complete is available as an add-in to SQL Server Management Studio (SSMS) and compatible with Microsoft Azure. You can learn more about the tool here: SQL Complete.

Figure 6: SQL Statement Formatting
Editable Data Grid
dbForge gives you the opportunity to make your result set editable when you execute a query (See Figure 7). This means you can make changes to rows that were returned by a query within the data grid (See Figure 8). These changes are committed automatically. As with SSMS, the result set is also exportable this time with provisions for thirteen different formats (See Figure 9).

Figure 7: Choose to Make Data Grid Editable

Figure 8: Editable Grid
Once again, we should mention that TOAD has similar features in terms of editing the result set and committing the change. This is a good feature, but it is also subject to human error.

Figure 9: Data Export Formats
SQL Server Management Studio also offers export but only a limited number of formats are available. Also notice in Figure 9 above that dbForge will allow one export only a limited number of rows except you purchase the paid version of the tool.
Database Diagrams in DB Forge SQL Studio
dbForge SQL Studio offers an incredibly easy way to develop quick database diagrams using drag and drop. The diagram shown in Figure 9 was developed in about five seconds! It shows tables in the WideWorldImporters sample database and the relationships among them. For each table you drag into the space, the complete column list is populated and the relationships with other tables are shown.
To begin, just go to Database>Database Diagram from the menu bar. You should know that these drawings are developed per database so you cannot have tables from different databases in the same drawing. This is a much easier way to develop database diagrams compared to what is available in SQL Server Management Studio (SSMS).

Figure 10: Database Diagrams
Monitoring
dbForge comes with a dashboard to monitor your instance. Quite a lot of information about the instance are shown on this dashboard. It is displayed by clicking Tools>Show Monitor from the menu bar. The monitor also shows many useful performance counters (see Figure 11). The scope of this monitoring is a lot broader that what is available in Utility Control Point available in SSMS.

Figure 11: SQL Studio Monitor
Conclusion
Devart’s dbForge is a very impressive tool for managing SQL Server instances. The express version of the tool is available for free on the Devart Website. More advanced capabilities are also available for the enterprise versions of the tool. Incidentally, dbForge is also compatible with Microsoft Azure. In my opinion, database administrators, developers and regular users can give their productivity a quantum leap by embracing Devart’s dbForge IDE.