===== После-установочные проверки системных привилегий SQL Server ===== {{:1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190417-135304.png }} Инсталлятор **SQL Server 2016** в ходе установки экземпляра настраивает на операционной системе сервер ряд параметров, в том числе и параметры безопасности, для учётных записей, от имени которых будут работать службы SQL Server. Однако несмотря на то, что в ходе установки в качестве учётных записей служб нами могут быть заданы определённые сервисные учётные записи (user/[[microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa|MSA/gMSA]]), они в явном виде могут не получить нужных привилегий в ОС. Вместо этого инсталлятор SQL Server выдаёт соответствующие привилегии используемым по умолчанию виртуальным учётным записям (**Virtual Account**) вида ''NT Service\MSSQL&<имя экземпляра>'', ''NT Service\SQLAgent&<имя экземпляра>'' и т.п.. По сути своей разрешения, выданные сервисным учётным записям (user/MSA/gMSA) и выданные виртуальным учётным записям, которые автоматически создаёт инсталлятор SQL Server, тождественны. Прочитать об этом можно в обсуждении [[https://social.technet.microsoft.com/Forums/ru-RU/6fc6ca5f-6fc9-4611-acf3-655ed9e437c5/1056107210791076107210951072-1087108810721074?forum=sqlru|Раздача прав сервисным учётным записям при установке SQL Server 2016]] Получить информацию о привилегиях, которые должны быть выданы сервисным учётным записям для каждого типа службы SQL Server можно в документе [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions|Microsoft Docs - SQL Server : Configure Windows Service Accounts and Permissions]] После установки SQL Server нам желательно, как минимум, проверить в консоли **Local Security Policy** (**secpol.msc**) в разделе **Local Policies** > **User Rights Assignment** следующие назначения прав для учётных записей, от имени которых запускаются службы экземпляра **SQL Server Database Engine** и **SQL Server Agent**: * **Bypass traverse checking** * **Adjust memory quotas for a process** * **Replace a process level token** * **Log on as a service** \\ ==== Проверка права Database Instant File Initialization ==== Необходимо убедиться в том, что выданное нами ранее [[1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:Database-instant-file-initialization|право мгновенной инициализации файлов]] (**Database instant file initialization**), действительно работает. Для этого в консоли **SQL Server Management Studio** проверим **SQL Server error log**. При перезапуске службы экзепляра SQL Server в логе должно фигурировать информационное событие вида:
Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
{{ :1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190212-161944.png }} Попробуем для проверки в консоли **SQL Server Management Studio** временно создать новую базу данных с размером файла данных, например, **10GB** и журнал транзакций размером в 1 MB. Если база создалась моментально, то все работает корректно. Если база создаётся длительное время, значит c механизмом **Database instant file initialization** какие-то проблемы. Дополнительный метод проверки с включением трассировки SQL Server можно подсмотреть в статье [[https://www.haidongji.com/2016/05/20/sql-server-best-practice-grant-permissions-to-per-service-sid/|SQL Server best practice: grant permissions to per-service SID]] \\ ==== Проверка доступа учётной записи службы SQL Agent к экземпляру SQL Server ==== Учётная запись от имени которой выполняется служба **SQL Server Agent** должна иметь полный доступ к экземпляру SQL Server, так как это потребуется в дальнейшем при настройке регламентных процедур обслуживания. Подтверждение требования такого рода можно найти в документе [[https://docs.microsoft.com/en-us/sql/ssms/agent/select-an-account-for-the-sql-server-agent-service?view=sql-server-2017|Select an Account for the SQL Server Agent Service]] Разрешения такого рода для сервисной учётной записи вида ''NT SERVICE\SQLAgent$<ИмяЭкземпляра>'' должны появиться на уровне экземпляра автоматически. Мы можем это перепроверить, заглянув в консоли **SQL Server Management Studio** в список логинов экземпляра SQL Server. {{ :1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190212-162108.png }} ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ Версия SQL Server ^ | Microsoft Windows Server 2012 R2 Standard EN (6.3.9600) | Microsoft SQL Server 2016 SP2 CU4 (13.0.5233.0) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 12.02.2019 16:15 {{tag>"SQL Server" "SQL Agent" "SQL Server 2016" "Windows Server 2012 R2" gMSA "Virtual Account" "Windows Service" "Local Policies" "Management Studio"}} ~~DISCUSSION~~ ~~NOTOC~~