SQL Server 2005/2008: определить текущего пользователя - PullRequest
3 голосов
/ 09 апреля 2010

У меня есть веб-приложение, которое использует базу данных SQL Server 2005.

Моя проблема в том, что у приложения нет управления ролями. Таким образом, приложение всегда обращается к базе данных с одним пользователем по умолчанию. Но теперь я должен сохранить и получить доступ к значению только для текущего пользователя.

Есть ли способ сделать это? Может быть, что-то вроде сеанса на веб-сервере? Лучше всего, если есть какая-либо возможность доступа к текущему идентификатору сессии веб-сервера из T-SQL.

Кто-нибудь понимает мою проблему? :)

Ответы [ 2 ]

5 голосов
/ 09 апреля 2010

Позволяет ввести системное значение для текущего имени входа в таблицу

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

из MSDN

В моеммнение, лучше не делай этого.Другой способ: отправить хранимой процедуре текущего пользователя с веб-сервера:

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;
0 голосов
/ 09 апреля 2010

Если вы используете встроенную аутентификацию Windows вместо учетных записей SQL:

  1. Предоставьте права доступа к объекту схемы группе Windows , а не пользователю. Затем добавьте всех пользователей вашего приложения в эту группу.
  2. Используйте встроенную функцию SUSER_NAME() для извлечения имени пользователя Windows (в формате loginDomain\userName.
...