私はVS2010にSQL 2005データベースプロジェクトを持っています。私は作成され、データベースへのアクセス許可を与えられたユーザーを持っています。データベースプロジェクト展開時のアクセス許可を破棄
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
Iは、選択された構成(デバッグ(DEV)、QA、UAT、生産)に応じて、マシンの名前を保持$(MachineName)
ために定義されたSQLCMDVARを有します。この変数は、生成されたSQLの一番上に正しく設定されている:私はこのプロジェクトを展開するとき
:setvar MachineName "TheMachineName"
、上記のスクリプトで作成されたユーザーは削除され、その後、再作成し、ユーザーの権限が取り消されています。デプロイメント中に、このユーザーおよびその権限に関する生成内容は、データベース内のユーザーの状態によって異なります。
ユーザーがdatareader
とdatawriter
のアクセス許可を持つ場合、これらのアクセス許可は取り消され、ユーザーは削除され、ユーザーは再作成され、アクセス許可は適用されません。
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
私が把握することはできません:私は再度プロジェクトを展開する場合
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
は、パーミッションが正しく生成され、ユーザに適用されます:Visual Studioはsp_addrolemember
コマンドがあるべきこの行を追加しますなぜこれが起きているのですか?
私はちょうど同様の問題を抱えています。つまり、VSからの直接の配備によってすべてのユーザーのアクセス許可が取り消されました。 – Alex
@Alex、それは本当にイライラしています。そして、どんな入力があるように見えません! –