Могу ли я игнорировать логины при публикации проекта базы данных Visual Studio?

У нас есть SQL Server, который использует проверку подлинности SQL Server, с пользователями, которые могут развертывать, и другие, которые могут читать, для простоты я назову их «развертывание» и «Интернет».

У меня возникли трудности с настройкой разрешений с помощью проекта базы данных Visual Studio (2012), так как пользователь, выполняющий развертывание, не имеет достаточных разрешений для создания новых учетных записей на сервере.

Я могу добавлять сценарии, чтобы делать что-то вроде:

GRANT SELECT ON foo.bar TO [web]

Затем это дуется (с «SQL71501: Permission имеет неразрешенную ссылку на объект [web].»), Пока я не добавлю:

CREATE USER [web] FOR LOGIN [web];

Затем это дуется (с «SQL71501: User: [web] имеет неразрешенную ссылку на Login [web].»), Пока я не добавлю:

CREATE LOGIN [web] WITH PASSWORD = '******';

Затем это не удается опубликовать с помощью:

Удаление разрешения ...
Удаление разрешения ...
Создание [веб-пользователя] ...
(67,1): SQL72014: .Net Поставщик данных SqlClient: Сообщение 15247, уровень 16, состояние 1, строка 1 У пользователя нет разрешения на выполнение этого действия.
(67,0): SQL72045: Ошибка выполнения сценария. Выполняемый скрипт:
СОЗДАТЬ ЛОГИН [веб-пользователь]
С ПАРОЛЕМ = '**';

Произошла ошибка при выполнении пакета.

Это не имеет смысла, поскольку пользователь уже существует, поэтому создавать

Как я могу разрешить публикацию через пользователя развертывания, не пытаясь (повторно) создавать логин каждый раз? Или можно сослаться на созданного извне пользователя без его публикации?


person Rowland Shaw    schedule 22.01.2014    source источник


Ответы (1)


Поскольку пользователь уже существует, я подозреваю, что пользователь, который используется для выполнения развертывания, не имеет прав на его просмотр. Ниже должно быть все, что вам нужно для решения этой проблемы.

GRANT VIEW DEFINITION ON LOGIN::web TO deploy

person WillAlber666    schedule 22.01.2014