前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server中如何判断一个数据库是否还有业务访问

SQL Server中如何判断一个数据库是否还有业务访问

原创
作者头像
保持热爱奔赴山海
发布2024-02-05 14:18:13
1150
发布2024-02-05 14:18:13
举报
文章被收录于专栏:饮水机管理员饮水机管理员

有时候,某个库可能因为业务关系准备下线,但是业务方不确定这个库是完全没有调用的。

需要dba协助排查下。

这里分2种:查询请求、变更请求

1 查询某个库是否还有变更(DML+DDL)

方法1 查询事务日志法

(这种更稳妥,因为如果是短链接则直接查询master.dbo.sysprocesses可能抓不到现场,但是事务日志如果长期没shrink则会比较慢)

代码语言:sql
复制
    USE [AdventureWorks2019NEW];
    -- 只捞1000条,根据begin time和Transaction Name的内容可做到初步的判断
    
    SELECT top 1000 [Current LSN], 
    Operation, 
    [Transaction ID], 
    [Begin Time], 
    [Transaction Name],
    [Transaction SID] FROM [sys].[fn_dblog](NULL,NULL);

方法2 查询当前会话

(只能针对长连接, 如果是短链接则最好能持续间歇性的抓几天看有没有捕获到)

代码语言:sql
复制
    use [master];
    SELECT DB_NAME(dbid) AS DatabaseName, COUNT(*) AS ConnectionCount
    FROM sys.sysprocesses
    WHERE dbid > 0 -- 只显示已经分配了数据库ID(非系统进程)的会话
    -- and db_name(dbid)='AdventureWorks2019NEW'  -- 这里也可以指定具体的待查询的库
    GROUP BY dbid;

2 查询某个库是否还有select查询

方法1 在SSMS里启用扩展事件【推荐】

新建会话向导

然后筛选下库名,只查看要关注的库的event详情。

方法2 启用SQL Server Profiler

定位到库级别的sql明细,不太方便。

参考: https://blog.devart.com/sql-server-query-history.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 查询某个库是否还有变更(DML+DDL)
    • 方法1 查询事务日志法
      • 方法2 查询当前会话
      • 2 查询某个库是否还有select查询
        • 方法1 在SSMS里启用扩展事件【推荐】
          • 方法2 启用SQL Server Profiler
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档