问题标签 [dmv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
105 浏览

sql - 确定从日志中更新了多少行的方法

我们处理来自上游系统的 CSV 文件,并将它们加载到 SQL Server 数据库中的主表中。我们目前正在使用一个新的上游系统,突然我们的 UPDATE 语句花了很长时间。这可能是由于传入的数据在我们的系统中有以前的相关数据,并导致了巨大的更新。我们能够找到通过 更新的表sp_whoisactive

我的查询是:

  • 发布更新,有没有办法从错误日志或默认跟踪或通过 DMV 等某个地方计算表更新的行数?

  • 在更新过程中,如果我们发现将来会发生这种巨大的更新,我们是否可以设置一些跟踪来识别将要更新的行数或找出具有当前参数(参数的当前值)的更新语句?在sp_whoisactive我们得到带有变量的更新语句。但我们不知道当前的参数。

  • 我们是否应该主动设置扩展事件或其他东西来捕捉未来这些巨大的更新?

0 投票
3 回答
524 浏览

sql-server - 获取用户或应用程序查询的长时间运行查询

我最近阅读了这篇完美的文章:

如何通过执行计划找到运行时间最长的查询 - 本周面试问题 #098

它返回系统调用查询(用于内部 SQL Server 工作)。

在此处输入图像描述

是否可以过滤这些查询并仅返回用户或应用程序调用查询?

谢谢。

0 投票
1 回答
307 浏览

sql - 如何列出未结交易

我正在尝试找到一种方法来列出 SQL Server 中所有打开的事务。

例如我执行以下语句:

在此处输入图像描述

这将打开两个已完成的事务,但现在此会话设置为“睡眠”,并带有两个打开的事务。我如何才能看到这些未结交易报表?

当我跑

在此处输入图像描述

我可以看到只有一行带有事务 ID 和打开的 tran 计数。(会话 57 是我的未结交易)

当我跑

在此处输入图像描述

我看到我的 transaction_id 的两行;一个在 user_db 中,一个在 tempdb 中(为什么我只看到两行?我在 user_db 中有两个打开的事务,所以我希望看到更多 db id 为 5 的行

当我跑

在此处输入图像描述

没什么帮助,只有一排没有细节。

查看睡眠会话中打开的事务语句的能力可能听起来微不足道,但我找不到任何方法来查看这些。

0 投票
0 回答
369 浏览

memory - 在 SSAS 表格模型中获取每个用户会话的实际内存使用情况

我正在尝试构建一个报告,该报告将在使用特定的 SSAS 表格 in-mem 模型时显示每个用户会话的实际内存使用情况。模型本身比较大(大约 100GB 在内存中)并且测试查询比较重:没有过滤器、最低粒度级别、几个 SUM 度量 + 将 30k 行导出到 CSV。

首先,我尝试查询以下 DMV:

并得到以下结果: $system.discover_sessions 结果

我期待 SESSION_USED_MEMORY 至少显示数百 MB,但我得到的最大值是 11 KB(此 DMV 的MS 官方文档表明 SESSION_USED_MEMORY 以千字节为单位)。

我还尝试查询另外 2 个 DMV:

但也得到了相当令人失望的结果:$system.discover_commands 中的 0 已使用内存和$system.discover_connections的4.8 MB用于 CONNECTION_DATA_BYTES_SENT,这似乎仍然小于实际会话所需的内存。

这些结果似乎与一个非常直接的测试不对应,用户将通过 PowerBI 发送类似的查询,我们会观察到每 4 个用户在 SSAS 服务器上的 RAM 分配峰值约为 40GB(因此每个用户会话大约为 10GB)。

有没有人使用这些(或任何其他 DMV 或方法)来获取实际的用户会话内存消耗?使用 SQL 跟踪器转储将是最后的手段,因为它需要解析并将结果加载到数据库中,而我的目标是获得显示活动用户会话的实时报告。

0 投票
1 回答
53 浏览

sql-server - 哪个 DMV 获取 sys.dm_os_waiting_tasks 的数据库 ID

我必须加入哪个 DMV 与 sys.dm_os_waiting_tasks 才能获取数据库 ID?

0 投票
1 回答
404 浏览

sql-server - 如何查找我的 SP 的阻塞会话 ID

我有一个在晚上运行的 SP,有时它不会完成。我使用自动化运行的工具有一个选项,如果它没有完成,它可以在一段时间后终止工作,即它会在例如一小时后终止工作。

无论如何,我认为它有时没有在最大分配时间内完成的原因是因为它被另一个会话 ID 阻止。如何查询 DMV 的查询文本并准确找出阻塞会话中的内容。

我有这个查询,我知道阻塞会话 ID 和我的会话 ID。

如何获取阻塞会话 ID 的内容(例如 SP 的名称)?

0 投票
0 回答
78 浏览

sql-server - SQL Server DMV(动态管理视图)未在具有 2 个索引的表上显示上次用户更新信息

我正在使用以下 SQL 服务器 DMV 来找出表的最后更新时间。

有 1 个表,上面有 2 个索引,并且该表已被我们的每日 ETL 刷新。上面的 DMV 显示了该特定表的 2 行,但它们都在 last_user_update 列中包含 NULL。我们还没有完成任何服务器重启/清除 DMV 缓存。同一张表在我们的开发/生产环境中。奇怪的是,在 Dev 的前一天,DMV 显示了 last_user_update 值,但现在不再显示了。Prod 中的 DMV 一直显示此表的空值。相同的 DMV 适用于其他表格。

有谁知道我们如何获得这个特定表的 last_user_update 日期?谢谢!

编辑:在下面添加 DMV 查询结果:

编辑 2:这些表的 ETL:

  1. 删除表的索引
  2. 从应用程序数据库中提取数据,将这些数据插入到相关表中
  3. 截断相关表的空格。
  4. 将索引添加回有问题的表。

我们正在删除索引,因为这是一个数据仓库,我们每天都在重新捕获数据。

编辑3:找出问题所在。添加主键约束实际上会删除 last_update_date 的 DMV 数据。删除索引/重新创建索引不会。

谢谢大家关注这个问题:)

0 投票
1 回答
260 浏览

powershell - 如何通过 Azure 自动化的 Powershell Runbook 在 SSAS 中执行 DMV 查询?

我正在尝试打开与ssas 服务器的连接并执行dmv 查询,以便通过 Azure Automation Account 中的 powershell Runbook 提取表数据

我已经编写并测试了一个似乎在我的本地机器上运行良好的 powershell 脚本,但是当我在上运行相同的脚本作为 azure runbook 时,似乎无法打开连接。

我使用此代码打开与 ssas 的连接:

我似乎无法打开连接,因为我运行此代码时收到以下错误

在网上搜索,我发现的唯一解决方案似乎是简单地下载并安装 MDAC sdk,但这在云上运行时无法完成。

我需要帮助来修复此错误或找到替代解决方案。谢谢你。

0 投票
1 回答
80 浏览

sql-server - SQL Server Profiler 中的 DISCOVER_CSDL_METADATA 真的很慢

我们的设置是 SQL Server + SSAS + 多维 OLAP + PowerBI。

我们最近注意到的问题是,当用户加载 PowerBI 报告时,不时会发生上述事件。这导致报告加载之前的等待时间非常长(事件最多需要 45-60 秒)。

我们的多维数据集有约 20 个维度和约 50 个度量,3 个分区中的 2-3 百万行,MOLAP 存储。

我们对于它可以做些什么呢?我们如何调试它?我们没有 SSAS 专家参与,在谷歌上搜索这个事件并没有多大帮助。我们可以在哪里寻找这种行为的原因?

0 投票
2 回答
83 浏览

sql - 如何编写此函数来计算日期时间差异为 hh:mm:ss:ms

我不是开发人员,所以请原谅我的问题。我更喜欢产品 DBA

我们有一个 SSRS 页面,它显示长时间运行的 SQL 查询并显示经过的时间。但是我们需要一种显示持续时间的方法,例如 dd:hh:mm:ss:ms

因此我从这里的链接获得了函数,代码如下

但是如果我也需要天和毫秒,就不能让它工作。

我如何使用上面显示 dd:hh:mm:ss:ms 或以这种格式返回数据?我们必须确保它适用于 SQL2012 和 +

如果那里有更好的代码,请指导我,因为我是 SQL 开发部分的新手,谢谢

编辑-在评论中提到的几秒钟内获得 -ve 值

在此处输入图像描述

通过第二次编辑,我现在看到了一天的问题:

请看下面

开始时间“5/21/2021 8:00:23 PM”(东部时间)和结束日期“5/22/2021 01:09:0 6 AM”

它返回给我 1 5:9:17.13 这是不正确的,因为不应该是 1 天和 5 小时,而应该是 5 小时,所以当天出了点问题

您可以看到该值完全不正确 在此处输入图像描述