2

管理者以外のユーザーに、SSMS を介して DB 内のオブジェクトの SQL 拡張プロパティを追加/更新する機能を付与できるようにしたいと考えています。
私は簡単な解決策を探しましたが (提案は受け付けています)、使いやすさの理由から、SSMS は私たちにとって断然最高です (問題のユーザーは既に使用しており、それが唯一の簡単な方法です)。既存の拡張プロパティを参照して更新すると、コードはほとんどまたはまったく必要ありません...)。
ユーザーを変更するには ALTER または CONTROL が必要であると読みましたが、それを回避したいと考えており、明らかに通常のユーザーにこれほど多くの許可を与えることはできません。

SSMS がこれらを更新するために使用するスクリプトを見ると、単純に次のようになります。

USE [DatabaseName]
GO
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'This is test  
description 1.' , @level0type=N'SCHEMA',@level0name=N'dbo', 
@level1type=N'TABLE',@level1name=N'Table_1'

ユーザーが通常行う権限を持たないことを行うストアド プロシージャへのアクセスを許可できることを理解しています。私は使用できました:

grant exec on sys.sp_addextendedproperty to [AD\testuser]
grant exec on sys.sp_updateextendedproperty to [AD\testuser]
grant exec on sys.sp_dropextendedproperty to [AD\testuser]

マスター DB コンテキストで、この権限を付与します。ただし、「メッセージ 1088、レベル 16、状態 30、プロシージャ sp_updateextendedproperty、行 36 存在しないか権限がないため、オブジェクト "dbo.Table_1" が見つかりません。」SSMS経由でこのテストユーザーとして拡張プロパティを変更しようとすると。これを機能させる方法はありますか?

4

1 に答える 1

0

その価値のために、私はデータ ウェアハウス チームのためにこれを行うための Web ベースのアプリを作成しています。選択範囲からデータベースにアクセスするための SQL ユーザー アカウントを持っています。これまでに確認した最小限のアクセス許可は、Alter SchemaView Definitionsです。これは 1 人のユーザーに対して設定され、アプリで使用できる各データベースに追加されます。拡張プロパティを表示および編集するために MSSMS が使用するプロシージャは、私が作成したプロシージャで使用されているため、スキーマ、テーブル、または列の値を操作しているかどうかに応じて、さまざまなプロパティ値を使用できます。ユーザーはそれらに対する実行権限を持っています。それらはすべて、Web アプリを制御する中央データベースに存在します。

リンクされたサーバーでも問題なく動作しますが、少しきついものがあるかどうかはわかりません.

于 2013-11-21T22:28:00.790 に答える