3

C# アプリケーションから SQL Server 2008 R2 データベースに接続する必要があります。接続には SQL Server 認証を使用する必要があります。

ユーザーがストアド プロシージャを作成/実行できるようにするために、ユーザーに必要なロールとスキーマは何ですか?

注: ストアド プロシージャは dbo スキーマにあります。

4

3 に答える 3

3

プロシージャの作成と実行の権限は、それぞれCREATE PROCEDUREとの下に記載されてEXECUTEいます。

重要な考慮事項の1つは、ユーザーがプロシージャで参照されるオブジェクトに対する権限を持っている必要がないことです。これはドキュメントで読むことができますが、自分でテストする方が高速です。

create table dbo.TestTable (col1 int)
go

create procedure dbo.TestProc
as select col1 from dbo.TestTable
go

grant execute on dbo.TestProc to UserWithNoPermissions
go

execute as user = 'UserWithNoPermissions';

-- this gives error 229 (SELECT permission denied)
select * from dbo.TestTable;

-- this works
execute dbo.TestProc;

revert;

いくつかの例外があることに注意してください。動的SQLは独自のスコープで実行されるため、プロシージャがそれを使用する場合、実行中のユーザーは実際に基になるオブジェクトに対するアクセス許可を必要とします。

于 2012-10-30T16:30:12.630 に答える
2

ロールへの権限の付与をより細かくしたい場合は、'Security' フォルダ (データベースの下) の下で、特定の stroed proc に対する実行権限を構成できます。

つまり、管理スタジオのオブジェクト エクスプローラーで、[データベース] -> [セキュリティ] -> [自分の役割] -> プロパティを右クリック -> [セキュリティ保護] セクション

ここでは、特定のオブジェクト タイプとその権限などを追加できます。

お役に立てれば。

于 2012-10-30T15:35:13.777 に答える
1

これは、ストアド プロシージャ内で実行されるアクションによって異なります。

単純SELECTにステートメントを実行する場合、db_datareaderロールはストアド プロシージャの実行に適している必要があります。はdb_datawriter、それらを作成する資格があるロールです。

于 2012-10-30T15:24:35.407 に答える