
Редактор TSQL для СУБД MSSQL SERVER
Не нашли нужных функций? Пишите в комментариях на форуме и мы добавим нужный функционал
Создание нового листа
-
Нажать кнопку "New list "MS SQL"" в окне редактора
-
File -> New -> MSSQL Server
-
Комбинация клавиш: Ctrl+F5

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

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"
Дерево объектов
.jpg)
Дерево объектов - интерфейс для визуализации структуры кластера, управления объектами.
Корневая запись дерева структурно состоит из имени сервера к которому подключен лист и его версии.
-----
Каждый лист создает несколько соединений с БД:
-
соединение для отображения информации в дереве объектов
-
соединение для выполнения SQL запросов, команд (основной процесс)
-
соединение для выполнения SQL запросов, команд (дополнительный процесс)
DATABASE
Список баз данных созданных на сервере MSSQL Server
![[CerebroSQL] MSSQL database list.jpg](https://static.wixstatic.com/media/513478_ed97f935ccab4962894874258897344f~mv2.jpg/v1/fill/w_438,h_368,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20MSSQL%20database%20list.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](https://static.wixstatic.com/media/513478_3863d30e308247e1b6fd510bd8ee3279~mv2.jpg/v1/fill/w_340,h_614,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Table%20list%20in%20database%20MSSQ.jpg)
->Запрос для извлечения данных<-
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](https://static.wixstatic.com/media/513478_6091acd70f00439bae331b61e6554682~mv2.jpg/v1/fill/w_400,h_462,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Table%20-%20index%20info.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](https://static.wixstatic.com/media/513478_a9bcd1637572496e899179c44c2edd4d~mv2.jpg/v1/fill/w_350,h_436,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Table%20constraint%20list.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](https://static.wixstatic.com/media/513478_2be535774adb4203b7ad0d6d431fcb4d~mv2.jpg/v1/fill/w_350,h_430,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Table%20trigger%20list.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](https://static.wixstatic.com/media/513478_b0741986547e4ae699db259f6ecc47e4~mv2.jpg/v1/fill/w_350,h_429,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Table%20size.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](https://static.wixstatic.com/media/513478_5dbc4e70e81b42829a487579bbf7d90c~mv2.jpg/v1/fill/w_350,h_431,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20View%20list%20in%20database%20MSSQL.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](https://static.wixstatic.com/media/513478_b46cd6d141f94e2299594a3b7ababb9d~mv2.jpg/v1/fill/w_350,h_426,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Synonym%20list%20in%20database%20MS.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](https://static.wixstatic.com/media/513478_b6021f6206e442d38f3364a64044c290~mv2.jpg/v1/fill/w_350,h_435,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Procedure%20list%20in%20database%20.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](https://static.wixstatic.com/media/513478_b4bd5c25f7c84c7e99516a5216d01600~mv2.jpg/v1/fill/w_350,h_435,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Function%20list%20in%20database%20M.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](https://static.wixstatic.com/media/513478_003bf7f26996438490f36e9a20232dba~mv2.jpg/v1/fill/w_350,h_530,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/%5BCerebroSQL%5D%20Trigger%20list%20in%20database%20MS.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 - сформировать и добавить в редактор текст команды на создание тр