2014-01-22 4 views
0

У нас есть SQL Server, который использует аутентификацию SQL Server, с пользователями, которые могут развернуть, и другие, которые могут читать, для простоты, я буду называть их «развернуть» и «сеть».Могу ли я игнорировать логины при публикации проекта базы данных Visual Studio?

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

Я могу добавить скрипты, чтобы сделать такие вещи, как:

GRANT SELECT ON foo.bar TO [web] 

Это то дуется (с "SQL71501: Разрешение имеет неразрешенный ссылку на объект [Интернет]."), Пока я не добавить:

CREATE USER [web] FOR LOGIN [web]; 

Это то дуется (с "SQL71501: Пользователь: [Web] имеет неразрешенный ссылку на Логин [Интернет]."), пока я не добавить:

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

Это тогда не удается опубликовать с:

Отбрасывания Разрешения ...
капельного Разрешения ...
Создания [Веб] ...
(67,1): SQL72014: Provider .Net SqlClient данных : Msg 15247, уровень 16, состояние 1, строка 1 У пользователя нет разрешения на выполнение этого действия.
(67,0): SQL72045: ошибка выполнения сценария. Выполненный скрипт:
CREATE LOGIN [webuser]
С PASSWORD = '**';

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

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

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

ответ

1

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

GRANT VIEW DEFINITION ON LOGIN::web TO deploy