Professional, Secure, and Fast SQL Orchestration Across Server Fleets (v3.2.0).
Podręcznik Użytkownika
Profesjonalna, bezpieczna i szybka orkiestracja SQL na flotach serwerów (v3.2.0).
🎥 Quick Video Demos
🎥 Wideo Demonstracje
Core Workflow: Connect & Execute
Watch how to add a server, load databases into the interactive tree, select target databases, and launch a sequential script package.
Podstawowy Przepływ Pracy
Zobacz jak szybko zarejestrować serwer, załadować bazy do drzewa eksploratora, zaznaczyć cele i uruchomić pakiet plików SQL.
Safely Test with Transactional Dry-Run
Learn how to safely deploy scripts to production databases with the PRO Dry-Run simulation, testing integrity while ensuring a 100% rollback.
Bezpieczne Testy z Trybem Dry-Run
Sprawdź jak tryb Dry-Run symuluje wdrożenia w ramach automatycznych transakcji SQL, gwarantując pełny rollback i zerowe ryzyko uszkodzenia danych.
Parallel vs Sequential Engine
Compare performance and witness massive execution time savings when running scripts simultaneously across multi-threaded database pipelines.
Równoległe vs Sekwencyjne Wykonywanie
Porównaj czasy wykonania i zobacz olbrzymią oszczędność czasu dzięki wielowątkowemu uruchamianiu skryptów na całych flotach baz danych naraz.
01
🖥️ Chapter 1: Managing Servers and Environments
The application's configuration panel (accessible by clicking the Settings ▼ icon in the top-right corner) is the heart of database infrastructure management.
1.1 Adding and Editing Servers
To register a new SQL Server instance, enter the following parameters in the Server Details section:
Server Name (ServerName): The network address of the instance (e.g., localhost, SERVER_NAME\INSTANCE, an IP address, or a port like 192.168.1.100,1433).
Description (lblDescription): A friendly label to help identify the machine (e.g., "Main Production Database - ERP").
Authentication Type:
Windows Authentication: Uses the credentials of the currently logged-in Windows user (Integrated Security/SSPI). The login and password fields are automatically disabled in this mode.
SQL Server Authentication: Requires a dedicated database account (e.g., sa) and its password.
Environment (Environment): Assigns the server to an environment group for logical segregation and improved visual safety.
Always test the connection
Before clicking the Add button, use the Test option to verify the network connection to the SQL Server. This prevents adding invalid or unreachable configurations.
Edition Limits:
FREE Edition: A maximum of 10 servers can be added to the configuration.
PRO Edition:No limit on the number of servers.
Sorting: Registered servers in the configuration list are always sorted alphabetically (A–Z).
1.2 Managing Environments
Environments are used to logically group servers and assign color-coded labels to them:
Default Configuration: The application starts with three pre-configured environments: PROD (Production), TEST (Testing), and DEV (Development).
Customization: Users can add new environments, edit their names, pick custom colors (Hex Color), and reorder them in the explorer tree using the Up/Down buttons.
Visual Safety: The environment color selected (e.g., a bright red for PROD) is displayed as an information banner at the top of the application when production servers are selected, drastically reducing the risk of accidentally deploying a test script to production databases.
Bulk Assignment: From the server list in the configuration, you can select multiple servers and use the right-click context menu to bulk-assign them to a chosen environment, or delete them all at once.
FREE LIMITS
Max 10 Registered Servers
Max 3 Environments
Standard Hex Colors
PRO LIMITS
Unlimited Registered Servers
Unlimited Custom Environments
Bulk Right-Click Operations
1.3 Database Patterns
Definition: In the configuration window, users can define a list of keywords called "patterns" (e.g., Test, Backup, Client).
Application: After loading the database list in the explorer, clicking the database icon or selecting the relevant option from the context menu will automatically and instantly select all databases whose names contain the defined pattern (e.g., the pattern Test will select Clients_Test, TestDatabase, TestDB). This feature eliminates the need to manually tick dozens of databases across multiple servers.
1.4 Global Database Discovery Query
Role: This is the SQL statement sent to servers during an explorer refresh to retrieve the list of databases. The default content is:
discovery.sql
SELECT * FROM master.sys.databases WHERE state_desc = 'ONLINE'ORDERBY name
Modification: You can customize the query content (e.g., to fetch databases with a specific collation). The ScriptDom security system (Chapter 7) validates every entered query, guaranteeing that it is 100% safe for the servers.
Discovery Query Recommendation
Filtering databases within the Discovery Query itself (e.g., appending WHERE name NOT IN (...)) is an outdated approach and is not recommended. The dedicated Exclusion Manager should be used for hiding databases.
02
🔍 Chapter 2: Advanced Filtering and the Exclusion Manager
The Database Exclusion Manager in SQLSkrypter protects against accidentally deploying scripts to system, administrative, or sensitive databases, and keeps the explorer clean. It is opened via the Manage button below the exclusion list in the configuration tab.
2.1 Exclusion Rule Structure
An exclusion rule consists of three parts:
Server Name: Specifies which server the rule applies to. Entering a wildcard * makes the rule global, applying to all registered servers.
Database Name: The name or text pattern of the database (e.g., master).
Match Type (ExclusionMatchType):
Exact: The database is excluded only on a perfect character match (e.g., the rule * = master will hide the master database on every server, but not master_temp).
Contains: Hides databases that contain the keyword anywhere in their name (e.g., the rule * LIKE temp will hide tempdb, DatabaseTemp, OldTemp_Clients).
Built-in Search
The exclusion manager window includes a real-time search bar, allowing you to instantly find and edit rules even in very large exclusion lists.
2.2 Quick Exclusion Directly from the Explorer
Users do not have to manually type rules in the configuration. If a database is loaded in the explorer tree that you don't want to see or process:
Right-click it in the explorer.
Select the Exclude database option.
The database will immediately disappear from the tree view, and a new rule matching that specific server will be automatically generated in the Exclusion Manager.
03
🌲 Chapter 3: Database Explorer and Tree Sessions
The Database Explorer (the left panel of the application) is used to target SQL deployments at specific servers and databases.
3.1 The Database Loading Process (Refresh)
To load the database tree:
Check the round checkbox next to the desired server (or servers) on the server list. You can also click the Check All button on the main toolbar.
Optionally: Use the environment filter (filter icon) to show only servers belonging to, for example, the TEST environment.
Optionally: Reorder or sort servers using the options hidden under the three-dot button.
Click the Refresh button.
SQLSkrypter will send discovery queries to the servers in parallel. All detected databases will be loaded and organized into a tree structure. Databases matching any exclusion rules will be automatically skipped and rejected at this stage.
3.2 Selecting Databases and Targeting
SQL scripts will only be sent to the checked databases in the tree. You can select them in several ways:
Manual selection: By clicking the checkboxes next to individual databases.
Pattern-based selection (global): Clicking the database icon in the patterns section will automatically select all databases in the entire tree whose names match patterns defined in the configuration.
Local selection (per server): From the context menu of a specific server in the tree, you can select only its databases based on a chosen pattern.
Navigation: The tree supports quick expand/collapse of all branches (Collapse/Expand All) for readability when working with hundreds of instances.
3.3 Saving and Loading Tree Sessions (PRO Only)
Working with large database fleets in dynamic environments can require frequently recreating specific client or unit selections. SQLSkrypter PRO solves this with the Tree Sessions feature:
Save Tree Session (SaveSession): Saves the current state of loaded servers and the exact database selection to an external XML file (.skrsession extension).
Load Tree Session (LoadSession): Restores the entire tree including all checked databases from the session file.
Instant load without querying servers
Loading a tree session does not require clicking the Refresh button. The application restores the selection state instantly from the session file, allowing scripts to be launched in seconds without burdening the network or servers with system queries.
04
✍️ Chapter 4: Workspaces and Script Execution
The central section of the application is the Workspace panel, offering two dedicated working modes.
4.1 Script Editor Mode
A convenient development environment for writing and running ad-hoc scripts:
Loading code: You can write code directly, open an existing file using the Open button, or drag and drop a SQL file directly into the editor.
Live Validation (Syntax Check): The editor analyzes SQL syntax in real time (using the ScriptDom engine) and underlines syntax errors with a red squiggle. Validation is informational and does not prevent script execution.
Formatting and Ergonomics: Selected code can be easily commented or uncommented using the Comment Selection / Uncomment Selection buttons on the toolbar.
Log Management:
Show log checkbox: Automatically opens the execution log file immediately after a deployment finishes.
Show log button: Opens the dedicated log file for the Editor.
Clear log button: Permanently clears the editor's log file.
Clear Button: Clears all code in the editor.
4.2 Script Files Mode (Batch Processing)
Designed for the mass, sequential deployment of update packages consisting of multiple .sql files:
Adding files: Files can be added using the file browser (the Add button) or by dragging multiple files or entire folders directly onto the list (Drag & Drop).
Execution order: Files are executed one after another, from top to bottom. The order in the list can be precisely adjusted using the up/down buttons or by conveniently dragging items with the mouse.
Log and Results Management:
Show log: Automatically opens the log after the batch finishes.
Clear summary: Removes the graphical execution status indicators (OK / Warning / Error) from all scripts in the list from the previous deployment attempt.
Clear: Clears the entire list of loaded script files.
4.3 Dry Run — The Gold Standard of Safety (PRO Only)
For deployments to production systems, SQLSkrypter PRO provides the Dry Run Simulation feature:
Launching a script in Dry Run mode automatically opens an explicit SQL Transaction (BEGIN TRANSACTION) on each target database.
The SQL script is executed in its entirety within that transaction, checking all integrity constraints, foreign keys, and physical correctness.
Immediately after execution completes, the application unconditionally sends a rollback command (ROLLBACK TRANSACTION).
As a result, the user receives complete execution logs and a confirmation of deployment correctness without introducing any permanent changes to the database structure or data!
FREE WORKSPACE
Script Syntax Checker
Batch File Operations
Dry-Run Simulation
PRO WORKSPACE
Script Syntax Checker
Batch File Drag & Drop
Dry-Run Simulation (100% Rollback)
05
📊 Chapter 5: Execution Timeline and Execution Summary
After scripts are launched, the application switches to the results panel consisting of two tabs: Execution Timeline and Execution Summary. Both views update in real time.
5.1 Execution Timeline
The Timeline is a chronological log of all events in the execution session. Each entry contains:
Timestamp: The time of the event in HH:mm:ss format.
Status icon: A visual indicator of the operation’s outcome.
Location: The server name and database the entry refers to.
Duration (ms): The execution time of the script on that database (shown for success and warning entries).
Entry Types in the Timeline
Icon
Color
Type
Meaning
ℹ️
Blue
Info
System message (e.g., session start)
›
Blue (animated)
In Progress
Connecting — animated dots indicate active connection
✔
Green
Success
Script executed successfully
↺
Light blue
Dry-run OK
Simulation mode — transaction rolled back
✖
Red
Error
SQL error (message shown below location)
⚠
Orange
Warning
SQL warning during execution
🏁
Gray
Session Summary
Closes the session with total count and elapsed time
Timeline Toolbar
Server Filter (PRO): Dropdown to narrow events to a specific server. Empty option = all servers.
Status Filters (PRO): Radio buttons: All / ✔ Success / ⚠ Warning / ✖ Error. Session summary row always stays visible.
Re-run Failed (PRO): Re-executes the script only on databases that reported an error. The retry count is shown next to the icon.
Export (PRO): Saves filtered entries to .txt (readable report) or .csv (Timestamp; Status; Server; Database; Message; Duration).
Clear (🗑): Removes all entries from the Timeline.
5.2 Execution Summary
The summary panel aggregates session statistics into an analytical dashboard:
Success Rate: Percentage of successful operations out of all executed.
Total Time: Total duration of the session in milliseconds.
Counters: Total / Success / Warnings / Errors.
Error & Warning Aggregation (Top Errors)
SQLSkrypter groups identical SQL error and warning messages from multiple databases into a single card. Each card displays:
The error/warning message text.
A list of affected databases (e.g., Server1/DbA, Server2/DbB).
A red/orange count badge with the number of affected databases.
A copy button to copy the full message and database list to clipboard.
Scope vs. isolated failure
If the same error appears on 200 databases — it’s an infrastructure problem (server / network). If only on 3 specific databases — it’s a local data issue unique to those instances.
Performance Insights
🕐 Slowest: Server and database with the longest execution time (red).
⚡ Fastest: Server and database with the shortest execution time (green).
06
🔗 Chapter 6: Parameterization and Dynamic Variables
SQLSkrypter is equipped with an in-memory dynamic parameterization engine, making it easier to deploy configuration scripts across hundreds of databases without manually editing values.
6.1 How It Works and Syntax
Variables are defined directly in the SQL code using double curly braces: {{VariableName}}.
While editing or loading a script, the application automatically scans its content. Detected variables will appear in the Script Variables (Parameterization) panel on the right side of the editor.
Variable syntax in SQL:{{VariableName}}
Setting default values (Annotations): Default variable values are declared in SQL code comments (recommended at the beginning of the file):
parameterized.sql
-- @VAR: ThresholdAmount = 1000-- @VAR: Country = PLUPDATE dbo.AppConfiguration
SET Value = '{{ThresholdAmount}}'WHERE ConfigKey = 'InvoiceLimit'AND CountryCode = '{{Country}}';
The application will read these lines and automatically populate the corresponding text fields in the variables panel, speeding up your workflow.
The values entered in the panel will be safely substituted directly in the application's RAM memory just before sending the queries to the target databases.
6.2 License Restrictions and Detection Bypass
PRO Edition: Full, unlimited access to dynamic variable substitution and automatic loading of default values defined in scripts.
FREE Edition (Curly Brace Bypass):
If a script contains variables, the parameters panel will be locked with an overlay indicating that the PRO edition is required.
Variable Detection Toggle (Enable {{ }} variable detection): SQLSkrypter includes a variable detection switch. Disabling this option causes the application to completely skip scanning for curly braces {{...}}. The entire script text is then sent as raw SQL code.
This allows both FREE and PRO users to seamlessly run scripts that contain native curly braces (e.g., queries for JSON documents, XML queries in SQL Server, or reporting engine templates) without triggering substitution errors or license locks.
07
⚙️ Chapter 7: Detailed Description of Main Application Settings
SQLSkrypter provides an extensive configuration panel (under the Configuration -> Settings tab), where users can fine-tune ergonomics and system performance:
7.1 Toast Notifications (ShowToastNotifications)
How it works: Controls whether Windows system notifications appear in the bottom-right corner of the screen after script execution finishes.
Details: Supports DPI-aware technology and multi-monitor setups — the notification always appears on the monitor you are currently working on. This allows you to minimize the application during long script runs and safely focus on other tasks.
7.2 Auto-Updates (checkUpdate)
How it works: Automatically queries the GitHub repository on application startup to check for newer releases.
Details: Upon detecting a newer version, displays a window with a complete, localized list of changes (Release Notes). The user can initiate a safe installer download and automatic update with a single click. This option requires a PRO license.
7.3 Remember Server Exclusions (ServerExcludeInfo)
How it works: Manages the persistence of manually hidden servers in the explorer (database tree).
Details: If this option is checked, servers manually hidden by the user via the tree context menu (Exclude) will remain hidden after the application restarts. Disabling this option restores the full server list on every fresh application start.
7.4 Parallel Script Execution (ParallelExecution)
How it works: Activates multi-threading when running scripts across server fleets.
Details: Launches up to 8 parallel worker threads. Instead of waiting for a script to finish on server A before starting on server B, the application processes servers A, B, C, and D simultaneously, drastically reducing total deployment time. This feature is exclusively available in the PRO edition.
7.5 Default Workspace Tab (DefaultWorkspaceTab)
How it works: Allows you to choose which section is active when the application starts.
Details: Two options are available: Script Editor (the default for quick ad-hoc queries) or Script Files (the default for administrators deploying pre-built update packages).
7.6 Confirm on Exit (ConfirmExit)
How it works: Protects against accidentally and mistakenly closing the application.
Details: Enabling this option displays a confirmation prompt when attempting to exit the program. If scripts are actively running in the background, a special warning will be shown, informing the user of the risk of interrupting a transaction.
7.7 Application Language (chooseLanguage)
How it works: Controls the full translation of the application's user interface.
Details: Fully supports 6 languages: Polish (PL), English (EN-US), German (DE), Spanish (ES), French (FR), and Italian (IT). Language changes take effect instantly without requiring an application restart.
7.8 SQL Execution Timeout (SqlTimeout)
How it works: Configures the Command Timeout (in seconds) for SQL queries sent to servers.
Details: Prevents the application from being blocked by queries waiting for database locks to release. Setting the value to 0 completely disables the timeout (waits indefinitely) and is recommended for very large structural deployments.
08
🔒 Chapter 8: Security Architecture and Encryption
SQLSkrypter has been designed with maximum password protection and database integrity in mind for corporate environments.
8.1 Discovery Query Verification (ScriptDom AST)
To ensure that the database discovery query (sys.databases) never damages the SQL Server structure, the application analyzes its code using the official compiler parser Microsoft.SqlServer.TransactSql.ScriptDom.
The system builds a syntactic query tree (AST) and, using the Visitor design pattern (SqlSafetyVisitor), unconditionally blocks queries containing:
Data manipulation (DML): INSERT, UPDATE, DELETE.
Schema changes (DDL): ALTER TABLE, ALTER DATABASE, DROP, CREATE, TRUNCATE.
Procedural code execution: EXECUTE / EXEC.
Variable assignment in SELECT (SELECT @var = ...) and in-flight table creation (SELECT INTO).
This guarantees the absolute safety of all database discovery operations.
7.2 Local Configuration Encryption (Hybrid AES-256 Standard)
The server configuration stored in the file %LOCALAPPDATA%\Skrypter\DataServers.dat is protected by a unique hybrid encryption scheme:
One-Time AES-256 Key: On every save, the application generates a random AES key (32 bytes) and an Initialization Vector IV (16 bytes) used to encrypt the server database.
Double Encryption of Metadata (AES Key): The AES key itself is encrypted in parallel using two methods:
DPAPI (Windows Data Protection API): Encrypts data with a key tied to the current Windows user account in the operating system.
Hardware-AES (Hardware Fallback): Encrypts data with a unique hardware key generated as a SHA-256 hash of the processor ID (ProcessorId) and the motherboard serial number (SerialNumber), retrieved from the machine's BIOS via the WMI interface.
Security Against Theft: Moving the configuration file to another machine makes it impossible to decrypt. Conversely, if the Windows user profile is corrupted on the same machine, the application can still recover the data using the hardware fallback key.
Key Derivation: The key and Initialization Vector (IV) are generated from a user-supplied password using the PBKDF2 algorithm (Rfc2898DeriveBytes) with a strong cryptographic salt.
File Format: The exported file contains an encrypted JSON configuration encoded as a human-readable Base64 string. It is used for the secure transfer of data between workstations.
09
🔑 Chapter 9: Licensing, Trial, and About
The About / Licensing window is the panel for managing the software lifecycle and for system diagnostics.
9.1 License Editions and Activation
FREE Edition: Free of charge, with limitations (up to 10 servers, up to 3 environments, no parallel execution, no Dry Run simulation, variables panel locked).
14-Day Trial Period: Every user can activate a full, free 14-day trial directly from within the application with a single click, granting access to all PRO edition features for testing purposes.
PRO Activation (Manual / Offline):
Navigate to the About -> Licensing tab.
Copy the generated unique Device ID (Hardware ID).
After purchasing a license, enter your License Key and the generated activation code, then click the Activate button.
The application verifies the digital signature of the key using the asymmetric RSA-2048 algorithm, instantly unlocking premium features without requiring an internet connection.
9.2 System Information and Technical Support
At the bottom of the "About" panel there is a System Info diagnostic section, collecting key environmental metadata useful when contacting technical support:
Windows operating system version, architecture, and hostname.
The installed version of the .NET Framework.
CPU model and the amount of RAM.
Information about whether the application is running inside a virtual machine (VM).
The exact application installation path and the location of local log files (log4net).
Contact: For technical issues or PRO license inquiries, please reach out at: sqlskrypter@gmail.com
Note: SQLSkrypter is a "Fast Runner" focused on orchestration. It does not display data output (SELECT results), focusing entirely on execution status and performance.
01
🖥️ Rozdział 1: Zarządzanie Serwerami i Środowiskami
Panel konfiguracyjny aplikacji (dostępny po kliknięciu ikony Ustawienia ▼ w prawym górnym rogu) stanowi serce zarządzania infrastrukturą bazodanową.
1.1 Dodawanie i Edycja Serwerów
Aby zarejestrować nową instancję SQL Server, wprowadź następujące parametry w sekcji Szczegóły serwera (Server Details):
Nazwa serwera (ServerName): Adres sieciowy instancji (np. localhost, NAZWA_SERWERA\INSTANCJA, adres IP lub port, np. 192.168.1.100,1433).
Opis (lblDescription): Przyjazna nazwa pomagająca w identyfikacji maszyny (np. „Główna baza produkcyjna - ERP”).
Typ Uwierzytelnienia:
Uwierzytelnienie Windows: Wykorzystuje poświadczenia systemu Windows zalogowanego użytkownika (Integrated Security/SSPI). Pola loginu i hasła są wtedy automatycznie blokowane.
Uwierzytelnienie SQL Server: Wymaga wpisania dedykowanego konta bazodanowego (np. sa) oraz hasła.
Środowisko (Environment): Przypisanie maszyny do grupy środowiskowej w celu segregacji i podniesienia bezpieczeństwa wizualnego.
Zawsze testuj połączenie
Przed kliknięciem przycisku Dodaj (Add) skorzystaj z opcji Test, aby sprawdzić stan połączenia sieciowego z serwerem SQL. Unikniesz w ten sposób dodawania niepoprawnych konfiguracji.
Ograniczenia wersji:
Wersja FREE: Pozwala na dodanie maksymalnie 10 serwerów w konfiguracji.
Wersja PRO: Całkowity brak ograniczeń liczby serwerów.
Sortowanie: Zarejestrowane serwery na liście konfiguracyjnej są zawsze automatycznie sortowane alfabetycznie (A-Z).
1.2 Zarządzanie Środowiskami
Środowiska służą do logicznego grupowania serwerów i przypisywania im oznaczeń kolorystycznych:
Domyślna konfiguracja: Aplikacja startuje z trzema skonfigurowanymi środowiskami: PROD (Produkcja), TEST (Testy) oraz DEV (Programistyczne).
Customizacja: Użytkownik może dodawać nowe środowiska, edytować ich nazwy, dobierać kolory (Hex Color) oraz zmieniać kolejność wyświetlania w drzewie eksploratora przyciskami Góra/Dół.
Bezpieczeństwo wizualne: Wybrany kolor środowiska (np. jaskrawy czerwony dla PROD) wyświetla się jako panel informacyjny u góry aplikacji przy wyborze serwerów produkcyjnych, drastycznie zmniejszając ryzyko wdrożenia skryptu testowego na bazach produkcyjnych.
Grupowe przypisywanie (Bulk Assign): Z poziomu listy serwerów w konfiguracji możesz zaznaczyć wiele serwerów i za pomocą prawego przycisku myszy (menu kontekstowego) przypisać je masowo do wybranego środowiska lub usunąć je wszystkie za jednym kliknięciem.
LIMIT WERSJI FREE
Maksymalnie 10 serwerów
Maksymalnie 3 środowiska
Paleta podstawowych kolorów HEX
PEŁNE ZASOBY PRO
Nielimitowana liczba serwerów
Nielimitowane własne środowiska
Masowe operacje z menu kontekstowego
1.3 Wzorce Baz Danych (Database Patterns)
Definicja: W oknie konfiguracji użytkownik może zdefiniować listę słów kluczowych zwanych „wzorcami” (np. Test, Backup, Client).
Zastosowanie: Po wczytaniu listy baz w eksploratorze kliknięcie ikony bazy danych lub wybór opcji z menu pozwala na automatyczne, natychmiastowe zaznaczenie wszystkich baz danych, które w swojej nazwie zawierają zdefiniowaną frazę (np. wzorzec Test zaznaczy Klienci_Test, BazaTestowa, TestDB). Funkcja ta eliminuje konieczność ręcznego wyklikiwania dziesiątek baz na różnych serwerach.
1.4 Globalne Zapytanie Odkrywające Bazy (Discovery Query)
Rola: Jest to instrukcja SQL wysyłana na serwery podczas odświeżania eksploratora w celu pobrania listy baz. Domyślna treść:
discovery.sql
SELECT * FROM master.sys.databases WHERE state_desc = 'ONLINE'ORDERBY name
Modyfikacja: Możesz dostosować treść zapytania (np. pobierać bazy o konkretnym collation). System zabezpieczeń ScriptDom (Rozdział 7) weryfikuje każde wpisane zapytanie, gwarantując, że jest ono w 100% bezpieczne dla serwerów.
Rekomendacja filtrowania baz
Filtrowanie baz wewnątrz zapytania odkrywającego (np. dopisywanie WHERE name NOT IN (...)) jest przestarzałą metodą i nie jest zalecane. Do celów ukrywania baz danych służy dedykowany Menedżer Wykluczeń.
02
🔍 Rozdział 2: Zaawansowane Filtrowanie i Menedżer Wykluczeń
Menedżer Wykluczeń baz danych w programie SQLSkrypter chroni przed przypadkowym wdrożeniem skryptów na bazy systemowe, administracyjne lub wrażliwe oraz dba o porządek w eksploratorze. Otwiera się go przyciskiem Zarządzaj (Manage) pod listą wykluczeń w zakładce konfiguracji.
2.1 Struktura Reguł Wykluczeń
Reguła wykluczenia składa się z trzech części:
Nazwa serwera: Określa, na jakim serwerze reguła ma obowiązywać. Wpisanie znaku gwiazdki * (wildcard) powoduje, że reguła jest globalna i dotyczy wszystkich zarejestrowanych serwerów.
Nazwa bazy danych: Nazwa lub wzorzec tekstowy bazy (np. master).
Typ dopasowania (ExclusionMatchType):
Exact (Dokładne): Baza jest wykluczana tylko przy idealnej zgodności znaków (np. reguła * = master ukryje bazę master na każdym serwerze, ale no nie ukryje master_temp).
Contains (Zawiera): Ukrywa bazy zawierające słowo kluczowe w dowolnym miejscu nazwy (np. reguła * LIKE temp ukryje tempdb, BazaTemp, StaraTemp_Klienci).
Wbudowana Wyszukiwarka
W oknie menedżera wykluczeń dostępna jest wyszukiwarka czasu rzeczywistego, która pozwala na natychmiastowe odnalezienie i edytowanie reguł przy bardzo rozbudowanych listach wykluczeń.
2.2 Szybkie Wykluczanie bezpośrednio z Eksploratora
Użytkownik nie musi ręcznie wpisywać reguł w konfiguracji. Jeżeli na drzewie eksploratora baz wczytana jest baza, której nie chcesz widzieć ani przetwarzać:
Kliknij na nią prawym przyciskiem myszy w eksploratorze.
Wybierz opcję Wyklucz bazę z serwera (Exclude database).
Baza natychmiast zniknie z widoku drzewa, a w menedżerze wykluczeń automatycznie wygeneruje się nowa reguła dopasowana do tego konkretnego serwera.
03
🌲 Rozdział 3: Eksplorator Baz Danych i Sesje Drzewa
Eksplorator baz danych (lewy panel aplikacji) służy do targetowania wdrożeń SQL na serwery i bazy danych.
3.1 Proces Wczytywania Baz (Odświeżanie)
Aby załadować drzewo baz danych:
Zaznacz okrągły checkbox przy wybranym serwerze (lub serwerach) na liście serwerów. Możesz też kliknąć przycisk Zaznacz wszystko (Check All) na głównym pasku narzędzi.
Opcjonalnie: Użyj filtra środowisk (ikona filtru), aby pokazać tylko serwery należące np. do środowiska TEST.
Opcjonalnie: Zmień kolejność wyświetlania lub posortuj serwery za pomocą opcji ukrytych pod przyciskiem trzech kropek.
Kliknij przycisk Odśwież (Refresh).
SQLSkrypter wyśle równolegle zapytania odkrywające na serwery. Wszystkie wykryte bazy danych zostaną wczytane i ułożone w strukturę drzewiastą. Bazy danych pasujące do reguł wykluczeń zostaną automatycznie pominięte i odrzucone na tym etapie.
3.2 Zaznaczanie Baz i Targetowanie
Skrypty SQL zostaną wysłane wyłącznie do zaznaczonych baz danych na drzewie. Możesz je zaznaczać na kilka sposobów:
Zaznaczanie ręczne: Poprzez klikanie checkboxów przy konkretnych bazach danych.
Zaznaczanie według wzorca (globalne): Klikając ikonę bazy danych w sekcji wzorców, program automatycznie zaznaczy na całym drzewie te bazy, których nazwy pasują do wzorców zdefiniowanych w konfiguracji.
Zaznaczanie lokalne (na serwerze): Z poziomu menu kontekstowego konkretnego serwera w drzewie można zaznaczyć tylko jego bazy bazując na wybranym wzorcu.
Nawigacja: Drzewo obsługuje szybkie rozwijanie i zwijanie wszystkich gałęzi (Collapse/Expand All) w celu zachowania czytelności przy setkach instancji.
3.3 Zapis i Wczytywanie Sesji Drzewa (PRO Only)
Praca na dużych bazach danych w dynamicznych środowiskach może wymagać częstego odtwarzania zaznaczeń określonych grup klientów lub jednostek. SQLSkrypter PRO rozwiązuje ten problem za pomocą funkcjonalności Sesji Drzewa:
Zapisz sesję drzewa (SaveSession): Zapisuje aktualny stan wczytanych serwerów oraz dokładne zaznaczenie baz danych do zewnętrznego pliku XML (z rozszerzeniem .skrsession).
Wczytaj sesję drzewa (LoadSession): Odtwarza całe drzewo wraz z zaznaczonymi bazami z pliku sesji.
Błyskawiczne ładowanie bez odpytywania serwerów
Wczytanie sesji drzewa nie wymaga klikania przycisku Odśwież. Aplikacja odtwarza stan zaznaczeń natychmiast z pamięci pliku sesji, co pozwala na uruchomienie skryptów w kilka sekund bez obciążania sieci i serwerów zapytaniami systemowymi.
04
✍️ Rozdział 4: Obszary Robocze i Uruchamianie Skryptów
Środkowa część aplikacji to panel roboczy (Workspace) oferujący dwa dedykowane tryby pracy.
4.1 Tryb Edytora Skryptów (The Script Editor)
Wygodne środowisko programistyczne do tworzenia i uruchamiania skryptów ad-hoc:
Wczytywanie kodu: Możesz pisać kod bezpośrednio, otworzyć istniejący plik przyciskiem Otwórz lub przeciągnąć plik SQL bezpośrednio do edytora metodą Drag & Drop.
Live-Validation (Walidacja składni): Edytor w czasie rzeczywistym analizuje składnię SQL (silnik ScriptDom) i podkreśla czerwonym wężykiem błędy składniowe. Walidacja ma charakter informacyjny i nie blokuje możliwości uruchomienia skryptu.
Formatowanie i Ergonomia: Zaznaczony fragment kodu można łatwo zakomentować lub odkomentować przyciskami Zakomentuj zazcenie / Odkomentuj zaznaczenie na ribbonie.
Obsługa Logów:
Checkbox Pokaż log: Automatycznie otwiera plik z logami wykonania skryptu zaraz po zakończeniu wdrożenia.
Przycisk Pokaż log: Otwiera dedykowany plik logu dla Edytora.
Przeznaczony do masowego, sekwencyjnego wdrażania paczek aktualizacyjnych składających się z wielu plików .sql:
Dodawanie plików: Pliki można dodawać za pomocą eksploratora plików (przycisk Dodaj) lub przeciągając wiele plików lub całe katalogi bezpośrednio na listę (Drag & Drop).
Kolejność wykonywania: Pliki są wykonywane jeden po drugim, od góry do dołu. Kolejność na liście można precyzyjnie zmieniać przyciskami góra/dół lub wygodnie przeciągając pozycje myszką.
Obsługa Logów i Wyników:
Pokaż log: Automatycznie otwiera log po wykonaniu paczki.
Wyczyść podsumowanie: Usuwa z listy plików graficzne znaczniki statusów wykonania (OK / Ostrzeżenie / Błąd) dla wszystkich skryptów z poprzedniej próby wdrożenia.
Wyczyść: Czyści całą listę załadowanych plików skryptów.
4.3 Dry Run — Gold Standard Bezpieczeństwa (PRO Only)
Dla wdrożeń na systemach produkcyjnych SQLSkrypter PRO udostępnia funkcję Symulacji Dry Run:
Uruchomienie skryptu w trybie Dry Run automatycznie otwiera na każdej docelowej bazie danych jawną transakcję SQL (BEGIN TRANSACTION).
Skrypt SQL zostaje w całości wykonany wewnątrz tej transakcji, sprawdzając wszystkie ograniczenia spójności, klucze obce i poprawność fizyczną.
Zaraz po zakończeniu wykonywania kodu, aplikacja bezwzględnie wysyła polecenie wycofania zmian (ROLLBACK TRANSACTION).
Dzięki temu użytkownik otrzymuje pełne logi wykonania i potwierdzenie poprawności wdrożenia bez wprowadzania jakichkolwiek trwałych zmian w strukturze czy danych w bazie!
OBSZAR ROBOCZY FREE
Walidator składni SQL
Sekwencyjne puszczanie plików
Transakcyjny Dry-Run (rollback)
OBSZAR ROBOCZY PRO
Walidator składni SQL
Drag & Drop dla pakietów plików
Dry-Run z bezwzględnym rollbackiem
05
📊 Rozdział 5: Oś Czasu (Timeline) i Podsumowanie Wykonania
Po uruchomieniu skryptów aplikacja przełącza się na panel wynikowy składający się z dwóch zakładek: Oś Czasu (Timeline) oraz Podsumowanie Wykonania (Execution Summary). Oba widoki aktualizują się w czasie rzeczywistym.
5.1 Oś Czasu (Execution Timeline)
Oś czasu to chronologiczny dziennik wszystkich zdarzeń sesji wykonywania. Każdy wpis zawiera:
Sygnaturę czasu (Timestamp): Godzinę zdarzenia w formacie HH:mm:ss.
Ikonę statusu: Wizualny wskaźnik wyniku operacji.
Lokalizację: Nazwę serwera i bazę danych, których wpis dotyczy.
Czas trwania (ms): Czas wykonania skryptu na danej bazie (przy wpisach sukcesu i ostrzeżenia).
Typy wpisów na Osi Czasu
Ikona
Kolor
Typ
Znaczenie
ℹ️
Niebieski
Info
Komunikat systemowy (np. start sesji)
›
Niebieski (animacja)
W trakcie
Trwa łączenie z bazą — animowane kropki sygnalizują aktywne połączenie
✔
Zielony
Sukces
Skrypt wykonany pomyślnie
↺
Jasnoniebieski
Dry-run OK
Skrypt wykonany w trybie symulacji — transakcja wycofana
✖
Czerwony
Błąd
Wykonanie zakończone błędem SQL (treść błędu wyświetlana pod lokalizacją)
⚠
Pomarańczowy
Ostrzeżenie
Wykonanie zakończone z ostrzeżeniem SQL
🏁
Szary
Podsumowanie sesji
Linia zamykająca sesję z łączną liczbą baz i czasem całkowitym
Pasek narzędzi Osi Czasu
Filtr serwera (PRO): Rozwijana lista pozwalająca zawęzić widok do zdarzeń z konkretnego serwera. Wybranie pustej pozycji przywraca widok wszystkich serwerów.
Filtry statusu (PRO): Cztery przyciski radio umożliwiające pokazanie wyłącznie wpisów o wybranym statusie: Wszystkie / ✔ Sukces / ⚠ Ostrzeżenie / ✖ Błąd. Wpis podsumowania sesji jest zawsze widoczny niezależnie od wybranego filtra.
Re-run Failed (PRO): Ponawia wykonanie skryptu wyłącznie na bazach, które zgłosiły błąd — bez konieczności ręcznego odklikiwania pozostałych baz. Liczba baz do ponowienia jest wyświetlana obok ikony.
Eksport (PRO): Zapisuje widoczne wpisy do pliku tekstowego (.txt) lub arkusza (.csv) z podziałem na kolumny.
Wyczyść (🗑): Usuwa wszystkie wpisy z Osi Czasu.
5.2 Podsumowanie Wykonania (Execution Summary)
Panel podsumowania agreguje statystyki zakończonej sesji w czytelną formę analityczną:
Success Rate (Wskaźnik Sukcesu): Procentowy udział operacji zakończonych sukcesem w stosunku do wszystkich wykonanych.
Total Time (Całkowity Czas): Łączny czas trwania całej sesji wykonywania w milisekundach.
Liczniki szczegółowe: Razem / Sukces / Ostrzeżenia / Błędy.
Agregacja Błędów i Ostrzeżeń (Top Errors)
SQLSkrypter grupuje identyczne komunikaty błędów i ostrzeżeń z wielu baz w jeden wpis. Każda karta błędu wyświetla:
Treść komunikatu błędu/ostrzeżenia.
Listę dotkniętych baz danych (np. Server1/BazaA, Server2/BazaB).
Czerwoną lub pomarańczową plakietkę (badge) z liczbą baz, które wygenerowały ten błąd.
Przycisk kopiowania pełnej treści błędu i listy baz do schowka.
Zasięg błędu a problem lokalny
Agregacja błędów pozwala natychmiast ocenić zasięg problemu. Jeśli ten sam błąd pojawia się na 200 bazach — to problem globalny (serwer lub sieć). Jeśli tylko na 3 bazach — to odosobniony problem lokalny tych instancji.
Analiza Wydajności (Performance Insights)
Najwolniejsza baza (🕐 Slowest): Nazwa serwera i bazy z najdłuższym czasem wykonania (kolor czerwony).
Najszybsza baza (⚡ Fastest): Nazwa serwera i bazy z najkrótszym czasem wykonania (kolor zielony).
06
🔗 Rozdział 6: Parametryzacja i Zmienne Dynamiczne
SQLSkrypter wyposażony jest w silnik dynamicznej parametryzacji w pamięci aplikacji, ułatwiający wdrażanie skryptów konfiguracyjnych na setki baz bez konieczności ręcznego edytowania wartości.
6.1 Mechanizm Działania i Składnia
Zmienne definiuje się bezpośrednio w kodzie SQL przy użyciu podwójnych nawiasów klamrowych: {{NazwaZmiennej}}.
Podczas edycji lub wczytywania skryptu program automatycznie skanuje jego treść. Wykryte zmienne pojawią się w bocznym panelu Zmienne w skryptach (Parametryzacja) po prawej stronie edytora.
Składnia zmiennej w SQL:{{NazwaZmiennej}}
Ustalanie wartości domyślnych (Anotacje): Domyślne wartości zmiennych deklaruje się w komentarzach kodu SQL (zalecane na początku pliku):
parametryzacja.sql
-- @VAR: ProgowanaKwota = 1000-- @VAR: Kraj = PLUPDATE dbo.KonfiguracjaAplikacji
SET Wartosc = '{{ProgowanaKwota}}'WHERE KluczKonfiguracji = 'LimitFaktury'AND KodKraju = '{{Kraj}}';
Aplikacja odczyta te linie i automatycznie uzupełni nimi odpowiednie pola tekstowe w bocznym panelu zmiennych, przyspieszając pracę.
Wprowadzone w panelu wartości zostaną bezpiecznie podmienione bezpośrednio w pamięci RAM aplikacji tuż przed wysłaniem zapytań do docelowych baz danych.
6.2 Ograniczenia Licencyjne i Wyłącznik Detekcji (Bypass)
Wersja PRO: Pełny, nielimitowany dostęp do dynamicznego podstawiania zmiennych oraz automatycznego wczytywania wartości domyślnych zdefiniowanych w skryptach.
Wersja FREE (Bypass klamer):
Jeśli skrypt zawiera zmienne, panel parametrów zostanie zablokowany nakładką informującą o konieczności posiadania wersji PRO.
Variable Detection Toggle (Włącz wykrywanie zmiennych {{ }}): SQLSkrypter posiada wyłącznik detekcji zmiennych. Wyłączenie tej opcji powoduje, że program całkowicie pomija skanowanie klamer {{...}}. Cały tekst skryptu zostaje przesłany w postaci surowego kodu SQL.
Pozwala to zarówno użytkownikom wersji FREE, jak i PRO na bezproblemowe uruchamianie skryptów zawierających natywne klamry (np. zapytania do dokumentów JSON, zapytania XML w SQL Server czy szablony silników raportowych) bez wywoływania błędów podstawiania ani blokad licencyjnych.
07
⚙️ Rozdział 7: Szczegółowy Opis Głównych Ustawień Aplikacji
SQLSkrypter udostępnia rozbudowany panel konfiguracyjny (zakładka Konfiguracja -> Ustawienia), w którym użytkownik może precyzyjnie dostroić ergonomię pracy i wydajność systemu:
7.1 Powiadomienia Toast (ShowToastNotifications)
Opis działania: Odpowiada za wysyłanie systemowych powiadomień Windows w prawym dolnym rogu ekranu po zakończeniu wykonywania skryptów.
Specyfikacja: Obsługuje technologię DPI-aware i systemy wielomonitorowe – powiadomienie wyświetli się zawsze na monitorze, na którym aktualnie pracujesz. Pozwala to na zminimalizowanie aplikacji podczas wykonywania długich skryptów i bezpieczne zajęcie się inną pracą.
7.2 Aktualizacje (checkUpdate)
Opis działania: Automatycznie odpytuje repozytorium GitHub przy uruchomieniu aplikacji w poszukiwaniu nowszych wydań.
Specyfikacja: Po wykryciu nowszej wersji wyświetla okno z kompletną, lokalizowaną listą zmian (Release Notes). Użytkownik jednym kliknięciem może zainicjować bezpieczne pobranie instalatora i automatyczną aktualizację programu. Opcja wymaga licencji PRO.
Opis działania: Zarządza trwałością ręcznego ukrywania serwerów w eksploratorze (drzewie baz).
Specyfikacja: Jeśli opcja jest zaznaczona, serwery ukryte przez użytkownika z poziomu menu kontekstowego drzewa (Exclude) pozostaną niewidoczne po restarcie programu. Wyłączenie opcji przywraca pełną listę serwerów przy każdym nowym starcie aplikacji.
Opis działania: Aktywuje wielowątkowość podczas uruchamiania skryptów na flotach serwerów.
Specyfikacja: Uruchamia do 8 równoległych wątków roboczych. Zamiast czekać na zakończenie wykonywania skryptu na serwerze A, aplikacja przetrawia serwery A, B, C i D jednocześnie, drasticznie redukując całkowity czas wdrożenia. Funkcja dostępna wyłącznie w wersji PRO.
7.5 Domyślne Okno Obszaru Roboczego (DefaultWorkspaceTab)
Opis działania: Pozwala wybrać, która sekcja ma być aktywna po uruchomieniu aplikacji.
Specyfikacja: Do wyboru są dwie opcje: Edytor skryptów (domyślny dla szybkiego pisania zapytań ad-hoc) lub Skrypty z plików (domyślny dla administratorów wdrażających gotowe paczki aktualizacyjne).
7.6 Zapytanie Przed Zamknięciem (ConfirmExit)
Opis działania: Chroni przed przypadkowym, omyłkowym zamknięciem programu.
Specyfikacja: Włączenie tej opcji powoduje wyświetlenie monitu potwierdzającego przy próbie wyjścia z programu. Jeśli w tle trwa aktywne wykonywanie skryptów, system wyświetli specjalne ostrzeżenie, informując o ryzyku przerwania transakcji.
7.7 Język Aplikacji (chooseLanguage)
Opis działania: Odpowiada za pełne tłumaczenie interfejsu użytkownika aplikacji.
Specyfikacja: W pełni wspiera 6 języków: polski (PL), angielski (EN-US), niemiecki (DE), hiszpański (ES), francuski (FR) i włoski (IT). Zmiana języka następuje natychmiastowo, bez konieczności ponownego uruchamiania aplikacji.
7.8 Limit Czasu Wykonywania SQL (SqlTimeout)
Opis działania: Konfiguruje tzw. Command Timeout (w sekundach) dla zapytań SQL wysyłanych na serwery.
Specyfikacja: Zapobiega blokowaniu aplikacji przez zapytania oczekujące na zwolnienie blokad (locków) w bazie danych. Wpisanie wartości 0 całkowicie wyłącza limit czasowy (oczekiwanie nieskończone) i jest zalecane przy bardzo dużych wdrożeniach strukturalnych.
08
🔒 Rozdział 8: Architektura Bezpieczeństwa i Szyfrowanie
SQLSkrypter został zaprojektowany z myślą o maksymalnej ochronie haseł i integralności baz danych w środowiskach korporacyjnych.
Aby zapewnić, że zapytanie odkrywające bazy (sys.databases) nigdy nie uszkodzi struktury serwera SQL, aplikacja analizuje jego kod za pomocą oficjalnego parsera kompilatora Microsoft.SqlServer.TransactSql.ScriptDom.
System buduje drzewo składniowe zapytania (AST) i za pomocą wzorca projektowego wizytatora (SqlSafetyVisitor) bezwzględnie blokuje zapytania zawierające:
Modyfikacje danych (DML): INSERT, UPDATE, DELETE.
Zmiany schematów (DDL): ALTER TABLE, ALTER DATABASE, DROP, CREATE, TRUNCATE.
Wykonywanie kodu proceduralnego: EXECUTE / EXEC.
Przypisywanie zmiennych w SELECT (SELECT @var = ...) oraz tworzenie tabel w locie (SELECT INTO).
Gwarantuje to absolutne bezpieczeństwo operacji odkrywania baz.
8.2 Szyfrowanie Konfiguracji Lokalnej (Hybrydowy standard AES-256)
Konfiguracja serwerów w pliku %LOCALAPPDATA%\Skrypter\DataServers.dat jest chroniona unikalnym schematem hybrydowym:
Jednorazowy Klucz AES-256: Przy każdym zapisie aplikacja generuje losowy klucz AES (32 bajty) oraz wektor inicjalizacyjny IV (16 bajtów) służące do zaszyfrowania bazy serwerów.
Podwójne Szyfrowanie Metadanych (Klucza AES): Sam klucz AES jest szyfrowany równolegle dwoma metodami:
DPAPI (Windows Data Protection API): Szyfruje dane kluczem powiązanym z kontem aktualnego użytkownika Windows w systemie operacyjnym.
Hardware-AES (Sprzętowy fallback): Szyfruje dane unikalnym kluczem sprzętowym wygenerowanym jako skrót SHA-256 z identyfikatora procesora (ProcessorId) i numeru seryjnego płyty głównej (SerialNumber) pobranych z biosu maszyny przez interfejs WMI.
Bezpieczeństwo przed kradzieżą: Przeniesienie pliku konfiguracyjnego na inną maszynę uniemożliwia jego odszyfrowanie. Z kolei w przypadku uszkodzenia profilu użytkownika Windows na danej maszynie, program bez problemu odzyska dane dzięki sprzętowemu kluczowi awaryjnemu.
8.3 Szyfrowanie przy Eksporcie / Imporcie
Standard: Wykorzystuje silne szyfrowanie symetryczne AES-256.
Derywacja Klucza: Klucz oraz wektor inicjalizacyjny (IV) są generowane na podstawie hasła podanego przez użytkownika za pomocą algorytmu PBKDF2 (Rfc2898DeriveBytes) z silną solą kryptograficzną.
Zapis: Plik eksportu zawiera zaszyfrowany plik konfiguracji JSON zakodowany do postaci czytelnego ciągu znaków Base64. Służy do bezpiecznego przenoszenia danych między stacjami roboczymi.
09
🔑 Rozdział 9: Licencjonowanie, Trial i O Aplikacji
Okno O aplikacji (About / Licensing) to panel zarządzania cyklem życia oprogramowania oraz diagnostyki systemowej.
9.1 Wersje Licencji i Aktywacja
Wersja FREE: Darmowa, z limitami (do 10 serwerów, do 3 środowisk, brak pracy równoległej, brak symulacji Dry Run, zablokowany panel zmiennych).
Okres Próbny (14-dniowy TRIAL): Każdy użytkownik może bezpośrednio z poziomu aplikacji jednym kliknięciem uruchomić pełny, darmowy 14-dniowy okres próbny, dający dostęp do wszystkich możliwości edycji PRO w celach testowych.
Aktywacja PRO (Ręczna / Offline):
Przejdź do zakładki O aplikacji -> Licencjonowanie.
Skopiuj wygenerowany unikalny Identyfikator Urządzenia (Hardware ID).
Po zakupie licencji wprowadź swój Klucz licencyjny oraz wygenerowany kod aktywacyjny i kliknij przycisk Aktywuj (Activate).
Aplikacja weryfikuje podpis cyfrowy klucza za pomocą asymetrycznego algorytmu RSA-2048, natychmiast odblokowując funkcjonalności premium bez konieczności połączenia z Internetem.
9.2 Informacje o Systemie i Wsparcie Techniczne
W dolnej części panelu "O aplikacji" znajduje się sekcja diagnostyczna Informacje o systemie (System Info), zbierająca kluczowe metadane środowiskowe przydatne podczas kontaktu z pomocą techniczną:
Wersja systemu operacyjnego Windows, architektura oraz nazwa hosta.
Zainstalowana wersja środowiska .NET Framework.
Model procesora (CPU) oraz ilość pamięci operacyjnej RAM.
Informacja o pracy wewnątrz maszyny wirtualnej (VM).
Dokładna ścieżka instalacji aplikacji oraz lokalizacja lokalnych plików logów (log4net).
Kontakt: W razie problemów technicznych lub zapytań o licencje PRO prosimy o kontakt pod adresem: sqlskrypter@gmail.com
Uwaga: SQLSkrypter to tzw. "Fast Runner". Aplikacja nie wyświetla wyników zapytań SELECT (danych), skupiając się w całości na statusie wykonania i wydajności.