0

ASP.NET WebFormsアプリケーションで、エンドユーザーがSQLServerデータベース内の選択された生データを参照できるようにしたいと思います。

ただし、ユーザーのアクセスを制限して、ユーザー名に基づいて一部のデータのみを表示したいと思います。

SQLは必ずしもユーザーに知られているとは限らないため、ユーザーが理解できる方法でこれを行う方法がわかりません。

ここにはどのようなオプションがありますか?


これの基礎として、問題のテーブルごとに1つのSQL関数を作成することを検討しました。その関数は、ユーザーが表示できるデータを返す必要があります。

CREATE FUNCTION ufn_RawData_Employee(@username nvarchar(256))
RETURNS TABLE
AS ( SELECT * FROM Employee 
  WHERE [@username is allowed to view the given Employee] )

Webページで、エンドユーザーは次のようなSQLのようなステートメントを入力できます。

SELECT Name, HireDate FROM ((Employee))

次に、データベースを呼び出す前にに置き換えることが(([TableName]))できます。ufn_RawData_[TableName]([UserName])(セキュリティ上の理由から、このような呼び出しは、これらの関数へのSELECT権限のみが権限を持つSQLユーザーによって実行される可能性があります。)

ただし、このアプローチはエンドユーザーにとって難しすぎる可能性があります。エンドユーザーが選択した生データを閲覧するためのより簡単でユーザーフレンドリーなソリューションが存在するかどうか知りたいですか?

4

1 に答える 1

1

1 つのテーブルまたは 1 つのビューからのユーザー データのみを表示する場合 (おそらくより便利です)、そのビューの名前をテーブルに格納し、関数で取得できます。次に、データをページに表示し、必要に応じて標準の選択スクリプトに検索機能が組み込まれていることを確認します。

1 つのテーブルまたはビューからのみデータを取得する場合、ユーザーが SQL を記述する必要はありません。複数の潜在的なテーブル/ビューを提供する必要がある場合は、ドロップダウンから選択させますが、独自の SQL クエリを作成できるようにすることは価値がないように思えます。

于 2009-11-10T08:22:51.873 に答える