Как узнать, что имя пользователя и машина называют к доступу к SQL-серверу

Чтобы преобразовать строку в double, должен выполнить следующий код:

public double doubleString(String text){

        return Double.parseDouble(text);

}

Возможно, вы захотите перехватить NumberFormatException , чтобы обработать случай недопустимого значения для преобразования в Double.

10
задан gbn 9 December 2009 в 05:05
поделиться

3 ответа

SELECT SUSER_SNAME(), HOST_NAME()

Если соединение является "sa" (или какой-либо другой вход в систему SQL) затем, Вы не можете найти имя домена/пользователя Windows. SQL Server только знает, что это - "sa" или тот вход в систему SQL.

HOST_NAME не может быть надежным также, он может быть установлен в строке подключения ("Имя приложения"). Или это могло быть неопределенно, например, "Microsoft Office" для по умолчанию для Доступа, Excel и т.д.

Вы могли отследить в обратном порядке через client_net_address в sys.dm_exec_connections и соответствуйте MAC-адресу к IP и узнайте, кто зарегистрирован...

33
ответ дан 3 December 2019 в 13:51
поделиться

Простой способ узнать и хост и пользователя

EXEC sp_who2;

где Вы получаете некоторую другую информацию, которая может быть хорошей для знания, как будто пользователь активен и так далее... Это не решает вопросы это gbn, о котором объявляют.

4
ответ дан 3 December 2019 в 13:51
поделиться

Спасибо за все Ваши предложения сначала. Я попробовал все методы, и я думаю, что метод Joakim Backman удовлетворяет мои потребности. Вот сводка того, что я узнаю.

  • Запрос sys.syslogins только перечисляет данные для входа. accdate не дает текущую метку времени зарегистрированного пользователя. Я пытался войти в систему от другого приложения до моего SQL, и этот запрос не перечисляет вход в систему.
  • ВЫБЕРИТЕ SUSER_SNAME (), HOST_NAME () только перечисляют одного пользователя на SQL-сервере. Например, я вхожу в систему в как мое имя к SQL-серверу. Результат этого запроса только перечисляет мое имя и название машины. Этот запрос не перечисляет текущих пользователей на SQL-сервере.
  • должностное лицо sp_who2 перечисляет информацию, в которой я нуждаюсь. Это перечисляет текущее название машины имени пользователя, активное состояние, доступ пользователя имени дб и используемую команду.

Для получения информации, которую я использую в SP, я должен отфильтровать и присоединиться к информации с другими таблицами, такими как электронные письма. Вот коды, которые я использую:

DECLARE @retTable TABLE (
 SPID int not null
 , Status varchar (255) not null
 , Login varchar (255) not null
 , HostName varchar (255) not null
 , BlkBy varchar(10) not null
 , DBName varchar (255) null
 , Command varchar (255) not null
 , CPUTime int not null
 , DiskIO int not null
 , LastBatch varchar (255) not null
 , ProgramName varchar (255) null
 , SPID2 int not null
 , REQUESTID INT
)  

INSERT INTO @retTable EXEC sp_who2  

SELECT Status, Login, HostName, DBName, Command, CPUTime, ProgramName -- *
  FROM @retTable
  --WHERE Login not like 'sa%' -- if not interested in sa
  ORDER BY Login, HostName
3
ответ дан 3 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: