如何查询别人用SQL语句访问我的数据库

pjb16 2012-04-19 07:52:02
修改或者删除的话,可以从日志里查到。但是如果只用了select这种语句,访问记录能查询的到吗?如果能,需要如何查询呢
...全文
349 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
三断笛 2012-05-21
  • 打赏
  • 举报
回复
楼主不厚道,封杀楼主.
唐诗三百首 2012-04-22
  • 打赏
  • 举报
回复
用SQL Profiler工具.
字符魔法师 2012-04-22
  • 打赏
  • 举报
回复
select * From master.dbo.sysProcesses where dbid=db_ID() and spid!=@@SPID
用这个可以查到除了你自己以外还有谁连接到了你的数据库,只可用在别人连接上的时候查询,如果已经断开了,就不行了.
NiuJhuang 2012-04-22
  • 打赏
  • 举报
回复
SQL Server 2008中, 工具 | SQL Server Profiler, 新建一个跟踪,可以看到。
孤独加百列 2012-04-20
  • 打赏
  • 举报
回复
可以通过创建select审计功能来监视select操作

USE master
CREATE SERVER AUDIT testAudit TO FILE(FILEPATH='D:\TempSelectAudit\')
GO


CREATE DATABASE AUDIT SPECIFICATION testAudSpec FOR SERVER AUDIT testAudit
ADD (SELECT ON HumanResources.Employee BY Public)
GO


USE master
SELECT is_state_enabled,* FROM sys.server_file_audits
USE AdventureWorks
SELECT is_state_enabled,* FROM sys.database_audit_specifications
GO


USE master
ALTER SERVER AUDIT testAudit WITH (STATE=ON)
GO
USE AdventureWorks
ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE=ON)
GO


SELECT session_server_principal_name, statement, *
FROM fn_get_audit_file ('D:\TempSelectAudit\*',NULL, NULL)
三断笛 2012-04-20
  • 打赏
  • 举报
回复

sys.dm_exec_sql_text (Transact-SQL)

返回由指定的 sql_handle 标识的 SQL 批处理的文本。该表值函数将替换系统函数 fn_get_sql。

语法

sys.dm_exec_sql_text(sql_handle | plan_handle)


参数
sql_handle
要查找的批处理的 SQL 句柄。sql_handle 的数据类型为 varbinary(64)。可以从以下动态管理对象中获得 sql_handle:

sys.dm_exec_query_stats


sys.dm_exec_requests


sys.dm_exec_cursors


sys.dm_exec_xml_handles


sys.dm_exec_query_memory_grants


sys.dm_exec_connections


plan_handle
查询计划的标识符。

有关详细信息,请参阅 sys.dm_exec_text_query_plan。

返回的表
列名 数据类型 说明
dbid
smallint
数据库的 ID。

对于临时和预定义 SQL 语句为 NULL。

objectid
int
对象的 ID。

对于临时和预定义 SQL 语句为 NULL。

number
smallint
对于带编号的存储过程,此列返回存储过程的编号。有关详细信息,请参阅 sys.numbered_procedures (Transact-SQL)。

对于临时和预定义 SQL 语句为 NULL。

encrypted
bit
1 = SQL 文本已加密。

0 = SQL 文本未加密。

text
nvarchar(max )
SQL 查询的文本。

对于已加密对象为 NULL。


注释
对于批处理,SQL 句柄是基于 SQL 文本的哈希值。对于诸如存储过程、触发器或函数之类的数据库对象,SQL 句柄派生自数据库 ID、对象 ID 和对象编号。plan_handle 是派生自整个批处理的已编译计划的一个哈希值。

权限
需要对服务器具有 VIEW SERVER STATE 权限。

示例
A. 获取有关按平均 CPU 时间排在最前面的五个查询的信息
以下示例返回前五个查询的 SQL 语句文本和平均 CPU 时间。

复制代码
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;


B. 提供批处理执行统计信息
以下示例返回按批执行的 SQL 查询的文本,并提供有关它们的统计信息。

复制代码
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;

APHY 2012-04-20
  • 打赏
  • 举报
回复
实时追踪?打开事件探查器

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧