Содержание
MSSQL
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions?view=sql-server-ver15 - Настройка учетных записей службы
Подключиться в режиме чтения:
applicationIntent=Readonly
Firewall
Powershell:
New-NetFirewallRule -DisplayName "SQLServer default instance" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow New-NetFirewallRule -DisplayName "SQLServer Browser service" -Direction Inbound -LocalPort 1434 -Protocol UDP -Action Allow
MSSQL instance MSSQL14.MSSQLSERVER:
New-NetFirewallRule -DisplayName "SQLServer Program" -Direction Inbound -Program "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -Action Allow
Always On
Пользовать от кого запущен MS SQL Server должен иметь права:
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<service account OR user>];
ODBC
https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server - Install the Microsoft ODBC driver for SQL Server (Linux)
https://learn.microsoft.com/eN-us/sql/connect/odbc/dsn-connection-string-attribute - DSN and Connection String Keywords and Attributes
https://xakinfo.ru/os/monitor-mssql-zabbix/
Zabbix ODBC
CLR
Показать конфигурацию CLR:
EXEC sp_configure 'clr enabled';
Включить CLR:
EXEC sp_configure 'clr enabled' , '1';
sys.assemblies
Показать загруженные assembly_files (clr) для текущей базы:
SELECT af.name, af.content FROM sys.assemblies a INNER JOIN sys.assembly_files af ON a.assembly_id = af.assembly_id --WHERE a.name = 'VsOnline.SQLCLR'
https://www.mssqltips.com/sqlservertip/3126/exporting-clr-assemblies-from-sql-server-back-to-dll-files/
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-assembly-transact-sql?view=sql-server-ver15
sys.trusted_assemblies
Показать доверенные сборки:
SELECT * FROM sys.trusted_assemblies
Добавить/удалить в доверенные (пример для 'VsOnline.SQLCLR'):
https://nielsberglund.com/2017/07/23/sql-server-2017-sqlclr---whitelisting-assemblies/
http://ianpicknell.blogspot.com/2009/12/adding-strong-name-to-third-party.html
TRUSTWORTHY
Показать значения для баз:
SELECT name,is_trustworthy_on FROM sys.databases;
Изменить значение для базы (пример для базы VSOnlineTest):
ALTER DATABASE VSOnlineTest SET TRUSTWORTHY ON;
Optimize for ad hoc workloads
Показать текущее значение:
USE master SELECT * FROM sys.configurations WHERE NAME = 'optimize for ad hoc workloads'
Включить:
USE master EXEC sp_configure 'show advanced options', 1 RECONFIGURE EXEC sp_configure 'optimize for ad hoc workloads', 1 RECONFIGURE WITH OVERRIDE GO
https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/optimize-for-ad-hoc-workloads-server-configuration-option
https://wiki.it-kb.ru/1c/setting-up-microsoft-sql-server-for-1c-enterprise-8-3/optimize-for-ad-hoc-workloads
Безопасность
Показать SID пользователя:
SELECT SUSER_SID('login');
Поменять пользователю SID:
DROP LOGIN [USER]; CREATE LOGIN [USER] WITH PASSWORD = 'password', SID = 0x2542795EDA11A2468F5D9CCDEA47C665;
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/suser-sid-transact-sql
Сформировать SQL запрос для переноса учётных записей:
Owner БД
Сформировать T-SQL скрипт для изменения owner:
https://www.sqlshack.com/different-ways-to-change-database-owners-in-sql-server/
Сменить пароль
Роли
Показать разрешения роли текущей базы данных:
EXEC sp_helprotect @username = '${ROLENAME}'
Показать роли пользователя текущей базы данных:
EXEC sp_helpuser '${LOGIN}'
Роль для SYSTEM
Добавить роль dbcreator:
EXEC master..sp_a @loginame = N'NT AUTHORITY\SYSTEM', @roleddsrvrolemembername = N'dbcreator'
Предоставить разрешения на сервер (ALTER ANY CONNECTION):
GRANT ALTER ANY CONNECTION TO [NT AUTHORITY\SYSTEM]
Роль для резервного копирования
Для каждой базы:
USE DBforBACKUP; GO CREATE LOGIN [<HOSTNAMEorDOMAIN>\sqlBackup] FROM WINDOWS; GO ALTER ROLE [db_backupoperator] ADD MEMBER [<HOSTNAMEorDOMAIN>\sqlBackup];
Для DBCC SHRINKFILE или DBCC SHRINKDATABASE требуется членство в фиксированной роли сервера sysadmin или фиксированной роли базы данных db_owner.
Роль выполнения процедур
Привилегии / Permission
Шифрование (TDE)
Создать мастер ключ и сертификат:
Для кластера или восстановления на другом сервере, сделать резервное копирование сертификата и ключа к нему:
Создать на другом сервере мастер ключ и сертификат из бэкапа:
Зашифровать базу:
Показать, зашифрована ли база:
Показать все зашифрованные базы и их состояние:
https://www.interface.ru/home.asp?artId=29621
Удалить шифрование и ключ шифрования базы данных:
https://docs.microsoft.com/en-us/sql/t-sql/statements/drop-database-encryption-key-transact-sql
Показать все сертификаты на сервере:
Показать каким сертифкатом зашифрована база:
https://www.mssqltips.com/sqlservertip/5009/updating-an-expired-sql-server-tde-certificate/
https://dba.stackexchange.com/questions/92080/query-to-list-encryption-certificate-for-databases
Добавить базу в группу Always On:
1. Always On группа должна быть настроена
2. Сертификат шифрования с ключём должен быть создан на вторичном сервере
3. Отключить резервное копирование БД, включая логи транзакций
4. Сделать резервную копию БД (Full и Transaction Log)
5. Восстановить БД на вторичном сервере (Full и Transaction Log):
Обновить сертифкат:
https://www.mssqltips.com/sqlservertip/5009/updating-an-expired-sql-server-tde-certificate/
Docker
https://github.com/mrlioncub/mssql-tools
Изменить директорию для резервных копий по умолчанию:
docker exec --user root mssql /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /var/opt/mssql/backups
Аутентификация AD (keytab)
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-containers-ad-auth-adutil-tutorial?view=sql-server-ver15
https://github.com/vicrem/mssql
Always On
tmpfs
Примеры
Активные соединения
Список медленных запросов
Активный сервер
Пример для Failover серверов.
https://learn.microsoft.com/ru-ru/sql/t-sql/functions/databasepropertyex-transact-sql
Backup & Restore
Резервное копирование и восстановление для mssql в контейнере на удалённом хосте по ssh:
Резервное копирование на локальной системе:
Дифференцированный бэкап определённых БД:
https://www.mssqltips.com/sqlservertip/1070/simple-script-to-backup-all-sql-server-databases/
Показать информацию о запросе:
Показать подробную информацию о запросе:
Резервное копирование определённых баз c проверкой на состояние и на исключение одновременного повтороного резервирования (при запуске из другого процесса):
Размер таблиц
Rebuild
Показать состояние индексов на текущей базе:
Перестроить индексы (@fillfactor - коэффициент заполнения в индексе):
https://stackoverflow.com/questions/32505775/rebuild-all-indexes-in-a-database
Список индексов базы с запросом в поле для фрагментации:
Attach / Detach
xp_cmdshell
Пример монтирования сетевого диска:
после необходимо вернуть значения 'xp_cmdshell' и 'show advanced options'
Удалить файл из файловой группы
файл не должен быть primary
Проверить является ли файл primary:
SELECT FILEPROPERTY('LogicalFileName', 'IsPrimaryFile')
Перенос базы tempdb
Database Mail
Экспорт настроек Database Mail
Пароли не экспортируются
После переноса настроек необходимо вернуть «Configuration option» в исходное значение
https://www.sqlservercentral.com/forums/topic/database-mail-export
SQL Agent
Экспорт настроек SQL Agent Operators
Database Mail
Для доступа к отправке почты, добавить права:
https://learn.microsoft.com/en-us/sql/relational-databases/database-mail/database-mail-common-errors
Проверить отправку почты (профиль должен быть настроен):
Auto Growth
Показать текущие настройки Growth всех баз кроме системных
Изменить Growth для всех баз кроме системных (для данных 1024MB, лога 512MB):
Alter databases
Включить на всех базах, кроме системных мониторинг производительности с использованием хранилища запросов (https://learn.microsoft.com/ru-ru/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store):
Проблемы
База в состоянии Restoring
Выполнить:
RESTORE DATABASE dbname WITH RECOVERY
База в состоянии In Recovery
Проверить процент выполнения:
Удалить базу:
- Остановить сервер
- Удалить ldf и mdf файлы базы
- Запустить сервер
- Удалить базу
База в состоянии Recovery Pending
Переименование базы Msg 5030
Решение:
- Установить базу в режим SINGLE_USER
- Переименовать базу
- Вернуть режим базы MULTI_USER
ALTER DATABASE OLD_DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE OLD_DBName MODIFY NAME = NEW_DBNAME; ALTER DATABASE NEW_DBNAME SET MULTI_USER;
https://sqlconjuror.com/sql-server-resolve-error-5030-to-rename-database/
https://docs.microsoft.com/ru-ru/sql/relational-databases/databases/set-a-database-to-single-user-mode
Удаление LogFile Msg 5009
Файл физически удалён, но логически отображается.
Установка на контроллер домена 0x851A001A
Решение:
Во время установки назначить пользователя для запуска:
- NT AUTHORITY\NETWORK SERVICE
- NT AUTHORITY\LOCAL SERVICE
Удаление пользователя
Ошибка:
Error 15138, Level 16, State 1, Line 1
The database principal owns a fulltext catalog in the database, and cannot be dropped.
Решение: Изменить хозяина sys.fulltext_catalogs для этой базы
Посмотреть в базе:
SELECT * FROM sys.fulltext_catalogs
Поменять:
ALTER AUTHORIZATION ON Fulltext Catalog::[CatalogName] TO [dbo];
Изменение owner БД
Ошибка:
Msg 15110, Level 16, State 1, Line 1 The proposed new database owner is already a user or aliased in the database.
Решение:
ALTER AUTHORIZATION ON DATABASE::[dbname] TO [username]
или
USE [dbname]; EXEC sp_dropuser [username]; USE [dbname]; EXEC sp_changedbowner [username];
https://vmblog.ru/izmenit-vladelca-mssql-server/
https://subhrosaha.wordpress.com/2012/04/26/sql-server-error-the-proposed-new-database-owner-is-already-a-user-or-aliased-in-the-database/
Отправка почты
Ошибка:
Msg 229, Level 14, State 5, Procedure msdb.dbo.sp_send_dbmail, Line 1 [Batch Start Line 0] The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
Решение: Database Mail
Ссылки
https://learn.microsoft.com/RU-RU/sql/linux/sql-server-linux-configure-environment-variables - Настройка параметров SQL Server с помощью переменных среды в Linux
https://www.microsoft.com/en-us/download/details.aspx?id=39046 - Microsoft Kerberos Configuration Manager for SQL Server (Checking SPN)
https://its.1c.ru/db/metod8dev/content/5861/hdoc@2239bf5c - Проблемы и решения / Высокая загрузка CPU на сервере СУБД MS SQL Server
