Спасибо за все ваши предложения в первую очередь. Я перепробовал все методы, и я думаю, что метод Йоаким Бэкман отвечает моим потребностям. Вот краткое изложение того, что я узнаю.
- Запрос к sys.syslogins только перечисляет информацию для входа. Accdate не дает текущую метку времени входа пользователя. Я попытался войти из другого приложения в мой SQL, и в этом запросе не указан логин.
- ВЫБРАТЬ SUSER_SNAME (), HOST_NAME () перечислить только одного пользователя на сервере SQL. Например, я вхожу в систему под своим именем на сервере SQL. В результате этого запроса указаны только мое имя и имя машины. Этот запрос не выводит список текущих пользователей на сервере SQL.
- exec sp_who2 перечисляет информацию, которая мне нужна. В нем перечислены текущее имя пользователя, имя компьютера, активное состояние, доступ пользователя с именем db и используемая команда.
Чтобы получить информацию, которую я использую в 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