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)
Non ho pensato di usare SQL inline. Grazie, ho dovuto apportare alcune modifiche alla sintassi ma il concetto ha funzionato. – Terry
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. –
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