Один «Создать пользователя для входа в систему» ​​- для нескольких автономных машин - PullRequest
0 голосов
/ 05 ноября 2010

Я создал сценарий после развертывания для проекта базы данных в VS, в котором я предоставляю учетной записи Windows «UserX» доступ пользователя к базе данных. Этот сценарий после развертывания используется несколькими разработчиками, которым необходимо предоставить доступ «UserX» на своих собственных машинах qcnb01, qcnb03, qcnb04 и т. Д. (С автономными экземплярами sql). Есть ли способ заменить [qcnb02 \ UserX] местозаполнителем, т.е. [qcnb ?? \ UserX], а затем соответствующим образом вставить имя компьютера?

Ниже приведено мое заявление о создании пользователя.

ЕСЛИ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ sys.database_principals WHERE name = N'qcnb02 \ UserX ') СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ [UserX] ДЛЯ ВХОДА [qcnb02 \ UserX] С DEFAULT_SCHEMA = [dbo] GO

Позвольте мне уточнить, что «UserX» является статической частью, и сценарий после развертывания фактически ищет и вставляет имя компьютера (qcnb ??) обратно в сценарий после развертывания (т.е. [qcnb25 \ UserX]) во время время сборки \ развертывания. Это возможно?

Заранее спасибо за помощь.

JDA

Ответы [ 2 ]

0 голосов
/ 06 ноября 2010
DECLARE @MachineName VARCHAR(100) 
SET     @MachineName = Host_Name() 
DECLARE @SQL VARCHAR(1000) 

--IF NOT EXISTS (SELECT name FROM sys.syslogins WHERE name = N''+@MachineName+'\machine')  

BEGIN  
    SET @SQL = 'CREATE USER [machine] FOR LOGIN ['+@MachineName+'\machine] WITH DEFAULT_SCHEMA=[dbo]'  
    EXECUTE (@SQL)
END
0 голосов
/ 05 ноября 2010

Попробуйте это

DECLARE @MachineName VARCHAR(100)
SELECT @MachineName = Host_Name()
 DECLARE @SQL VARCHAR(1000)
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''+@MachineName+'\UserX') 
BEGIN 

    SET @SQL = 'CREATE USER [UserX] FOR LOGIN ['+ @MachineName+'\USERX] WITH DEFAULT_SCHEMA=[dbo]' 
    EXECUTE @SQL
END 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...