APSQL

Utiliser TSQL pour identifier le mode de sécurité

SQL server propose 2 modes de sécurité pour les connexions (login) soit windows soit mixte (Windows et SQL Server). Cette étape de configuration du serveur étant ponctuelle, il est normal de la réaliser depuis l'interface graphique via SSMS.

Cependant, il peut être interressant de déterminer le mode sécurité actif au niveau du serveur par l'intermédiaire d'une instruction Transact SQL.

SERVERPROPERTY

Une façon connaitre cette configuration consiste simplement à utiliser la fonction SERVERPROPERTY en lui passant en paramètre IsIntegratedSecurityOnly. La fonction retourne la valeur 1 si SQL est configuré en mode de sécurité windows ou 0 dans le cas contraire. L'intérrogation peut être alors la suivante:

select SERVERPROPERTY('isIntegratedSecurityOnly')

Certains utilisent la procédure stockée étendue xp_loginconfig pour connaitre l'état de configuraiton de la sécurité du serveur Mais cette procédure est marquée comme deprecated, aussi est il préférable de passer par SERVERPROPERTY.

Lire le registre

Comme beaucoup d'informations on retrouve ce paramétrage dans le registre. Il est donc possible de lire la valeur positionnée au niveau du registre afin d'en déduire le mode de sécurité (1=Windows, 2=Windows et SQL Server). Cette olution passe par l'utilisation de la procédure stockée étendue xp_instance_regread. Dans tous les cas il est souhaitable de privilégier l'usage de SERVERPROPERTY.

Exemple d'utilisation de la xp_instance_regread

DECLARE @modeSecurite INT
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', 
   N'Software\Microsoft\MSSQLServer\MSSQLServer', 
   N'LoginMode', @modeSecurite OUTPUT
SELECT @modeSecurite