2011-09-27 12 views
7

Sto tentando di creare un accesso a SQL Server dopo la creazione di un database tramite script. L'accesso è locale al PC host e questo script verrà eseguito su più host.Creazione dell'accesso a SQL Server tramite script utilizzando la variabile

Quello che voglio fare è la seguente:

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

Quello che non so come fare è incorporare il nome del computer (ex Location0001.) In questa informativa.

Il login esiste su ogni macchina E è già elencato su SQL Server in quanto ha accesso ad altri database lì.

Se è rilevante, lo script dovrebbe essere in grado di funzionare su SQL Server 2008.

L'accesso sarebbe simile a questa per ogni macchina:

Location0001\MyUser 
Location0002\MyUser 
Location0999\MyUser 

Qualsiasi aiuto sarebbe apprezzato, grazie.

Edit: La mia soluzione definitiva in base alla risposta accettata è la seguente:

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

risposta

7

È possibile utilizzare il @@ servername proprietà per ottenere il nome della macchina: select @@servername

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

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

Non ho pensato di usare SQL inline. Grazie, ho dovuto apportare alcune modifiche alla sintassi ma il concetto ha funzionato. – Terry

+4

Si consiglia di utilizzare sp_executesql anziché EXEC (UTE). Consente query parametrizzate che eliminano la possibilità di SQL Injection e utilizza il riutilizzo del piano dalla cache del piano. –

+2

Questo suggerimento funzionerà solo per l'istanza predefinita. Per le istanze denominate, '@@ servername' restituirà 'MACHINE \ INSTANCE', quindi CREATE USER non riuscirà. Hai bisogno di 'HOST_NAME()' come OP suggerito, o 'ServerProperty ('MachineName')', a seconda di cosa stai cercando di ottenere. So che questo è stato risolto - sto scrivendo per coloro che arrivano da ricerche sul web. – Cozzamara

Problemi correlati