Назад | Перейти на главную страницу

скрипт для включения мгновенной инициализации файла с помощью secedit

Я бы хотел включить IFI http://bit.ly/1dK32Dc на новом или существующем компьютере Windows Server с SQL Server через T-SQL или Powershell. Не хочу проходить маршрут «Локальная безопасность> Локальные политики> Назначение прав пользователя> Выполнить задачи обслуживания тома> Добавить пользователя» - необходимо развертывать новые машины с помощью сценария, без ручного взаимодействия. Предположим, что учетная запись службы SQL Server не изменяется.

Для новых установок, когда я выбираю учетную запись, я могу запустить приведенный ниже сценарий Powershell, и он решает проблему:

$sqlaccount = "domain\account"
# https://technet.microsoft.com/en-gb/library/bb490997.aspx
secedit /export /cfg C:\secexport.txt /areas USER_RIGHTS
$line = Get-Content C:\secexport.txt | Select-String 'SeManageVolumePrivilege'
(Get-Content C:\secexport.txt).Replace($line,"$line,$sqlaccount") | Out-File C:\secimport.txt
secedit /configure /db secedit.sdb /cfg C:\secimport.txt /overwrite /areas USER_RIGHTS

Однако для существующих установок SQL невозможно найти способ запросить настроенную учетную запись службы SQL Server и передать ее этому сценарию. Ищете решение с учетом WS 2012 R2, но что-то, что также работало бы на WS 2003 R2, было бы лучше (поддерживает до Powershell 2, если я не ошибаюсь?).

Работает нормально, но в Windows Server 2016 зависает при настройке secedit. Чтобы этого не произошло, просто добавьте:

Write-Host "y" | secedit / configure / db secedit.sdb / cfg C: \ secimport.txt / overwrite / area USER_RIGHTS

(Get-WmiObject win32_service | where { $_.displayname -eq "SQL Server"} ).startname

Замените имя отображаемым именем службы SQL-сервера.