查询历史是否存储在一些日志文件中?如果有,你能告诉我怎么找到他们的位置吗?如果没有,你能给我一些建议吗?
当前回答
系统不会以这种方式记录查询。如果你知道你想提前这么做,你可以使用SQL Profiler来记录将要输入的内容,并在Profiler运行期间跟踪查询。
其他回答
你可以使用“每次保存自动生成脚本”,如果你使用管理工作室。 这当然不是日志。 检查一下是否对你有用。;)
系统不会以这种方式记录查询。如果你知道你想提前这么做,你可以使用SQL Profiler来记录将要输入的内容,并在Profiler运行期间跟踪查询。
晚一点,但希望有用,因为它增加了更多的细节…
在默认情况下,无法查看在SSMS中执行的查询。不过也有几种选择。
读取事务日志-这不是一件容易的事情,因为它是私有格式。但是,如果您需要查看历史上执行的查询(除了SELECT),这是唯一的方法。
您可以使用第三方工具,如ApexSQL日志和SQL日志救援(免费,但仅限SQL 2000)。查看这个线程的更多细节在这里SQL Server事务日志资源管理器/分析器
SQL Server分析器-最适合如果你只是想开始审计,你不感兴趣之前发生了什么。确保使用筛选器只选择您需要的事务。否则你很快就会得到大量的数据。
SQL Server跟踪—如果您想捕获所有或大部分命令,并将它们保存在跟踪文件中,以便稍后进行解析,则最适合。
触发器—如果您想捕获DML(除了select)并将它们存储在数据库中的某个地方,那么最适合使用它
一个稍微开箱即用的方法是在AutoHotKey中编写一个解决方案。我用了这个,它不是完美的,但是有效而且免费。从本质上讲,这个脚本为CTRL+SHIFT+R分配了一个热键,它将复制SSMS (CTRL+C)中所选的SQL,保存一个日期戳SQL文件,然后执行突出显示的查询(F5)。如果您不习惯AHK脚本,则前导分号是注释。
;CTRL+SHIFT+R to run a query that is first saved off
^+r::
;Copy
Send, ^c
; Set variables
EnvGet, HomeDir, USERPROFILE
FormatTime, DateString,,yyyyMMdd
FormatTime, TimeString,,hhmmss
; Make a spot to save the clipboard
FileCreateDir %HomeDir%\Documents\sqlhist\%DateString%
FileAppend, %Clipboard%, %HomeDir%\Documents\sqlhist\%DateString%\%TimeString%.sql
; execute the query
Send, {f5}
Return
最大的限制是,如果你点击“执行”而不是使用键盘快捷键,这个脚本将无法工作,并且这个脚本不会保存整个文件-只保存选中的文本。但是,您总是可以修改脚本以执行查询,然后在复制/保存之前选择所有(CTRL+A)。
使用具有“在文件中查找”功能的现代编辑器可以让您搜索SQL历史记录。您甚至可以把您的文件刮到SQLite3数据库中以查询您的查询。
如果需要,可以通过SQL Profiler监视SQL查询
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 查询JSON类型内的数组元素
- 确定记录是否存在的最快方法
- 如何配置slf4j-simple
- 获得PostgreSQL数据库中当前连接数的正确查询
- 在SQL选择语句Order By 1的目的是什么?
- MySQL数据库表中的最大记录数
- 如何在Python中记录源文件名称和行号
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- MongoDB记录所有查询
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 如何禁用标准错误流的日志记录?