User Guide
Complete guide for users of SQL Cor: every button, every field, every message explained.
Who this guide is for
This guide is for anyone who uses SQL Cor to run SQL queries — administrators,
analysts, power users. It assumes you know basic SQL (SELECT, WHERE, JOIN).
You don’t need to be a database expert — SQL Cor has safety mechanisms that prevent
most accidents.
If you are configuring SQL Cor for your team (access rules, blacklist, limits), see Admin Guide instead.
For a quick one-page reference of all buttons, see Feature Reference. For all keyboard shortcuts, see Keyboard Shortcuts. For all system messages and what they mean, see Message Reference.
Opening SQL Cor
- Log in to Creatio
- Open the main navigation menu (top-left)
- Click SQL Terminal in the list
If you don’t see SQL Terminal: you either haven’t been granted access, or need
to refresh your browser (Ctrl + Shift + R). Contact your administrator.
Page layout overview
The SQL Terminal page has six zones:

Header
The header runs across the top. The right side contains four controls.

Administration button
| Property | Detail |
|---|---|
| Visible to | System administrators only |
| Hidden from | Regular users — this button does not appear for non-admins |
| What it does | Switches to the Administration panel |
| Editor preserved? | Yes — your current query stays in the editor when you switch back |
Theme toggle
| Property | Detail |
|---|---|
| Options | Dark theme (default) / Light theme |
| Applies to | Entire SQL Cor interface |
| Saved | In browser localStorage — persists after refresh and new sessions |
| Per device | Yes — each browser/device has its own saved preference |

Language button
| Property | Detail |
|---|---|
| Options | Ukrainian / English |
| What changes | All UI labels, button text, hints, and messages |
| What does NOT change | Database content, SQL keywords, DB engine error messages |
| Applies immediately | Yes — no page reload needed |
| Saved | In browser localStorage |
About button
| Property | Detail |
|---|---|
| What it opens | ABOUT modal window |
| Contents | Package version number, key features list (Secure access · Audit trail · Role-based), contact info |
| How to close | Click outside the modal, or press Escape |

Toolbar
The toolbar sits below the header and contains four controls.


Execute button
Purpose: Sends your SQL to the backend and runs it.
Keyboard shortcuts: F5 · Ctrl + Enter · Cmd + Enter
What happens when you click Execute:
1. SQL is sent to the backend2. Backend checks your access level3. Backend checks blacklist4. Backend checks operation type vs your access level5. If all checks pass → query runs against the database6. Results appear in the Results panel7. Footer latency updatesSpecial case — DELETE without Dry Run:
If your query contains DELETE and Dry Run is OFF, a confirmation dialog appears
before execution. See Destructive Operation Dialog.

If your query is blocked: An error message appears in the Results panel explaining why (blacklist match, access level, etc.).
Clear button
Purpose: Empties the editor and returns focus to it.
| What is cleared | What is NOT cleared |
|---|---|
| Editor content | Results panel |
| Editor undo history | Footer statistics |
| Smart Hints | |
localStorage autosave (may restore on refresh) |
Dry Run toggle

Purpose: Enables safe testing mode — runs your query in a transaction that is always rolled back.
Visual: Button appears highlighted/active when Dry Run is ON.
How Dry Run works technically:
1. Backend opens a database transaction2. Your query executes INSIDE the transaction (for real)3. Backend collects results (row count, errors, constraint violations)4. Transaction is ALWAYS ROLLED BACK — no changes committed5. You see accurate results as if the query ran permanentlyWhat this means:
| Aspect | What happens in Dry Run |
|---|---|
| Row count | Accurate — shows actual rows that would be affected |
| Error detection | Real — constraint violations, syntax errors surface correctly |
| Data changes | None — everything is rolled back |
| Database triggers | May fire (this is normal for transaction-based testing) |
| SELECT queries | Same result as without Dry Run — no difference |
When to use Dry Run:
- Before any
UPDATEorDELETEthat affects multiple rows - When testing a complex
INSERTfor constraint violations - When you’re uncertain about your
WHEREclause scope - Any time you want to know “how many rows would this affect?”

Database indicator
Purpose: Shows the name of the database SQL Cor is connected to.
Example: Production_DB_Main
Is it clickable? No — information only. You cannot switch databases.
Why it matters: In organizations with multiple Creatio environments (production, staging, test), this confirms which environment you’re currently querying.
Editor
The editor is where you write SQL. It has several built-in features.

Syntax highlighting
| Element | Color (dark theme) |
|---|---|
SQL keywords (SELECT, FROM, WHERE…) | Cyan / Blue |
String literals ('value') | Orange / Yellow |
Comments (-- or /* */) | Gray |
| Numbers | Green |
| Table / column names | White |
Line numbers
Displayed automatically on the left. Updates as you type.
Tab indentation
Pressing Tab inserts indentation — useful for formatting multi-line queries.
Autosave
The editor saves your current query to localStorage automatically as you type.
If you refresh the page or navigate away and return, your last query is restored.
Keyboard shortcuts
| Shortcut | Action |
|---|---|
F5 | Execute query |
Ctrl + Enter / Cmd + Enter | Execute query |
Tab | Insert indentation |
Ctrl + A / Cmd + A | Select all text |
Ctrl + Z / Cmd + Z | Undo |
Ctrl + Y / Cmd + Y | Redo |
Ctrl + / / Cmd + / | Comment / uncomment line |
PostgreSQL identifier quoting — important
Creatio uses Pascal-case table names (Contact, Account). PostgreSQL lowercases
unquoted identifiers. Always use double quotes:
-- WRONG (PostgreSQL sees "contact" — doesn't exist):SELECT * FROM Contact;
-- CORRECT:SELECT * FROM "Contact";SQL Cor’s Smart Hints will remind you automatically if this error occurs.
ReadOnly user restriction — multi-statement queries
If your access level is ReadOnly, queries containing a semicolon separating multiple statements are rejected entirely to prevent injection-style escalation:
-- Rejected for ReadOnly users:SELECT 1; DROP TABLE "Contact";
-- Allowed — single statement only:SELECT * FROM "Contact" LIMIT 10;Smart Hints
Smart Hints is a yellow information bar that appears above the Results panel when SQL Cor detects a specific error pattern or query issue. It suggests a fix and offers to correct your query automatically.

How Smart Hints works
Smart Hints appears automatically after query execution — you don’t activate it manually. It analyzes the error or query and shows a relevant tip.
Each hint may include an INSERT INTO EDITOR button that replaces your current query with a corrected template.
Hint 1 — Case-sensitive table name (PostgreSQL)
Triggered when: Error “relation X does not exist” and table written without quotes.
Message: “PostgreSQL is case-sensitive. Try wrapping the table name in double
quotes: "Account"”
INSERT INTO EDITOR: Rewrites query with quoted table name.
-- Before: SELECT * FROM Account;-- After: SELECT * FROM "Account";Hint 2 — TOP vs LIMIT syntax
Triggered when: Query contains SELECT TOP N (MSSQL syntax).
Message: “On PostgreSQL, use LIMIT instead of TOP. Example: SELECT * FROM “Table” LIMIT 10”
INSERT INTO EDITOR: Converts SELECT TOP N to SELECT ... LIMIT N.
-- Before: SELECT TOP 10 * FROM "Contact";-- After: SELECT * FROM "Contact" LIMIT 10;Hint 3 — Permission error
Triggered when: Query fails with a database-level “permission denied”.
Message: “Permission error. Check your access level in Administration → Access Control.”
No INSERT INTO EDITOR — this is informational only.
What to do: Contact your administrator to request a higher access level.
Hint 4 — Ambiguous column reference
Triggered when: Error “column reference X is ambiguous” (typically in JOINs).
Message: “Column is ambiguous. Add the table alias prefix: t."ColumnName"”
INSERT INTO EDITOR: Provides a corrected query template with table aliases.
-- Before: SELECT "Name" FROM "Contact" JOIN "Account" ON ...-- After: SELECT c."Name" FROM "Contact" c JOIN "Account" a ON ...Dismissing Smart Hints
Smart Hints disappears when:
- You execute a new successful query
- You clear the editor
Results panel
The Results panel shows your query output.

Data table (SELECT queries)
| Data type | Display |
|---|---|
NULL values | Italic NULL text |
Boolean TRUE | Green highlight |
Boolean FALSE | Red highlight |
| Numbers | Right-aligned |
| Text | Left-aligned |
| Long text | Truncated ... (hover for full value) |
Row limit notice: If results are truncated by the Max Rows setting, you see:
“Results limited to X rows. Use LIMIT in your query for precise control.”
Meta information
Displayed below the table:
- SELECT: “X rows returned in Y ms”
- DML: “X rows changed in Y ms”
Export button
| Property | Detail |
|---|---|
| File format | CSV |
| File name | Auto-generated with timestamp: sqlcor_export_YYYYMMDD_HHMMSS.csv |
| Contents | All visible rows + column headers |
| Available when | After a successful SELECT that returned rows |
| NOT available for | DML results, DDL results, empty result sets, error states |
| Limitation | Exports only rows shown (respects Max Rows limit) |
Footer (Status bar)
The footer runs across the bottom of the page with four real-time indicators.
![]()
Status indicator
| Indicator | State | Meaning |
|---|---|---|
| 🟢 Green | Connected | Database reachable |
| 🔴 Red | Disconnected | Database unavailable |
| 🟡 Yellow | Checking | Connection being tested |
If red: try Check Connection in Admin → System Settings, or contact your admin.
Latency (ms)
Time of the last executed query in milliseconds. Updates after each execution.
Typical ranges:
- 50–300ms: Normal
- 300–2000ms: Complex query or moderate DB load
- 2000ms+: Heavy query — consider optimizing or contacting admin
Memory (Mem %)
JavaScript heap memory usage in the browser, as a percentage.
| Range | Meaning |
|---|---|
| Below 60% | Normal |
| 60–80% | Browser working hard — consider refreshing if slow |
| Above 80% | High memory — refresh the page |
This reflects browser memory only, not server or database memory.
Session timer
Time elapsed since you opened SQL Terminal this session.
Format: HH:MM:SS. Resets on page refresh, tab close, or logout.
Dialogs and popups
Destructive Operation dialog
Appears when:
- Your query contains
DELETE - Dry Run is OFF
Purpose: Mandatory confirmation before permanent data deletion.
| Button | Action |
|---|---|
| Confirm | Executes the DELETE query |
| Cancel | Closes dialog — query is NOT executed, editor stays as-is |
Best practice: Always use Dry Run first to verify row count, then disable Dry Run and execute with Confirm.
Access levels — rules and restrictions
Your administrator assigns your access level. Here’s what each level allows.
ReadOnly
| Feature | Behavior |
|---|---|
SELECT | ✅ Allowed |
INSERT / UPDATE / DELETE | ❌ Blocked |
CREATE / ALTER / DROP | ❌ Blocked |
| Auto-LIMIT injection | ✅ Applied if you don’t write LIMIT |
Multi-statement queries (;) | ❌ Rejected entirely |
| Dry Run | ✅ Available (though no practical effect on SELECT) |
Error when trying DML:
“Access denied. Your access level is Read-only. This operation requires DML access.”
DML
| Feature | Behavior |
|---|---|
SELECT | ✅ Allowed |
INSERT / UPDATE / DELETE | ✅ Allowed |
CREATE / ALTER / DROP | ❌ Blocked |
| Destructive Operation dialog | ✅ Shown for DELETE without Dry Run |
| System table protection | ✅ Cannot modify DnSql* tables |
| Blacklist rules | ✅ Enforced |
DDL
| Feature | Behavior |
|---|---|
SELECT / DML | ✅ Allowed |
CREATE / ALTER / DROP | ✅ Allowed on non-system tables |
| Hardcoded blocked operations | ❌ Still blocked (no exceptions) |
| System table protection | ✅ Cannot modify DnSql* tables |
| Blacklist rules | ✅ Enforced |
Security rules
Hardcoded blocks — always blocked for everyone
These operations cannot be executed by anyone, at any access level, under any configuration:
| Blocked operation | Reason |
|---|---|
xp_cmdshell | SQL Server shell execution |
pg_read_file | Reading files from the server filesystem |
pg_sleep | Intentional DB process blocking |
pg_terminate_backend | Killing database connections |
OPENROWSET | External data source access |
DROP DATABASE | Catastrophic data loss |
DnSql* table modifications | Protecting SQL Cor’s own config tables |
Error when hitting a hardcoded block:
“This query is blocked by the system. Reason: [description]“
Literal masking (invisible to you, but important)
Before checking your query against blacklist patterns, the backend masks all content inside single quotes (string literals). This means:
-- This query is SAFE — the word DROP is inside a string literal-- SQL Cor's parser correctly identifies it as just a text valueSELECT * FROM "Contact" WHERE "Notes" = 'DROP TABLE example';You don’t need to do anything special — this protection is automatic.
Audit logging
The log records: who ran it · when · full query text · result status · row count / error · whether it was a Dry Run
Maintenance Mode
If maintenance mode is active, you’ll see a custom message from your administrator when trying to execute:
“[Administrator’s message, e.g.: ‘Database update in progress until 14:00’]”
What to do: Wait and try again later. Query execution is disabled for all non-admin users during maintenance mode.
Common tasks
Run a basic SELECT
SELECT "Name", "Email", "Phone"FROM "Contact"WHERE "IsActive" = trueLIMIT 20;Safely test a DELETE
- Turn ON Dry Run ( button highlights)
- Write your DELETE query
- Execute → check row count in results
- If count is correct: turn OFF Dry Run → execute again
- Confirm in the Destructive Operation dialog
Find recently created records
SELECT "Name", "CreatedOn"FROM "Contact"WHERE "CreatedOn" > NOW() - INTERVAL '7 days'ORDER BY "CreatedOn" DESCLIMIT 50;Export results to CSV
- Run a SELECT query
- Click Export in the results panel
- CSV file downloads automatically
Look up table column names
SELECT column_name, data_type, is_nullableFROM information_schema.columnsWHERE table_name = 'Contact' AND table_schema = 'public'ORDER BY ordinal_position;Find your access level
SELECT "AccessLevel", "ValidUntil", "Comment"FROM "DnSqlAccessRule"WHERE "UserId" = ( SELECT "Id" FROM "SysAdminUnit" WHERE "Name" = 'your_login_here');JOIN two tables
SELECT c."Name" AS "Contact", a."Name" AS "Account"FROM "Contact" cJOIN "Account" a ON a."Id" = c."AccountId"LIMIT 20;Getting help
| Need | Where to go |
|---|---|
| Something doesn’t work | Troubleshooting |
| Need higher access level | Contact your SQL Cor administrator |
| Found a bug | GitHub Issues |
| Feature request | GitHub Issues |
| Consulting / implementation | DM Artem on LinkedIn |
SQL Cor — Secure SQL Workbench for Creatio. Free and open source. License: MIT.
Повна інструкція для користувачів SQL Cor: кожна кнопка, кожне поле, кожне повідомлення.
Для кого ця інструкція
Ця інструкція для всіх хто використовує SQL Cor для виконання SQL-запитів —
адміністраторів, аналітиків, досвідчених користувачів. Передбачається базове
знання SQL (SELECT, WHERE, JOIN). Не потрібно бути експертом з БД —
SQL Cor має вбудовані механізми безпеки що запобігають більшості помилок.
Якщо ви налаштовуєте SQL Cor для команди (правила доступу, чорний список, ліміти) — дивіться Admin Guide замість цього.
Швидка довідка по кнопках: Feature Reference. Гарячі клавіші: Keyboard Shortcuts. Повідомлення та їх значення: Message Reference.
Відкриття SQL Cor
- Увійдіть у Creatio
- Відкрийте головне меню навігації (лівий верхній кут)
- Натисніть SQL Terminal у списку
Якщо SQL Terminal відсутній у меню: або вам не надано доступу, або треба
оновити браузер (Ctrl + Shift + R). Зверніться до адміністратора.
Загальна структура сторінки
Сторінка SQL Terminal має шість зон:

Заголовок
Заголовок розміщений зверху. Права частина містить чотири елементи управління.

Кнопка Адміністрування
| Властивість | Деталь |
|---|---|
| Кому видно | Лише системним адміністраторам |
| Приховано від | Звичайних користувачів — кнопка взагалі не відображається |
| Що робить | Перемикає на панель Адміністрування |
| Редактор зберігається? | Так — ваш поточний запит залишається при поверненні |
Перемикач теми
| Властивість | Деталь |
|---|---|
| Варіанти | Темна тема (за замовчуванням) / Світла тема |
| Застосовується до | Всього інтерфейсу SQL Cor |
| Зберігається | У localStorage браузера — зберігається після оновлення та нових сесій |
| Окремо для кожного пристрою | Так — кожен браузер/пристрій має свої налаштування |

Перемикач мови
| Властивість | Деталь |
|---|---|
| Варіанти | Українська / Англійська |
| Що змінюється | Всі підписи UI, текст кнопок, підказки та повідомлення |
| Що НЕ змінюється | Вміст БД, ключові слова SQL, повідомлення про помилки від БД |
| Застосовується одразу | Так — перезавантаження не потрібне |
| Зберігається | У localStorage браузера |
Кнопка “Про додаток”
| Властивість | Деталь |
|---|---|
| Що відкриває | Модальне вікно ABOUT |
| Вміст | Номер версії пакета, список ключових можливостей (Secure access · Audit trail · Role-based), контактна інформація |
| Як закрити | Клацніть поза вікном або натисніть Escape |

Панель інструментів
Панель інструментів розміщена під заголовком і містить чотири елементи.

Кнопка “Виконати”
Призначення: Надсилає SQL на бекенд і виконує його.
Гарячі клавіші: F5 · Ctrl + Enter · Cmd + Enter
Що відбувається при натисканні “Виконати”:
1. SQL надсилається на бекенд2. Бекенд перевіряє ваш рівень доступу3. Бекенд перевіряє чорний список4. Бекенд перевіряє тип операції відповідно до рівня доступу5. Якщо всі перевірки пройдено → запит виконується в БД6. Результати відображаються в панелі результатів7. Затримка в статусному рядку оновлюєтьсяОсобливий випадок — DELETE без Dry Run:
Якщо запит містить DELETE і Dry Run вимкнено, з’являється діалог підтвердження
перед виконанням. Дивіться Діалог небезпечної операції.

Якщо запит заблоковано: У панелі результатів з’явиться повідомлення про помилку з поясненням причини (збіг з чорним списком, рівень доступу тощо).
Кнопка “Очистити”
Призначення: Очищає редактор і повертає фокус до нього.
| Що очищається | Що НЕ очищається |
|---|---|
| Вміст редактора | Панель результатів |
| Історія Undo/Redo редактора | Статистика статусного рядка |
| Smart Hints | |
Автозбереження в localStorage (може відновитися при оновленні) |
Перемикач Dry Run

Призначення: Вмикає режим безпечного тестування — виконує запит у транзакції, яка завжди відкочується.
Візуально: Кнопка виглядає виділеною/активною коли Dry Run увімкнено.
Як Dry Run працює технічно:
1. Бекенд відкриває транзакцію бази даних2. Ваш запит виконується ВСЕРЕДИНІ транзакції (реально)3. Бекенд збирає результати (кількість рядків, помилки, порушення обмежень)4. Транзакція ЗАВЖДИ ВІДКОЧУЄТЬСЯ — зміни не зберігаються5. Ви бачите точні результати немов запит виконався постійноЩо це означає на практиці:
| Аспект | Поведінка в Dry Run |
|---|---|
| Кількість рядків | Точна — показує реальні рядки що були б зачеплені |
| Виявлення помилок | Реальне — порушення обмежень, синтаксичні помилки виявляються |
| Зміни даних | Відсутні — все відкочується |
| Тригери бази даних | Можуть спрацювати (це нормально для транзакційного тестування) |
| SELECT-запити | Такий самий результат як без Dry Run — різниці немає |
Коли використовувати Dry Run:
- Перед будь-яким
UPDATEабоDELETEщо зачіпає кілька рядків - При тестуванні складного
INSERTна порушення обмежень - Коли не впевнені в масштабі своєї умови
WHERE - Коли хочете знати “скільки рядків це зачепить?”

Індикатор бази даних
Призначення: Показує назву бази даних до якої підключений SQL Cor.
Приклад: Production_DB_Main
Чи можна натиснути? Ні — лише інформація. Перемкнути БД не можна.
Навіщо це важливо: В організаціях з кількома середовищами Creatio (production, staging, test) це підтверджує яке середовище ви зараз запитуєте.
Редактор
Редактор — головна текстова область де пишеться SQL.

Підсвічування синтаксису
| Елемент | Колір (темна тема) |
|---|---|
Ключові слова SQL (SELECT, FROM, WHERE…) | Блакитний / Синій |
Рядкові літерали ('значення') | Помаранчевий / Жовтий |
Коментарі (-- або /* */) | Сірий |
| Числа | Зелений |
| Назви таблиць / стовпців | Білий |
Нумерація рядків
Відображається автоматично зліва. Оновлюється під час введення.
Відступи Tab
Натискання Tab вставляє відступ — корисно для форматування багаторядкових запитів.
Автозбереження
Редактор автоматично зберігає поточний запит у localStorage під час введення.
При оновленні сторінки або поверненні на неї — останній запит відновлюється.
Гарячі клавіші
| Комбінація | Дія |
|---|---|
F5 | Виконати запит |
Ctrl + Enter / Cmd + Enter | Виконати запит |
Tab | Вставити відступ |
Ctrl + A / Cmd + A | Виділити весь текст |
Ctrl + Z / Cmd + Z | Відмінити |
Ctrl + Y / Cmd + Y | Повторити |
Ctrl + / / Cmd + / | Закоментувати / розкоментувати рядок |
Лапки в PostgreSQL — важливо!
Creatio використовує назви таблиць з великої літери (Contact, Account).
PostgreSQL переводить назви без лапок у нижній регістр. Завжди використовуйте
подвійні лапки:
-- НЕПРАВИЛЬНО (PostgreSQL бачить "contact" — не існує):SELECT * FROM Contact;
-- ПРАВИЛЬНО:SELECT * FROM "Contact";Smart Hints автоматично нагадає про це при відповідній помилці.
Обмеження для ReadOnly — мультизапити
Якщо ваш рівень доступу ReadOnly, запити що містять крапку з комою між кількома інструкціями відхиляються повністю:
-- Відхиляється для ReadOnly-користувачів:SELECT 1; DROP TABLE "Contact";
-- Дозволено — лише одна інструкція:SELECT * FROM "Contact" LIMIT 10;Smart Hints (розумні підказки)
Smart Hints — це жовта інформаційна панель що з’являється над панеллю результатів коли SQL Cor виявляє певний патерн помилки або проблему в запиті. Підказка пропонує виправлення і кнопку автоматичного виправлення.

Як працюють Smart Hints
З’являються автоматично після виконання запиту — вручну активувати не потрібно. Система аналізує помилку або запит і показує відповідну підказку.
Кожна підказка може мати кнопку ВСТАВИТИ В РЕДАКТОР що замінює поточний запит на виправлений шаблон.
Підказка 1 — Чутливість до регістру (PostgreSQL)
Спрацьовує коли: Помилка “relation X does not exist” і назва таблиці без лапок.
Повідомлення: “PostgreSQL чутливий до регістру. Спробуйте взяти назву таблиці
в подвійні лапки: "Account"”
ВСТАВИТИ В РЕДАКТОР: Переписує запит з назвою таблиці в лапках.
-- До: SELECT * FROM Account;-- Після: SELECT * FROM "Account";Підказка 2 — TOP проти LIMIT
Спрацьовує коли: Запит містить SELECT TOP N (синтаксис MSSQL).
Повідомлення: “На PostgreSQL використовуйте LIMIT замість TOP. Приклад: SELECT * FROM “Table” LIMIT 10”
ВСТАВИТИ В РЕДАКТОР: Конвертує SELECT TOP N на SELECT ... LIMIT N.
-- До: SELECT TOP 10 * FROM "Contact";-- Після: SELECT * FROM "Contact" LIMIT 10;Підказка 3 — Помилка доступу
Спрацьовує коли: Запит завершується помилкою “permission denied” на рівні БД.
Повідомлення: “Помилка доступу. Перевірте ваш рівень доступу в Адміністрування → Контроль доступу.”
Кнопки немає — лише інформаційна підказка.
Що робити: Зверніться до адміністратора щодо підвищення рівня доступу.
Підказка 4 — Неоднозначне посилання на стовпець
Спрацьовує коли: Помилка “column reference X is ambiguous” (зазвичай у JOIN-ах).
Повідомлення: “Стовпець неоднозначний. Додайте префікс аліасу таблиці: t."ColumnName"”
ВСТАВИТИ В РЕДАКТОР: Надає виправлений шаблон запиту з аліасами таблиць.
-- До: SELECT "Name" FROM "Contact" JOIN "Account" ON ...-- Після: SELECT c."Name" FROM "Contact" c JOIN "Account" a ON ...Зникнення Smart Hints
Smart Hints зникає коли:
- Ви виконуєте новий успішний запит
- Ви очищуєте редактор
Панель результатів
Панель результатів показує вивід вашого запиту.

Таблиця даних (для SELECT-запитів)
| Тип даних | Відображення |
|---|---|
Значення NULL | Курсив текст NULL |
Boolean TRUE | Зелене підсвічування |
Boolean FALSE | Червоне підсвічування |
| Числа | Вирівнювання по правому краю |
| Текст | Вирівнювання по лівому краю |
| Довгий текст | Обрізається ... (наведіть для повного значення) |
Повідомлення про ліміт рядків: Якщо результати обрізані налаштуванням “Max Rows”, з’являється:
“Результати обмежено до X рядків. Використовуйте LIMIT у запиті для точного контролю.”
Мета-інформація
Відображається під таблицею:
- SELECT: “Повернено X рядків за Y мс”
- DML: “Змінено X рядків за Y мс”
Кнопка “Експорт”
| Властивість | Деталь |
|---|---|
| Формат файлу | CSV |
| Назва файлу | Автогенерується з часовою міткою: sqlcor_export_YYYYMMDD_HHMMSS.csv |
| Вміст | Всі видимі рядки + заголовки стовпців |
| Доступна коли | Після успішного SELECT що повернув рядки |
| НЕ доступна для | Результатів DML, DDL, порожніх результатів, станів помилки |
| Обмеження | Експортує лише показані рядки (відповідно до ліміту Max Rows) |
Статусний рядок (Footer)
Статусний рядок розміщений внизу сторінки і показує чотири індикатори в реальному часі.
![]()
Індикатор стану з’єднання
| Індикатор | Стан | Значення |
|---|---|---|
| 🟢 Зелений | Підключено | База даних доступна |
| 🔴 Червоний | Відключено | База даних недоступна |
| 🟡 Жовтий | Перевірка | З’єднання тестується |
Якщо червоний: спробуйте “Check Connection” у Адміністрування → Системні налаштування, або зверніться до адміністратора.
Затримка (мс)
Час виконання останнього запиту в мілісекундах. Оновлюється після кожного виконання.
Типові значення:
- 50–300мс: Норма
- 300–2000мс: Складний запит або навантаження на БД
- 2000мс+: Важкий запит — розгляньте оптимізацію або зверніться до адміна
Пам’ять (Mem %)
Використання JavaScript heap-пам’яті браузера у відсотках.
| Діапазон | Значення |
|---|---|
| Нижче 60% | Нормально |
| 60–80% | Браузер навантажений — розгляньте оновлення при уповільненні |
| Вище 80% | Висока пам’ять — оновіть сторінку |
Відображає пам’ять браузера, а не сервера чи бази даних.
Таймер сесії
Час що минув від відкриття SQL Terminal у поточній сесії.
Формат: ГГ:ХХ:СС. Скидається при оновленні сторінки, закритті вкладки або виході.
Діалоги та спливаючі вікна
Діалог небезпечної операції
З’являється коли:
- Ваш запит містить
DELETE - Dry Run вимкнено
Призначення: Обов’язкове підтвердження перед постійним видаленням даних.
| Кнопка | Дія |
|---|---|
| Підтвердити (Confirm) | Виконує DELETE-запит |
| Відхилити (Cancel) | Закриває діалог — запит НЕ виконується, редактор залишається як є |
Найкраща практика: Завжди спочатку використовуйте Dry Run для перевірки кількості рядків, потім вимикайте Dry Run і виконуйте з підтвердженням.
Рівні доступу — правила та обмеження
Ваш адміністратор призначає рівень доступу. Ось що дозволяє кожен рівень.
ReadOnly
| Функція | Поведінка |
|---|---|
SELECT | ✅ Дозволено |
INSERT / UPDATE / DELETE | ❌ Заблоковано |
CREATE / ALTER / DROP | ❌ Заблоковано |
| Автоматичне додавання LIMIT | ✅ Застосовується якщо ви не написали LIMIT |
Мультизапити (;) | ❌ Відхиляються повністю |
| Dry Run | ✅ Доступно (хоча немає практичного ефекту для SELECT) |
Помилка при спробі DML:
“Access denied. Your access level is Read-only. This operation requires DML access.”
DML
| Функція | Поведінка |
|---|---|
SELECT | ✅ Дозволено |
INSERT / UPDATE / DELETE | ✅ Дозволено |
CREATE / ALTER / DROP | ❌ Заблоковано |
| Діалог небезпечної операції | ✅ З’являється для DELETE без Dry Run |
| Захист системних таблиць | ✅ Не можна змінювати таблиці DnSql* |
| Правила чорного списку | ✅ Застосовуються |
DDL
| Функція | Поведінка |
|---|---|
SELECT / DML | ✅ Дозволено |
CREATE / ALTER / DROP | ✅ Дозволено для несистемних таблиць |
| Хардкодні заблоковані операції | ❌ Все одно заблоковано (без винятків) |
| Захист системних таблиць | ✅ Не можна змінювати таблиці DnSql* |
| Правила чорного списку | ✅ Застосовуються |
Правила безпеки
Хардкодні блокування — завжди заблоковано для всіх
Ці операції не може виконати ніхто, при будь-якому рівні доступу, за будь-яких налаштувань:
| Заблокована операція | Причина |
|---|---|
xp_cmdshell | Виконання команд SQL Server у системі |
pg_read_file | Читання файлів з файлової системи сервера |
pg_sleep | Навмисне блокування процесу БД |
pg_terminate_backend | Знищення з’єднань з базою даних |
OPENROWSET | Доступ до зовнішніх джерел даних |
DROP DATABASE | Катастрофічна втрата даних |
Зміни таблиць DnSql* | Захист власних конфігураційних таблиць SQL Cor |
Помилка при хардкодному блокуванні:
“This query is blocked by the system. Reason: [опис]“
Маскування літералів (автоматично, невидимо для вас)
Перед перевіркою запиту на патерни чорного списку, бекенд маскує весь вміст у одинарних лапках (рядкові літерали). Це означає:
-- Цей запит БЕЗПЕЧНИЙ — слово DROP знаходиться в рядковому літералі-- Парсер SQL Cor правильно визначає його як просто текстове значенняSELECT * FROM "Contact" WHERE "Notes" = 'DROP TABLE example';Від вас нічого не потрібно — цей захист автоматичний.
Аудит-логування
Кожен запит логується — успішний, невдалий або заблокований. Лог містить:
- Хто виконав (ваш обліковий запис Creatio)
- Коли (часова мітка)
- Повний текст запиту
- Статус результату (Успіх / Помилка / Заблоковано)
- Кількість рядків / повідомлення про помилку
- Чи був це Dry Run
Адміністратори можуть переглядати цей лог у Адміністрування → Журнал виконання.
Режим обслуговування
Якщо адміністратор увімкнув Режим обслуговування, при спробі виконати запит ви побачите кастомне повідомлення від адміністратора:
“[Повідомлення адміністратора, наприклад: ‘Оновлення БД до 14:00. Спробуйте пізніше.’]”
Що робити: Зачекайте і спробуйте пізніше. Виконання запитів тимчасово відключено для всіх користувачів крім системних адміністраторів.
Типові завдання
Простий SELECT-запит
SELECT "Name", "Email", "Phone"FROM "Contact"WHERE "IsActive" = trueLIMIT 20;Безпечне тестування DELETE
- Увімкніть Dry Run (кнопка ⚖️ виділяється)
- Напишіть DELETE-запит
- Виконайте → перевірте кількість рядків у результатах
- Якщо кількість правильна: вимкніть Dry Run → виконайте знову
- Підтвердьте у діалозі небезпечної операції
Знайти нещодавно створені записи
SELECT "Name", "CreatedOn"FROM "Contact"WHERE "CreatedOn" > NOW() - INTERVAL '7 days'ORDER BY "CreatedOn" DESCLIMIT 50;Експорт результатів у CSV
- Виконайте SELECT-запит
- Натисніть Експорт у панелі результатів
- CSV-файл завантажиться автоматично
Дізнатися свій рівень доступу
SELECT "AccessLevel", "ValidUntil", "Comment"FROM "DnSqlAccessRule"WHERE "UserId" = ( SELECT "Id" FROM "SysAdminUnit" WHERE "Name" = 'ваш_логін');Переглянути стовпці таблиці
SELECT column_name, data_type, is_nullableFROM information_schema.columnsWHERE table_name = 'Contact' AND table_schema = 'public'ORDER BY ordinal_position;JOIN двох таблиць
SELECT c."Name" AS "Контакт", a."Name" AS "Акаунт"FROM "Contact" cJOIN "Account" a ON a."Id"