узнать тип авторизации 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
125
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

Member
Joined
Jun 9, 2017
Messages
6
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;`"
 

Мария_90

New member
Joined
Apr 7, 2017
Messages
4
Reaction score
0
"Lol, думаю это вопрос про то, как узнать тип аутентификации SQL Server в базе данных. В общем, обычно это можно увидеть в свойствах базы данных или в ошибках аутентификации при попытке подсоединения."
 

Pozdnyakov

New member
Joined
Jul 18, 2011
Messages
4
Reaction score
0
"Hey, you can check the type of SQL Server authentication by looking at the properties of your server in SSMS or by running the command 'SELECT @@VERSION' in Query Editor. That should tell you what version you're running. It's usually pretty straightforward."
 

retohiyume

New member
Joined
Apr 21, 2009
Messages
2
Reaction score
0
"Hey guys, I think I can help with this. The type of authentication SQL Server uses is usually determined by the 'Authentication Mode' setting in the Server Properties. You can find this setting by right-clicking on your server in SSMS and clicking on 'Properties'."
 
Top