
Как известно в SQL Server можно выбрать один из двух типов аутинтификации - Windows Authentication (Аутентификация Windows) или SQL Server Authentication (Аутентификация SQL Server). Сменить режим аутентификации на сервере с помощью SSMS (SQL Server Management Studio) либо с помощью EM (Entreprise Manager) достаточно легко, достаточно в свойствах сервера перейти на закладку Security и установить нужную "галку".

После этого обязательно необходимо перезапустить службу MSSQLSERVER.
Всё это достаточно прозрачно, но что делать, если у нас бесплатная редакция MSDE(2000) или Express (2005/2008) без установленных клиентских утилит?
Ответ достаточно прост, если знать, что настройки аутентификации хранятся в реестре.
С помощь недокументированной процедуры T-SQL xp_instance_regwrite, через утилиты OSQL/SQLCMD, меняем значение (
- Windows Authentication mode;
- SQL Server and Windows Authentication mode)
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 1
Далее мы помним, что после смены типа аутинтификации, необходимо перезапустить службу. Остановить её можно так же с помощью T-SQL (процедура xp_servicecontrol также недокументированная):
EXEC master..xp_servicecontrol 'stop', 'MSSQLSERVER'
А вот запустить службу через T-SQL не выдет, т.к. она остановлена, но если у вас установлен второй инстанс, тогда через него достаточно выполнить:
EXEC master..xp_servicecontrol 'start', 'MSSQLSERVER'
Но на мой взгляд службу лучше перестартовывать с помощью команд: net stop MSSQLSERVER/net start MSSQLSERVER
Тогда конечный вариант для смены аутентификации на сервере будет выглядеть так (достаточно вставить этот код в bat-файл и использовать, когда вам это потребуется):
- SQLCMD -E -q "EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 1"
- net stop MSSQLSERVER
- net start MSSQLSERVER