Разрешения на удаление проекта базы данных при развертывании - PullRequest
1 голос
/ 30 марта 2012

У меня есть проект базы данных SQL 2005 в VS2010. У меня есть пользователь, который создается и получает разрешения для базы данных.

Test.user.sql

CREATE USER [$(MachineName)\Test] FOR LOGIN [$(MachineName)\Test] WITH DEFAULT_SCHEMA = dbo;
GO
EXEC sp_addrolemember N'db_datawriter', N'$(MachineName)\Test'
GO
EXEC sp_addrolemember N'db_datareader', N'$(MachineName)\Test'
GO

У меня есть SQLCMDVAR, определенный для $(MachineName), который содержит имя машины в зависимости от выбранной конфигурации (Debug (Dev), QA, UAT, Production). Эта переменная корректно устанавливается в верхней части сгенерированного SQL:

:setvar MachineName "TheMachineName"

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

Если пользователь существует с разрешениями datareader и datawriter, эти разрешения отменяются, пользователь удаляется, затем пользователь воссоздается, а разрешения нет. Visual Studio добавляет эту строку, где команды sp_addrolemember должны быть:

PRINT N'Altering <unnamed>...';
GO
PRINT N'No script could be generated for operation 2 on object ''<unnamed>''.';
GO
PRINT N'Altering <unnamed>...';
GO
PRINT N'No script could be generated for operation 2 on object ''<unnamed>''.';
GO

Если я снова разверну проект, разрешения будут правильно сгенерированы и применены к пользователю:

PRINT N'Creating <unnamed>...';
GO
EXECUTE sp_addrolemember @rolename = N'db_datareader', @membername = N'$(MachineName)\Test';
GO
PRINT N'Creating <unnamed>...';
GO
EXECUTE sp_addrolemember @rolename = N'db_datawriter', @membername = N'$(MachineName)\Test';
GO

Я не могу понять, почему это происходит, какие-либо предложения?

1 Ответ

1 голос
/ 10 мая 2013

Это известная ошибка в Visual Studio. См. vsts 2010 ошибка развертывания базы данных и vsts 2010 ошибка развертывания базы данных . Есть некоторые признаки того, что это может быть исправлено в Microsoft SQL Server Data Tools . Вам не повезло с этим, если вы используете XP, хотя для установки SSDT требуется Vista или более поздняя версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...