2

ユーザーを含むデータベース プロジェクトを作成しました。

TimTestUser.user.sql

CREATE USER [TimTestUser]
      FOR LOGIN [TimTestLogin]

また、サーバー プロジェクト TimTestLogin.login.sql にログインを作成しました。

CREATE LOGIN TimTestLogin WITH PASSWORD = 'tim'

選択した Database.sqldeployment で: ターゲット データベースにあるオブジェクトのドロップ ステートメントを生成する

DB プロジェクトをデプロイすると、ユーザーが削除されてから再作成されます。これにより、[ユーザーへのログイン] リンクが失敗し、ユーザーが孤立します。

アップデート:

DB プロジェクトをデプロイすると [TimTestUser] への接続の取り消しが生成されます

4

4 に答える 4

2

Visual Studio 2013 で SQL Server データベース プロジェクトを使用する場合、データベースをプロジェクトにインポートするときに [権限のインポート] オプション (既定ではオフ) をオンにすることで、この問題を回避できます。

これにより、各ユーザーの GRANT ステートメントを含む Permissions.sql ファイルが Security ディレクトリに作成されます。

GRANT CONNECT TO [MyUser] AS [dbo];
于 2014-02-26T20:33:06.097 に答える
1

配置後スクリプトとして GRANT CONNECT を追加しようとした後、SQL Server Management Studio 2014 で接続権限を手動で設定した後、まったく新しい .sqlproj を再生成しようとした後、BunnyStriderが正しいことを発見しました: GRANT を追加する必要がありますCREATE USER が含まれているのと同じスクリプト ファイルに CONNECT します。コードは次のとおりで、すべてが Security フォルダーの TimTestUser.sql という名前の 1 つのファイルに含まれています。

CREATE USER [TimTestUser]
      FOR LOGIN [TimTestLogin];
GO
GRANT CONNECT TO [TimTestUser];
GO

次に、GRANT CONNECT を含むインポート ウィザードで生成された Permissions.sql と、追加した配置後スクリプトを削除して、このコードを確認しましたが、接続は引き続き機能していました。次に、デプロイ スクリプトを再生成し (*.Publish.xml ファイルをダブルクリックして [スクリプトの生成] をクリック)、REVOKE CONNECT TO [TimTestUser] がなくなっていることを確認しました。

Visual Studio 2012 および SSDT 11.1.50717.0 で SQL Server 2014 を使用しています。

于 2015-09-01T21:12:08.193 に答える
1

上記の sqlpermissions ソリューションを機能させることができませんでした。ただし、ユーザースクリプトに権限付与ステートメントを追加するとうまくいきました。例えば:

GRANT CONNECT TO [TimTestUser]

于 2012-10-30T13:10:45.773 に答える
0

SQL サーバーは、ユーザーの作成時に Connect を暗黙的に許可します。

CREATE USER [TimTestUser] 

db プロジェクトをビルドしてデプロイすると、Database.sqlpermissions ファイルで CONNECT 権限が見つからない

これに対する解決策は、Connect Database.sqlpermissions を明示的に設定することです。

<PermissionStatement Action ="GRANT">
  <Permission>CONNECT</Permission>
  <Grantee>TimTestUser</Grantee>
</PermissionStatement>
于 2012-08-15T10:28:31.283 に答える