SSDT Опубликовать Попытка удалить и создать пользователя - PullRequest
0 голосов
/ 20 апреля 2019

В Visual Studio 2017 у меня есть проект SQL Server с простой базой данных, использующей аутентификацию SQL.

Я пытаюсь опубликовать новую таблицу.Однако сценарий публикации пытается удалить и заново создать пользователя, которого я использую для публикации базы данных.

GO
PRINT N'Dropping [adf]...';
GO
DROP USER [adf];
GO
PRINT N'Creating [adf]...';
GO
CREATE USER [adf] WITHOUT LOGIN;
GO
REVOKE CONNECT TO [adf];
GO
PRINT N'Creating <unnamed>...';
GO
EXECUTE sp_addrolemember @rolename = N'db_owner', @membername = N'adf';

CREATE TABLE ....

Я прочитал предварительный просмотр:

** Highlights
     Tables that will be rebuilt
       None
     Clustered indexes that will be dropped
       None
     Clustered indexes that will be created
       None
     Possible data issues
       None

** User actions
     Drop
       [adf] (User)
     Create
       [adf] (User)
       [staging].[square_transactions] (Table)

** Supporting actions
     Create
       Role Membership: <unnamed> (Role Membership)

Your permissions to see all objects in the server or database could not be verified.  The original error was:
The SELECT permission has not been granted on 'sys.sql_logins' for the 'master' database. You must be a member of the 'loginmanager' role to access this system view. 
Reverse Engineer will continue the import process, and logins will not be imported.
The reverse engineering operation will attempt to continue anyway, but the resulting model might be incomplete, malformed, or incorrect.

Я добавил loginmanagerРоль для входа в систему [adf] Интересно, исправит ли это удаление и создание пользователя [adf].Это не так.

Наконец, я опубликовал с использованием учетной записи администратора сервера.Он по-прежнему удаляется и создает пользователя, но по крайней мере смог его запустить.

Как я могу решить эту проблему?Я думал, что не должен использовать учетную запись администратора уровня сервера для разработки базы данных в SSDT / VS.

1 Ответ

0 голосов
/ 20 апреля 2019

Вам также необходимо добавить Adf для входа в основную базу данных. Вам просто нужно создать этот логин на master один раз. Пожалуйста, попробуйте следующее:

---- На уровне сервера

CREATE LOGIN adf
    WITH PASSWORD = 'ThisIsAStrongPassword!' 
GO

---- Создать пользователя на главной базе данных Уровень

CREATE USER adf
    FOR LOGIN adf
    WITH DEFAULT_SCHEMA = dbo
GO
exec sp_addRoleMember 'dbmanager', 'adf';
exec sp_addRoleMember 'loginmanager', 'adf'

---- Создать пользователя в базе данных пользователей

CREATE USER adf
    FOR LOGIN adf
    WITH DEFAULT_SCHEMA = dbo
GO
exec sp_addRoleMember 'db_owner', 'adf';
...