3

SQL Server 2005 データベースを使用する Web アプリケーションがあります。

私の問題は、アプリケーションにロール管理がないことです。そのため、アプリケーションは常に 1 人のデフォルト ユーザーでデータベースにアクセスします。しかし、現在のユーザーの値のみを保存してアクセスする必要があります。

これを行う方法はありますか?たぶん、Webサーバー上のセッションのようなものでしょうか? 最善の方法は、T-SQL から Web サーバーの現在のセッション ID にアクセスできる場合です。

誰かが私の問題を理解していますか? :)

4

2 に答える 2

5

現在のログインのシステム提供値をテーブルに挿入できるようにします

DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current user is: '+ @sys_usr;
GO

MSDNから

私の意見では、これはやらないほうがいいです。別の方法: Web サーバーからストアド プロシージャの現在のユーザーに送信します。

command.CommandText = "EXEC mySP @user";
command.Parameters.Add("@user").Value = ((YourOwnUserClass)Session["user"]).Name;

// or System.Web.HttpContext.Current.User.Identity.Name; to use built-in
// from web page it becomes this.User.Identity.Name;
于 2010-04-09T07:04:26.090 に答える
-1

SQL アカウントの代わりに Windows 統合認証を使用している場合:

  1. ユーザーではなく、Windowsグループにスキーマ オブジェクトのアクセス許可を付与します。次に、すべてのアプリケーション ユーザーをこのグループに追加します。
  2. 組み込みSUSER_NAME()関数を使用して、基になる Windows ユーザー名を取得します (loginDomain\userName形式は .
于 2010-04-09T07:12:16.037 に答える