Топ-100
 
CerebroSQL

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

Не нашли нужных функций? Пишите в комментариях на форуме и мы добавим нужный функционал
Создание нового листа
  1. Нажать кнопку "New list "MS SQL"" в окне редактора

  2. File -> New -> MSSQL Server

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

 
CerebroSQL - mssql create page
 
Менеджер соединений с сервером 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

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

[CerebroSQL] MSSQL database list.jpg

->Запрос для извлечения данных<-

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

-----

SCHEMA LIST

->Запрос для извлечения данных<-

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

-----

 
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"

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

->Запрос для извлечения данных<-

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"

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

 
 
[CerebroSQL] Table - index info.jpg

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

->Запрос для извлечения данных<-

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"

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

 
[CerebroSQL] Table constraint list.jpg

->Запрос для извлечения данных<-

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"

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

[CerebroSQL] Table - trigger list.jpg

->Запрос для извлечения данных<-

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"

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

[CerebroSQL] Table size.jpg

->Запрос для извлечения данных<-

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

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

[CerebroSQL] View list in database MSSQL.jpg

->Запрос для извлечения данных<-

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

-----

Меню:

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

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

 
SYNONYM

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

[CerebroSQL] Synonym list in database MSSQL.jpg

->Запрос для извлечения данных<-

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

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

[CerebroSQL] Procedure list in database MSSQL.jpg

->Запрос для извлечения данных<-

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('sys')
order by 1

-----

Меню

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

->Запрос для извлечения данных<-

use $$DBNAME

go

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

-----

 
FUNCTION

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

[CerebroSQL] Function list in database MSSQL.jpg

->Запрос для извлечения данных<-

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

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

[CerebroSQL] Trigger list in database MSSQL.jpg

->Запрос для извлечения данных<-

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 - сформировать и добавить в редактор текст команды на создание тр