gpt4 book ai didi

sql-server - 限制返回到 SSMS 的结果集大小

转载 作者:行者123 更新时间:2023-12-03 22:26:45 24 4
gpt4 key购买 nike

我有一组用户可以访问 Prod 上的 SSMS。我不允许撤销他们的访问权限,但每隔一段时间他们就会运行一个足够大的查询,以至于临时文件占用 C:\上的所有可用空间并导致服务器崩溃。

我正在寻找一种方法来将返回到任何 SSMS 连接的结果集大小限制为小于 2gb 或类似的限制。

我在 2005 年至 2014 年的所有版本上都遇到了这个问题,因此欢迎提供任何或所有这些版本的解决方案。

现在,我唯一想减轻这个问题的是对大型临时结果文件发出 Nagios 警报。

仅供引用,我非常清楚这个问题有多严重,所以我不想讨论为什么会出现这种情况。

最佳答案

哦,小伙子。好的。

第 1 步是限制用户可以通过系统配置造成的损害。通常,当您设置 SQL Server 时,您希望有 4 个不同的分区:

  • 操作系统
  • 寻呼
  • 临时数据库
  • 日志
  • 数据

这样做不仅可以提高性能,还可以防止日志或 TempDB 上的自动增长在您的操作系统分区上进行转储。当磁盘用完时,您只会终止 SQL Server 实例,而不是操作系统本身。作为第一步,我会为您的临时数据库创建一个新分区并移动它:

Example of moving temp db

至于实际限制他们可以运行的查询的大小,并不是那么简单。 SQL Server 确实有一个资源调控器,可以让您限制用户的 CPU 使用率和磁盘使用率,但不能限制查询中返回的数据总量。

Resource Governor on MSDN

最后,考虑一下他们试图通过如此庞大的查询提取的内容。也许他们有错误的连接导致笛卡尔结果并且没有意识到这一点。考虑为他们设置一些执行繁重工作(主要表连接等)的 View ,以便他们不再需要直接访问表(hint-hint-wink-wink),您可以由于您控制了 View 定义,因此可以更恰本地管理他们在数据库中所做的事情。

关于sql-server - 限制返回到 SSMS 的结果集大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29659229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com