Работа с Microsoft SQL Server
Эта инструкция охватывает подключение к MS SQL Server, запущенному на сервере 192.168.0.103, и базовые операции.
текущие данные для входа:
- ip 192.168.0.103
- логин sa(супер-пользователь), kollokpoi
- пароль 12332155
Предварительные условия
На сервере уже должен быть установлен и запущен Microsoft SQL Server. Проверить это можно командой:
# Проверить состояние службы SQL Server
systemctl status mssql-server
# или
sudo systemctl status mssql-server
Если SQL Server установлен в Docker-контейнере:
docker ps | grep sql
Подключение к SQL Server
1. Подключение через терминал сервера (sqlcmd)
Утилита sqlcmd — это консольный клиент для SQL Server.
# Подключение с аутентификацией SQL Server
sqlcmd -S localhost -U SA -P 'your_password'
# Подключение к конкретной базе данных
sqlcmd -S localhost -U SA -P 'your_password' -d master
Внутри sqlcmd можно выполнять SQL-запросы. Для выполнения команды нужно ввести GO на новой строке.
2. Удаленное подключение из терминала
Для подключения с локальной машины потребуется установить sqlcmd локально или использовать другой клиент.
# Подключение к удаленному серверу
sqlcmd -S 192.168.0.103 -U SA -P 'your_password'
3. Графические клиенты (рекомендуется)
SQL Server Management Studio (SSMS) (Бесплатный, только Windows)
- Скачать с официального сайта
- Полнофункциональная среда для администрирования SQL Server
- Инструменты для настройки, мониторинга и развертывания
Azure Data Studio (Бесплатный, кроссплатформенный)
- Скачать с официального сайта
- Современный интерфейс, похожий на VS Code
- Поддержка IntelliSense, сниппетов, управления версиями
DBeaver (Бесплатный, кроссплатформенный)
- Официальный сайт
- Универсальный клиент для многих СУБД, включая SQL Server
- Простой и понятный интерфейс
Основные команды SQL Server
Системные команды
-- Показать все базы данных
SELECT name FROM sys.databases;
GO
-- Переключиться на базу данных
USE master;
GO
-- Показать текущую базу данных
SELECT DB_NAME();
GO
Работа с базами данных
-- Создать новую базу данных
CREATE DATABASE MyDatabase;
GO
-- Удалить базу данных
DROP DATABASE MyDatabase;
GO
-- Создать базу с указанием файлов
CREATE DATABASE ProjectDB
ON PRIMARY
(NAME = ProjectDB_data,
FILENAME = '/var/opt/mssql/data/ProjectDB.mdf',
SIZE = 100MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10MB)
LOG ON
(NAME = ProjectDB_log,
FILENAME = '/var/opt/mssql/data/ProjectDB.ldf',
SIZE = 50MB,
MAXSIZE = 1GB,
FILEGROWTH = 5MB);
GO
Работа с таблицами
-- Создать таблицу
CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY,
username NVARCHAR(50) NOT NULL,
email NVARCHAR(100),
created_at DATETIME DEFAULT GETDATE(),
is_active BIT DEFAULT 1
);
GO
-- Показать таблицы в текущей базе
SELECT * FROM INFORMATION_SCHEMA.TABLES;
GO
-- Показать структуру таблицы
EXEC sp_help 'users';
GO
-- Удалить таблицу
DROP TABLE users;
GO
CRUD-операции
-- Добавление данных
INSERT INTO users (username, email)
VALUES ('kollokpoi', 'user@example.com');
GO
-- Вставка нескольких строк
INSERT INTO users (username, email)
VALUES
('user1', 'user1@example.com'),
('user2', 'user2@example.com');
GO
-- Чтение данных
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
SELECT TOP 10 * FROM users ORDER BY created_at DESC;
GO
-- Обновление данных
UPDATE users SET email = 'new@example.com' WHERE id = 1;
GO
-- Удаление данных
DELETE FROM users WHERE id = 1;
-- Осторожно: удаление всех данных из таблицы
-- TRUNCATE TABLE users;
GO
Экспорт и импорт данных
Экспорт с помощью sqlcmd
# Экспорт данных в CSV
sqlcmd -S 192.168.0.103 -U SA -P 'password' -d MyDatabase -Q "SELECT * FROM users" -o "users.csv" -h-1 -s","
# Экспорт всей базы (создание скрипта)
sqlcmd -S 192.168.0.103 -U SA -P 'password' -d MyDatabase -E -Q "EXEC sp_msforeachtable 'SELECT * FROM ?'" -o "alldata.sql"
Резервное копирование и восстановление
-- Создание полной резервной копии
BACKUP DATABASE MyDatabase
TO DISK = '/var/opt/mssql/backup/MyDatabase.bak'
WITH FORMAT, COMPRESSION;
GO
-- Восстановление из резервной копии
RESTORE DATABASE MyDatabase
FROM DISK = '/var/opt/mssql/backup/MyDatabase.bak'
WITH REPLACE, RECOVERY;
GO
Через командную строку:
# Резервное копирование
sqlcmd -S 192.168.0.103 -U SA -P 'password' -Q "BACKUP DATABASE MyDatabase TO DISK='/backup/MyDatabase.bak'"
# Восстановление
sqlcmd -S 192.168.0.103 -U SA -P 'password' -Q "RESTORE DATABASE MyDatabase FROM DISK='/backup/MyDatabase.bak'"
Рекомендуемые официальные туториалы
Для глубокого изучения SQL Server:
- SQL Server Documentation — полная официальная документация
- Tutorial: Getting Started with SQL Server — официальные учебники
- SQL Server on Linux — документация по работе на Linux
- Quickstart: Connect and query SQL Server — быстрое начало работы
- SQL Server Training — образовательные ресурсы от Microsoft
Решение типичных проблем
Ошибка подключения "Login failed"
- Проверь правильность логина и пароля
- Убедись, что аутентификация SQL Server включена
- Проверь, не истек ли срок действия пароля:
ALTER LOGIN SA WITH PASSWORD = 'new_password' UNLOCK;
GO
Ошибка "Cannot connect to server"
- Убедись, что служба SQL Server запущена:
sudo systemctl status mssql-server - Проверь, прослушивается ли порт 1433:
sudo netstat -tlnp | grep 1433 - Проверь настройки брандмауэра
Недостаточно прав
-- Создать нового пользователя
CREATE LOGIN Developer WITH PASSWORD = 'StrongPassword123';
GO
-- Дать права на конкретную базу данных
USE MyDatabase;
CREATE USER Developer FOR LOGIN Developer;
ALTER ROLE db_owner ADD MEMBER Developer;
GO
Проблемы с дисковым пространством
-- Проверить свободное место в файлах базы данных
SELECT
name AS FileName,
size/128.0 AS CurrentSizeMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB
FROM sys.database_files;
GO
-- Увеличить размер файла базы данных
ALTER DATABASE MyDatabase
MODIFY FILE (NAME = MyDatabase_data, SIZE = 500MB);
GO
Полезные системные запросы
-- Проверка версии SQL Server
SELECT @@VERSION;
GO
-- Информация о сервере
SELECT
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('ServerName') AS ServerName,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('ProductVersion') AS ProductVersion;
GO
-- Активные подключения
SELECT
session_id,
login_name,
host_name,
program_name,
status
FROM sys.dm_exec_sessions;
GO
-- Использование памяти
SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_MB
FROM sys.dm_os_process_memory;
GO
Следующие шаги
После освоения основ SQL Server можно изучить:
- Индексирование и оптимизация запросов
- Репликация и Always On группы доступности
- Интеграционные службы (SSIS)
- Аналитические службы (SSAS)
- Настройка автоматического резервного копирования
- Мониторинг производительности
Для сервера 192.168.0.103 рекомендуется настроить регулярное резервное копирование и мониторинг использования ресурсов.