2009-12-28 6 views
2

Je voudrais faire référence à un compte d'utilisateur sur une machine Windows, sans connaître le nom d'hôte de la machine. En particulier, j'attribue des autorisations sur une base de données de serveur SQL, dans un script SQL, qui donnera des autorisations à un compte d'utilisateur local sur cette machine.Spécification du nom d'utilisateur Windows dans SQL Script sans connaître le nom d'hôte machine

Par exemple: CREATE USER [UserA] LOGIN [MACHINENAME \ UserA] AVEC DEFAULT_SCHEMA = [dbo]

Ce script est invoqué dans le cadre d'un processus d'installation, donc je ne sais pas « MACHINENAME ' en avance.

Existe-t-il un jeton spécial signifiant «la machine locale» que je peux utiliser? Quelque chose comme: '. \ UserA', ou 'localhost \ UserA'?

Merci!

Répondre

1

Je ne l'ai pas réellement utilisé, mais vous pouvez trouver ce dont vous avez besoin dans les variables d'environnement du mode SQLCMD.

Il y en a un en particulier SQLCMDWORKSTATION qui, je pense, vous donnera ce que vous voulez. Le MSDN documentation indique que cette variable est par défaut le nom de l'ordinateur.

Vous pouvez également remplacer ces variables d'environnement dans un fichier .ini SQLCMD.

Si cela ne fonctionne pas, alors vous pouvez toujours trouver une solution réalisable en mode SQLCMD - il vous permet d'insérer dynamiquement des variables dans des scripts SQL.

1

Merci - je l'ai trouvé une bonne façon de le faire, en utilisant la SERVERPROPERTY ('MachineName'), comme suit:

DECLARE @USERNAME NVARCHAR(MAX) 
DECLARE @MACHINE_NAME NVARCHAR(MAX) 
SELECT @MACHINE_NAME = CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(MAX)) 
SET @USERNAME = @MACHINE_NAME + '\UserA' 
Questions connexes