Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取SQL Server中短连接的登录信息_Sql Server_Database_Session - Fatal编程技术网

Sql server 获取SQL Server中短连接的登录信息

Sql server 获取SQL Server中短连接的登录信息,sql-server,database,session,Sql Server,Database,Session,我想在SQL Server中存储登录信息,我正在使用 select * from sys.sysprocesses 它在大多数时间都有效。但是当我遇到短连接时,短连接中的查询完成后,连接信息将从sysprocesss中删除,然后我无法从sysprocesss中获取登录信息,那么如何获取短连接的登录信息呢,除了使用本机跟踪文件审核之外。您不应该使用sys.sysprocesss,因为10年前发布SQL Server 2005时,它已被弃用 您应该从以下3个DMV获得此信息(及更多):

我想在SQL Server中存储登录信息,我正在使用

select * from sys.sysprocesses

它在大多数时间都有效。但是当我遇到短连接时,短连接中的查询完成后,连接信息将从
sysprocesss
中删除,然后我无法从
sysprocesss
中获取登录信息,那么如何获取短连接的登录信息呢,除了使用本机跟踪文件审核之外。

您不应该使用
sys.sysprocesss
,因为10年前发布SQL Server 2005时,它已被弃用

您应该从以下3个DMV获得此信息(及更多):

为了存储这些信息而不需要每隔几秒钟进行一次轮询(这很容易出错),您应该使用登录触发器(在SQLServer2005中引入)。有关这些信息,请参阅:

更新:

如果要捕获特定表上的操作(而不仅仅是捕获所有连接的连接信息),则可以捕获特定表上的DML事件以及包含该表的数据库的DDL事件。请参阅:

  • (这是我对DBA.StackExchange上的一个问题的回答,该问题显示了一个捕获特定表的DDL事件信息的示例,包括会话ID/@@SPID,可在查询此答案顶部记录的3个表时使用它--这是在尝试匹配ev的监控信息时捕获信息的最准确的方法。)具有断开连接的登录信息的ent肯定容易出错)

可能使用?您需要什么详细信息?只是某人登录和时间,还是您需要其他信息?如果只是基本登录和时间/日期信息,您只需要从SSMS启用该选项(属性、安全、登录审核)。如果您想登录/注销,可以使用SQL Server审核(请参阅)这是非常轻量级的。登录触发器也可以工作,但您需要非常小心它的实现,因为您可以阻止用户通过登录触发器登录。我需要检查特定表上的一些关键操作,以及是谁执行的。感谢您的建议。什么是“关键操作”是什么意思?这与记录此信息有什么关系?如果您想捕获哪个登录正在执行DML或DDL语句,这略有不同。谢谢,我会检查它。但是登录触发器会阻止用户登录操作吗?它在SQL Server 2005上工作吗?@BinXu我想如果它是一个长期运行的触发器,它可能会阻止。Or您可以选择取消登录事件(阻止此人登录)通过发布一个
回滚
。我用这个功能开始的版本更新了我的答案,但是请阅读我发布的链接,因为它们包含了您所询问的所有信息。另外,请在您的问题的评论中回答我的问题,与您在这里真正尝试实现的目标相关。谢谢您的建议,这是t他是我第一次使用stackoverflow。关键操作是更新特定列中的数据以及其他一些DML和DDL语句。@如果这是您想要跟踪的,那么登录触发器对您没有帮助。您需要使用DML和DDL触发器来捕获这些事件。在这种情况下,您将始终获得正确的连接信息都是同一事务的一部分。这让我想知道您现在是如何操作的,以至于信息在
系统进程中不可用。我可以从另一个监视设备获取sql语句,并且我需要将所有这些sql语句与登录信息映射。