9 votes

Création d'un login SQL Server via script en utilisant une variable

J'essaie de créer un login SQL Server suite à la création d'une base de données par script. Le login est local au PC hôte et ce script sera exécuté sur plusieurs hôtes.

Ce que je veux faire est le suivant :

USING MyDatabase
CREATE MyUser FOR LOGIN USER <computer name>/MyUser 

Ce que je ne sais pas faire, c'est incorporer le nom de l'ordinateur (ex. Location0001) dans cette déclaration.

Le login existe sur chaque machine ET est déjà répertorié sur le serveur SQL car il a accès à d'autres bases de données sur ce serveur.

Si cela est pertinent, le script devrait pouvoir être exécuté sur SQL Server 2008.

Le login se présente comme suit pour chaque machine :

Location0001\MyUser
Location0002\MyUser
Location0999\MyUser

Toute aide serait appréciée, merci.

Edit : Ma solution finale basée sur la réponse acceptée est la suivante :

DECLARE @cmd VARCHAR(200)
SET @cmd = N'CREATE USER [MyUser] FOR LOGIN [' + HOST_NAME() + '\MyUser]'
EXEC (@cmd)

10voto

Michal Barcik Points 612

Vous pouvez utiliser la propriété @@servername pour obtenir le nom de la machine : select @@servername

declare @cmd varchar(200), @username varchar(50)

set @username = 'testuser'
set @cmd = ' 
   USE MyDatabase
   CREATE USER MyUser FOR LOGIN '+@@servername+'\'+@username 
PRINT @cmd
EXEC (@cmd)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X