2009-12-28 4 views
2

Я бы хотел ссылаться на учетную запись пользователя на компьютере под управлением Windows, не зная имя хоста компьютера.Укажите имя пользователя Windows в SQL-скрипте, не зная имя машинного узла

В частности, я назначаю разрешения для базы данных SQL-сервера, в sql-скрипте, который даст разрешения для локальной учетной записи пользователя на этом компьютере.

Например: CREATE USER [UserA] для входа [MACHINENAME \ UserA] С DEFAULT_SCHEMA = [DBO]

Этот скрипт вызывается как часть процесса установки, так что я не знаю «MACHINENAME ' досрочно.

Есть ли специальный токен, означающий «локальная машина», которую я могу использовать? Что-то вроде: '. \ UserA', или 'localhost \ UserA'?

Спасибо!

ответ

1

Я на самом деле не использовал это, но вы можете найти то, что вам нужно в переменных среды режима SQLCMD.

Существует, в частности, SQLCMDWORKSTATION, что я думаю, даст вам то, что вы хотите.

В MSDN documentation указано, что эта переменная по умолчанию совпадает с именем компьютера.

Вы также можете переопределить эти переменные среды в файле .ini файла SQLCMD.

Если это не сработает, вы все равно сможете найти работоспособное решение в режиме SQLCMD - оно позволяет динамически вставлять переменные в SQL-скрипты.

1

Спасибо - я нашел хороший способ сделать это, используя SERVERPROPERTY ('MachineName') следующим образом:

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