top of page
CerebroSQL

Редактор TSQL для СУБД MSSQL SERVER

Редактор TSQL для СУБД MS SQL Server позволяет быстро и удобно работать с базами данных. Создавать их, обслуживать и при необходимости проводить восстановление. Редактор поддерживает работу с версиями сервера MS SQL 2000 и старше

Меню

Создание нового листа

Создание нового листа

  1. Нажать кнопку "New list "MS SQL"" в окне редактора

  2. File -> New -> MSSQL Server

  3. Комбинация клавиш: Ctrl+F5

CerebroSQL - mssql create page
Менеджер соединений с сервером MS SQL

Менеджер соединений с сервером MS SQL

CerebroSQL - connection manager for mssql

Group filter

Фильтр для отображения списка сохраненных соединений определенной группы  

Подключение к серверу MS SQL
  • Alias - синоним соединений

  • Group name - имя группы в списке соединений

  • Server name - DNS имя или IP адрес сервера

  • Port - порт на котором работает MSSQL (по умолчанию 1433)

  • Database - имя базы данных (по умолчанию база данных пользователя)

  • Authentication type - способ аутентификации в базе данных

    • Windows authentication - аутентификация на основе имени пользователя в  ОС 

    • MS SQL authentication - аутентификация на основе введенного логина и пароля

Если метод аутентификации "MS SQL authentication" 

  • User name - имя пользователя в БД

  • Password - пароль пользователя

Подключение к серверу Azure
  • Alias - синоним соединений

  • Group name - имя группы в списке соединений

  • Server name - DNS имя или IP адрес сервера

  • Port - порт на котором работает MSSQL (по умолчанию 1433)

  • Database - имя базы данных (по умолчанию база данных пользователя)

  • Authentication type - способ аутентификации в базе данных

    • MS SQL authentication - аутентификация на основе введенного логина и пароля

    • AZURE active directory - аутентификация на основе логина и пароля в домене Azure

  • Encrypt traffic -> Yes - шифровать трафик  

Если метод аутентификации "MS SQL authentication" 

  • User name - имя пользователя в БД

  • Password - пароль пользователя

Если метод аутентификации "AZURE active directory" 

  • User name - логин домене azure в формате логин@домен

  • Password - пароль

  • Provider - имя провайдера соединения (ODBC Driver 17 for SQL Server, ODBC Driver 16 for SQL Server, ...)

После подключения к СУБД, смена текущей базы выполняется в том числе, через выпадающий список "Current database".​

Для отключения от БД всех соединений текущего листа нажать на кнопку "Disconnect

Дерево объектов

Дерево объектов

CerebroSQL - tree object (MS SQL Server)

Дерево объектов - интерфейс для визуализации структуры кластера, управления объектами. 

Корневая запись дерева структурно состоит из имени сервера к которому подключен лист и его версии.

Каждый лист создает несколько соединений с БД

  • соединение для отображения информации в дереве объектов

  • соединение для выполнения SQL запросов, команд (основной процесс)

  • соединение для выполнения SQL запросов, команд (дополнительный процесс)

Database

Database

[CerebroSQL] MSSQL database list

Список баз данных созданных на сервере MSSQL Server

select d.name, lower(d.state_desc) "state_desc"
 from sys.databases d with (nolock)
order by d.database_id

List schema

SELECT s.name AS schema_name
 FROM tdb.sys.schemas s 
where schema_id <10000
ORDER BY s.name 

Table

TABLE

Список таблиц в базе данных сгруппированный по схемам

[CerebroSQL] Table list in database MSSQL.jpj

select s.name "Schemaname",
      t.name "Tablename",
      t.object_id
 from $$DBNAME.sys.tables t,
      $$DBNAME.sys.schemas s
where t.schema_id = s.schema_id
  and s.name = $$SCHEMANAM 

Меню:

  • Edit data tablle (show all) - открыть таблицу в режиме редактирования записей. В сетке добавляется панель редактора данных. Таблица открывается полностью но в сетке выводятся первые 50 строк.

  • Show data (top 100) - вывести в сетке первые 100 записей в таблице

  • Get source - сформировать и добавить в редактор код создания таблицы и ее индексов

  • Script - select - сформировать и добавить в редактор текст запроса для выборки данных из таблицы. 

  • Script - insert - сформировать и добавить в редактор текст команды insert для вставки данных из таблицу.

  • Export data to CSV - запустить мастер выгрузки данных из таблицы  

  • Import data from CSV - запустить мастер импорта данных из CSV файла в выбранную таблицу

COLUMNS

Узел COLUMN

Список колонок таблицы с указанием типа данных

select c.name "ColumnName",
      t.name "CoolumnType",
      c.max_length,
      c.precision,
      c.scale
 from $$DBNAME.sys.columns c,
      $$DBNAME.sys.types t
 where object_id =$$OBJECT_ID
   and c.user_type_id = t.user_type_id
order by c.column_id

INDEXES

Узел INDEX

Список индексов построенных по колонкам таблицы

[CerebroSQL] Table - index info

Список индексов с подробной информацией

SELECT
 Object_id = ind.object_id,
 TableName = t.name,
 IndexName = ind.name,
 IndexId = ind.index_id,
 ind.type_desc,
 ind.is_unique,
 ind.ignore_dup_key,
 ind.is_primary_key,
 ind.is_unique_constraint,
 ind.fill_factor,
 ind.is_disabled,
 ind.is_ignored_in_optimization,
 ind.compression_delay
FROM
 tdb.sys.indexes ind INNER JOIN tdb.sys.tables t ON ind.object_id = t.object_id
inner join tdb.sys.schemas sch on sch.schema_id = t.schema_id
where sch.name = $$SCHEMA_NAME
   and t.name =$$TABLE_NAME
   and ind.name is not null

Список о колонок по которым построен индекс

SELECT col.name
FROM tdb.sys.indexes ind
     INNER JOIN tdb.sys.index_columns ic ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id
     INNER JOIN tdb.sys.tables t ON ind.object_id = t.object_id
     INNER JOIN tdb.sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id
where ind.name = $$INDEX_NAME
  and t.name   = $$TABLE_NAME
order by ic.index_column_id

CONSTRAINTS

Узел CONSTRAINTS

[CerebroSQL] Table constraint list

Список ограничений таблицы

select table_view,
   object_type,
   constraint_type,
   constraint_name,
   details
from (
   select schema_name(t.schema_id) + '.' + t.[name] as table_view,
       case when t.[type] = 'U' then 'Table'
           when t.[type] = 'V' then 'View'
           end as [object_type],
       case when c.[type] = 'PK' then 'Primary key'
           when c.[type] = 'UQ' then 'Unique constraint'
           when i.[type] = 1 then 'Unique clustered index'
           when i.type = 2 then 'Unique index'
           end as constraint_type,
       isnull(c.[name], i.[name]) as constraint_name,
       substring(column_names, 1, len(column_names)-1) as [details]
   from $$DBNAME.sys.objects t
       left outer join $$DBNAME.sys.indexes i
           on t.object_id = i.object_id
       left outer join $$DBNAME.sys.key_constraints c
           on i.object_id = c.parent_object_id
           and i.index_id = c.unique_index_id
        cross apply (select col.[name] + ', '
                       from $$DBNAME.sys.index_columns ic
                           inner join $$DBNAME.sys.columns col
                               on ic.object_id = col.object_id
                               and ic.column_id = col.column_id
                       where ic.object_id = t.object_id
                           and ic.index_id = i.index_id
                               order by col.column_id
                               for xml path ('') ) D (column_names)
   where is_unique = 1
   and t.is_ms_shipped <> 1
   union all
   select schema_name(fk_tab.schema_id) + '.' + fk_tab.name as foreign_table,
       'Table',
       'Foreign key',
       fk.name as fk_constraint_name,
       schema_name(pk_tab.schema_id) + '.' + pk_tab.name
   from $$DBNAME.sys.foreign_keys fk
       inner join $$DBNAME.sys.tables fk_tab
           on fk_tab.object_id = fk.parent_object_id
       inner join $$DBNAME.sys.tables pk_tab
           on pk_tab.object_id = fk.referenced_object_id
       inner join $$DBNAME.sys.foreign_key_columns fk_cols
           on fk_cols.constraint_object_id = fk.object_id
   union all
   select schema_name(t.schema_id) + '.' + t.[name],
       'Table',
       'Check constraint',
       con.[name] as constraint_name,
       con.[definition]
   from $$DBNAME.sys.check_constraints con
       left outer join $$DBNAME.sys.objects t
           on con.parent_object_id = t.object_id
       left outer join $$DBNAME.sys.all_columns col
           on con.parent_column_id = col.column_id
           and con.parent_object_id = col.object_id
   union all
   select schema_name(t.schema_id) + '.' + t.[name],
       'Table',
       'Default constraint',
       con.[name],
       col.[name] + ' = ' + con.[definition]
   from $$DBNAME.sys.default_constraints con
       left outer join $$DBNAME.sys.objects t
           on con.parent_object_id = t.object_id
       left outer join $$DBNAME.sys.all_columns col
           on con.parent_column_id = col.column_id
           and con.parent_object_id = col.object_id) a
where a.table_view = $$TABLE_SCHEMA.$$TABLE_NAME
order by table_view, constraint_type, constraint_name

Узел TRIGGERS

TRIGGERS
[CerebroSQL] Table - trigger list

Список триггеров на таблице

select tr.name,
      tr.object_id,
      tr.create_date,
      tr.is_ms_shipped,
      tr.is_disabled,
      tr.is_not_for_replication,
      t.name "table_name",
      sc.name "schema_name"
 from $$DBNAME.sys.triggers tr,
      $$DBNAME.sys.tables t,
      $$DBNAME.sys.schemas sc
where tr.parent_id = t.object_id
   and t.schema_id = sc.schema_id
   and tr.parent_id = $$OBJECT_ID
order by sc.name, t.name, tr.name

SIZE

Узел SIZE

[CerebroSQL] ms sql table size

Информация о текущем размере таблицы и ее индексов, свободном месте

SELECT
 t.Name                                       AS TableName,
 s.Name                                       AS SchemaName,
 p.Rows                                       AS RowCounts,
 SUM(a.total_pages) * 8                       AS TotalSpaceKB,
 SUM(a.used_pages) * 8                        AS UsedSpaceKB,
 (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
 $$DBNAME.sys.tables t
 INNER JOIN $$DBNAME.sys.indexes i ON t.object_id = i.object_id
 INNER JOIN $$DBNAME.sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
 INNER JOIN $$DBNAME.sys.allocation_units a ON p.partition_id = a.container_id
 LEFT OUTER JOIN $$DBNAME.sys.schemas s ON t.schema_id = s.schema_id
WHERE
 t.Name = $$TABLE_NAME
 and S.name = $$SCHEMA_NAME
 AND t.is_ms_shipped = 0
 AND i.object_id > 255
GROUP BY
 t.Name, s.Name, p.Rows

VIEW

Узел VIEW

[CerebroSQL] View list in database MSSQL

Список представлений в выбранной БД сгруппированные по схемам

SELECT av.name
FROM $$DBNAME.sys.all_views av,
    $$DBNAME.sys.schemas s
where s.schema_id=av.schema_id
 and s.name = $$SCHEMA
order by 1      

Меню

 

  • Show data - показать данные представления. Выбираются первые 100 строк в режиме грязного чтения (with (nolock))

  • Get source - сформировать и вывести в редактор команду на создание представления

 

synonym

Узел SYNONYM

[CerebroSQL] Synonym list in database MSSQL

Список синонимов в выбранной БД сгруппированный по схемам

select s.name,
      s.object_id,
      s.create_date,
      s.modify_date,
      s.is_ms_shipped,
      s.is_published,
      s.base_object_name
 from $$DBNAME.sys.synonyms s,
      $$DBNAME.sys.schemas sc
where s.schema_id = sc.schema_id
   and sc.name = $$SCHEMA_NAME

Узел PROCEDURE

procedure
[CerebroSQL] Procedure list in database MSSQL

Список процедур в выбранной БД сгруппированный по схемам

select o.name "name", o.object_id
 from $$DBNAME.sys.all_objects o,
      $$DBNAME.sys.schemas s
where o.type in ('P','PC')
   and o.schema_id = s.schema_id
   and lower(s.name) = lower($$SCHEMA)
order by 1 

Меню

 

  • Get source - сформировать и добавить в редактор текст команды создания процедуры

 

use $$DBNAME
go
SELECT OBJECT_DEFINITION (OBJECT_ID(N'$$SCHEMA_NAME.$$PROCEDURE_NAME')) AS [Definition]

function

Узел FUNCTION

[CerebroSQL] Function list in database MSSQL

Список функций в выбранной БД сгруппированный по схемам

select o.name "name", o.object_id
 from tdb.sys.all_objects o,
      tdb.sys.schemas s
where o.type in ('AF','FN','FS','FT','IF') 
   and o.schema_id = s.schema_id
   and lower(s.name) = lower($$SCHEMA_NAME) 
order by 1 

Меню

  • Get source - сформировать и добавить в редактор текст команды создания процедуры

use $$DBNAME
go
SELECT OBJECT_DEFINITION (OBJECT_ID(N'$$SCHEMA_NAME.$$PROCEDURE_NAME')) AS [Definition]

trigger

Узел TRIGGER

[CerebroSQL] Trigger list in database MSSQL

Список триггеров в выбранной базе данных сгруппированный по таблицам в схемах

select tr.name,
      tr.object_id,
      tr.create_date,
      tr.is_ms_shipped,
      tr.is_disabled,
      tr.is_not_for_replication,
      t.name "table_name",
      sc.name "schema_name"
 from $$DBNAME.sys.triggers tr,
      $$DBNAME.sys.tables t,
      $$DBNAME.sys.schemas sc
where tr.parent_id = t.object_id
   and t.schema_id = sc.schema_id
order by sc.name, t.name, tr.name

Меню

 

  • Disable trigger - сформировать и добавить в редактор команду для отключения триггер

  • Enable trigger - сформировать и добавить в редактор команду для включения триггера

  • Get source - сформировать и добавить в редактор текст команды на создание триггера

 

type

Узел TYPE

[CerebroSQL] Type list in database MSSQL

Список типов созданных в выбранной БД сгруппированный по схемам

select t.name
 from $$DBNAME.sys.types t,
      $$DBNAME.sys.schemas s
where s.schema_id = t.schema_id
   and s.name = $$SCHEMA_NAME
order by t.name 

sequence

Узел SEQUENCE

[CerebroSQL] Sequence list in database MSSQL

Список последовательностей созданных в выбранной БД сгруппированный по схемам 

select s.name,
      s.object_id,
      s.create_date,
      s.modify_date,
      s.start_value,
      s.current_value,
      s.maximum_value
 from $$DBNAME.sys.sequences s,
      $$DBNAME.sys.schemas sc
where sc.schema_id = s.schema_id
   and sc.name = $$SCHEMA_NAME
order by s.name

Узел SECURITY

security
[CerebroSQL] Security - list user

Список ролей и пользователей созданных на сервере MSSQL

select createdate,
      updatedate,
      name,
      dbname,
      language,
      denylogin,
      hasaccess,
      case when isntname = 1
           then 'USER'
           else 'SYSTEM' end "isntname",
      case when isntgroup = 1
           then 'GROUP'
           else 'USER' end "isntgroup",
      sysadmin,
      securityadmin,
      serveradmin,
      setupadmin,
      processadmin,
      diskadmin,
      dbcreator,
      bulkadmin
 from master.sys.syslogins
 order by name desc

monitor

MONITOR

Единый центр управления, мониторинга и оптимизации базами данных MS SQL Server

session list

SESSION LIST

Список сессий на сервере MSSQL

[CerebroSQL] MSSQL Monitor - session list

Список сессий, обновляется в ручную нажатием кнопки "Refresh list session" или нажатием клавиши F5

exec sp_who2

При выделении строки в списке сессий, в блоке Details отображается подробная информация о сессии, в поле Query выводится текст текущего SQL запроса

SELECT (SELECT [text]
         FROM sys.dm_exec_sql_text(sql_handle)) AS SqlCommand,  
      spid AS [Process ID], status AS [Status],
      hostname AS [Host Name],
      hostprocess AS [Host Process],
      SPACE(3) AS [Company],
      0 AS [Task],
      SPACE(64) AS [Description],
      loginame AS [User],
      open_tran AS [Open Trans],
      cmd AS [Command],
      blocked AS [Blocked],
      CONVERT(VARCHAR(19), waittime) AS [Wait Time],
      [Waiting] = Case waittype     
                    WHEN 0x0000 THEN SPACE(256)
                    Else waitresource END,
      login_time AS [Login Time],
      SPACE(64) AS [WTS Client], SPACE(12) AS [WTS ID],
      program_name AS [Application]
 FROM sys.sysprocesses WITH (NOLOCK)
WHERE spid = $$SESSION_ID 

При переключении на вкладку PLAN отображается план выполнения запроса

Missing index

MISSING INDEX

Список индексов необходимых для оптимизации работы запросов (повышение производительности работы БД).

Обновление списка рекомендованных индексов осуществляется по нажатию кнопки F5

[CerebroSQL] MSSQL Monitor - missing index

SELECT TOP 100  
      dm_mid.database_id AS DatabaseID,
      dm_migs.avg_user_impact*(dm_migs.user_seeks+dm_migs.user_scans) Avg_Estimated_Impact,
      dm_migs.last_user_seek AS Last_User_Seek,
      OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) AS [TableName],
      'CREATE INDEX [IX_' + OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) + '_'
         + REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.equality_columns,''),', ','_'),'[',''),']','')
         + CASE
            WHEN dm_mid.equality_columns IS NOT NULL
             AND dm_mid.inequality_columns IS NOT NULL THEN '_'
            ELSE ''
            END
         + REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.inequality_columns,''),', ','_'),'[',''),']','')
         + ']'
         + ' ON ' + dm_mid.statement
         + ' (' + ISNULL (dm_mid.equality_columns,'')
         + CASE WHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns 
           IS NOT NULL THEN ',' ELSE '' END
         + ISNULL (dm_mid.inequality_columns, '')
         + ')'
         + ISNULL (' INCLUDE (' + dm_mid.included_columns + ')', '') AS Create_Statement 
FROM sys.dm_db_missing_index_groups dm_mig 
    INNER JOIN sys.dm_db_missing_index_group_stats dm_migs 
       ON dm_migs.group_handle = dm_mig.index_group_handle
    INNER JOIN sys.dm_db_missing_index_details dm_mid
       ON dm_mig.index_handle = dm_mid.index_handle
ORDER BY Avg_Estimated_Impact DESC

wait stats

WAIT STATS

Статистика по ожиданиям сессий в базах данных MSSQL отсортированная по частоте появления

[CerebroSQL] MSSQL Monitor - wait stats

SELECT TOP 30
       [Wait_type] = wait_type,
       [Wait_time] = wait_time_ms / 1000,
       [waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0
              / SUM(wait_time_ms) OVER())
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
ORDER BY wait_time_ms DESC

Edit configuration

EDIT CONFIGURATION

Редактор параметров сервера MS SQL

[CerebroSQL] MSSQL Monitor - edit configure

select s.configuration_id,
      s.name,
      s.value,
      s.minimum,
      s.maximum,
      s.value_in_use,
      s.description,
      s.is_dynamic,
      s.is_advanced 
 from master.sys.configurations s
order by name       

Изменение значения параметра

 

  • Выбрать базу из списка Database name

  • В списке Parameter list выбрать нужный параметр конфигурации

  • В поле New value ввести новое значение

  • Нажать кнопку Apply

 

Server logs

SERVER LOG

Просмотр логов работы MSSQL Server

[CerebroSQL] MSSQL Monitor - server log view
bottom of page