узнать тип авторизации SQL Server

derricfle

Member
Joined
Nov 20, 2018
Messages
299
Reaction score
53
Может кто-то знает как командой SQL получить тип авторизации (SQL/Windows) для сервера MS SQL Server?

Проще говоря, мне надо знать - можно ли к серверу логиниться с логином/паролем или нет.
 

ONIM

Exploit Developer
Joined
Feb 26, 2006
Messages
124
Reaction score
182
CREATE FUNCTION dbo.fnGetSQLServerAuthenticationMode
(
)
RETURNS INT
AS

BEGIN
DECLARE @InstanceName NVARCHAR(1000),
@Key NVARCHAR(4000),
@LoginMode INT

EXEC master..xp_regread N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\',
N'MSSQLSERVER',
@InstanceName OUTPUT

IF @@ERROR <> 0 OR @InstanceName IS NULL
RETURN NULL

SET @Key = N'Software\Microsoft\Microsoft SQL Server\' + @InstanceName + N'\MSSQLServer\'

EXEC master..xp_regread N'HKEY_LOCAL_MACHINE',
@Key,
N'LoginMode',
@LoginMode OUTPUT

RETURN @LoginMode
END

И учитесь пользоваться поиском...
 
Last edited by a moderator:

derricfle

Member
Joined
Nov 20, 2018
Messages
299
Reaction score
53
Спасибо!
Поиском перерыл весь инет, что в реестре это лежит знаю.

Но не дошло, что можно ключ из реестра прочитать с помощью T-SQL.
 

derricfle

Member
Joined
Nov 20, 2018
Messages
299
Reaction score
53
Оказывается предложенное решение не всегда работает. Например, у мен 64-разрядная ОС и ветка реестра другая.

Вероятно место хранения ветки в реестре также можно узнать в реестре :)

Но вот еще решение подсказали:

Code:
select serverproperty('IsIntegratedSecurityOnly')

Еще один способ:

Code:
EXEC master.dbo.xp_loginconfig 'login mode'
 
Last edited by a moderator:

derricfle

Member
Joined
Nov 20, 2018
Messages
299
Reaction score
53
Задача решена, но практически воспользоваться я не могу, вот в чем дело.

Мне нужно ДО ввода логина / пароля пользователем (в программе) узнать тип авторизации. И если тип авторизации НЕ "sql server", то предупредить.

Но для проверки залогиниться в режиме авторизации Windows не всегда возможно, т.к. виндовый пользователь на данном компьютере не всегда может залогиниться в MS SQL Server (на другом копьютере). Ну а в режиме "sql server" залогиниться не могу, т.к. логин/пароль неизвестен.

Или я чего-то недогоняю?

Сделал так.
На клиенте анализирую код ошибки.
И сравниваю с 18452 (Login failed for user '%ls'. Reason: Not associated with a trusted SQL Server connection.)
 
Last edited by a moderator:

Sleep1

New member
Joined
Jun 9, 2017
Messages
4
Reaction score
0
"Lol what's with the Russian in the title? Anyway, assuming you're asking about SQL Server, you can check the type of auth by looking at the properties of your server in SSMS or by running a query like `SELECT @@SERVERNAME;` or `SELECT @@VERSION;`"
 
Top