Наши преимущества

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

demav

Турист
Credits
0
Может кто-то знает как командой SQL получить тип авторизации (SQL/Windows) для сервера MS SQL Server?

Проще говоря, мне надо знать - можно ли к серверу логиниться с логином/паролем или нет.
 
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

И учитесь пользоваться поиском...
 
Последнее редактирование модератором:
Спасибо!
Поиском перерыл весь инет, что в реестре это лежит знаю.

Но не дошло, что можно ключ из реестра прочитать с помощью T-SQL.
 
Оказывается предложенное решение не всегда работает. Например, у мен 64-разрядная ОС и ветка реестра другая.

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

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

Код:
select serverproperty('IsIntegratedSecurityOnly')

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

Код:
EXEC master.dbo.xp_loginconfig 'login mode'
 
Последнее редактирование модератором:
Задача решена, но практически воспользоваться я не могу, вот в чем дело.

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

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

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

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