У нас есть программный пакет, который наши клиенты устанавливают на ноутбуки своих пользователей.
Часть установщика запускает MS Sql Server Express 2014.
Мы передаем программе установки параметры командной строки, которые должны разрешить вход в SA и предоставить права sqladmin группе Windows BUILTIN \ Administrators.
Запускаем командную строку установщика:
SETUP.EXE /QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" /SECURITYMODE=SQL /SAPWD="ASecretPassword"
AIUI, / SECURITYMODE = SQL должен разрешить вход в SA, и / SQLSYSADMINACCOUNTS = должен предоставить права sqladmin группе Windows.
Документация по этим аргументам находится здесь:
Установите SQL Server из командной строки
И на каждой машине, которую я пробую, и на машинах клиента я вижу именно эту командную строку в нашем журнале установки.
Но на машине клиента эти аргументы, похоже, не действуют.
Когда я запускаю следующий запрос:
SELECT name, is_disabled
FROM master.sys.server_principals sp
JOIN master.sys.server_role_members sr
ON sr.member_principal_id = sp.principal_id
WHERE sr.role_principal_id = 3
На машине, на которую я установил программное обеспечение, я вижу:
name type_desc is_disabled
sa SQL_LOGIN False
BUILTIN\Administrators WINDOWS_GROUP False
NT SERVICE\SQLWriter WINDOWS_LOGIN False
NT SERVICE\Winmgmt WINDOWS_LOGIN False
NT Service\MSSQL$SQLEXPRESS WINDOWS_LOGIN False
DESKTOP1\KT Developer WINDOWS_LOGIN False
Чего я и ожидал.
Но когда пользователь запускает тот же запрос на машине в своем домене после установки нашего программного обеспечения, он видит:
name type_desc is_disabled
sa SQL_LOGIN True
И это несмотря на то, что мы передали аргументы установке Sql Server Express, сообщающие, что нужно включить вход в SA и добавить авторизацию для BUILTIN / Administrators. Мы не только не видим включенного SA или прав администратора, предоставленных BUILTIN / Administrators, мы не видим прав, предоставленных стандартным службам Windows.
На этом этапе я готов сообщить клиенту, что проблема в его собственных групповых политиках безопасности, и сказать им, что им нужно будет изменить политики, мы ничего не можем сделать.
Но прежде чем я это сделаю, я искал подтверждения того, что единственная причина, по которой в установленной базе данных Sql Express нет административных пользователей, которых мы сказали установщикам, заключается в том, что это предотвращают собственные групповые политики клиента.
Может ли кто-нибудь придумать другую причину, по которой это может происходить?
Некоторые дополнительные пояснения.
Это приложение и установщик, которые уже много лет работают у многих клиентов. У одного клиента он перестал работать после обновления Windows 1809.
Установка не выполняется на чистом ноутбуке с новой установкой Windows 10 и без дополнительного программного обеспечения.
Что ж, в этом случае, как и во многих других, оказывается, что то, что пользователь сообщает, что происходит после того, как он что-то делает, не имеет никакого смысла, потому что либо пользователь не говорит вам, что происходит, либо он не говорит вам, что он делает.
В этом случае, когда пользователь выполнял установку на «чистую» машину, он устанавливал на тот, на котором приложение было установлено, а затем удалено, но на котором не был удален SQL Server Express.
Мои изменения в установке Sql Server Express для включения SA и BUILTIN \ Administrators не вступали в силу не из-за политик безопасности, а потому, что установщик SQL Server Express не запускался, если бы он уже присутствовал.