Skip to main content

Работа с 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)

Azure Data Studio (Бесплатный, кроссплатформенный)

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:

  1. SQL Server Documentation — полная официальная документация
  2. Tutorial: Getting Started with SQL Server — официальные учебники
  3. SQL Server on Linux — документация по работе на Linux
  4. Quickstart: Connect and query SQL Server — быстрое начало работы
  5. SQL Server Training — образовательные ресурсы от Microsoft

Решение типичных проблем

Ошибка подключения "Login failed"

  1. Проверь правильность логина и пароля
  2. Убедись, что аутентификация SQL Server включена
  3. Проверь, не истек ли срок действия пароля:
    ALTER LOGIN SA WITH PASSWORD = 'new_password' UNLOCK;
    GO

Ошибка "Cannot connect to server"

  1. Убедись, что служба SQL Server запущена:
    sudo systemctl status mssql-server
  2. Проверь, прослушивается ли порт 1433:
    sudo netstat -tlnp | grep 1433
  3. Проверь настройки брандмауэра

Недостаточно прав

-- Создать нового пользователя
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 можно изучить:

  1. Индексирование и оптимизация запросов
  2. Репликация и Always On группы доступности
  3. Интеграционные службы (SSIS)
  4. Аналитические службы (SSAS)
  5. Настройка автоматического резервного копирования
  6. Мониторинг производительности

Для сервера 192.168.0.103 рекомендуется настроить регулярное резервное копирование и мониторинг использования ресурсов.