小编Dre*_*rew的帖子

确定 SHRINKDATABASE 将从哪些对象中释放空间

首先,是的,收缩是不好的。永远不要使用它。我明白。不幸的是,这是一种 SOP,我无法争论,因为它通常是权宜之计,直到我们可以获得一个维护窗口来分配更多空间并重建/重组索引。

我们最近遇到了一个问题,我们从传统备份切换到第三方工具。由于数据库的大小和我们最近删除的一些大对象,在转换之前使用新工具进行干净备份之前缩小它是有意义的。我有一些保留意见,但我们继续这样做,因为它很少引起问题。显然,清除日志并不是真正的问题,但我们正在缩小 mdf。这导致了对少数大型、高度事务性对象的大量阻塞,并且正确地提出了一些关于我们如何使用它的非常严重的问题。

我已经做了很多研究,但还没有找到足够让我满意的细节。

  • 是否有任何地方可以实际描述 SHRINK 操作的内部结构?

  • 有没有办法确定哪些物体比其他物体更碎片化以及它如何释放空间?或者,与表中的其他表相比,表的碎片化程度是否无关紧要,并且更多的是关于对象的整体大小?

保罗兰德尔在这里谈了一点,但还不够详细。

我知道您可以基于 dm 索引统计数据进行排序,但是由于大小和过度索引,在我们的一些较大的数据库上运行非常困难。我也不确定这是否就是我需要关心的全部。主表存储为堆,只有索引真正碎片化,但我不确定不同的分区如何影响事物,或者底层数据库的其他部分是否也可以被释放。

我确实也看到了这个问题,但我不确定我是否能够将它配置为我们正在寻找的那种粒度。

sql-server shrink disk-space fragmentation

5
推荐指数
1
解决办法
631
查看次数

非常偶发无法初始化链接服务器的 OLE DB 提供程序“SQLNCLI11”的数据源对象

链接服务器“001”的 OLE DB 访问接口“SQLNCLI11”返回消息“由于打开服务器连接延迟,无法完成登录过程”。消息 7303,级别 16,状态 1,第 19 行无法初始化链接服务器“001”的 OLE DB 访问接口“SQLNCLI11”的数据源对象。

我意识到有很多潜在适用的 SO 帖子和谷歌点击(其中许多我已经阅读了很多次),所以让我来看看我们所看到的和我们已经尝试过的。老实说,我现在不知道还有什么可看的。

我们将链接服务器 001(目标)转到 002(源)作为 SQL 登录名,该登录名从 C#/.Net 应用程序代码作为 proc 通过数据访问方法和 SSPI 连接字符串通过具有适当权限的服务帐户调用。我相信 .Net 版本是 4.3,现在是 4.7,但问题在两者中都存在。它是从不同网络上的旧 2008R2 环境迁移而来的,这在物理设备上从来都不是问题,而且两个新的当前都是 64 位 2016 虚拟机。

问题期间始终可重现,但在其他情况下则不然,并且似乎总是相同的调用。对于阻塞/死锁/奇怪的锁定页面或对象,sp_what 中没有显示任何内容。如果未报告该问题,则该问题将无法重现。有时它只发生一次或两次,有时持续 10-15 周,然后它会正常工作数周。不确定它是否相关,但是当我们看到这个时,应用程序偶尔也会显示线程中止,但我认为这更像是一种症状。

  • 双方的链接服务器和帐户已通过脚本和 GUI 以及已知的工作链接服务器手动重新创建。我已经多次确认他们没有被锁定并且拥有正确的权限。
  • 我增加了双方的最大查询超时。
  • SQLNCLI11.DLL 驱动程序位于与 SQL Server 安装相同版本的两台服务器上。
  • SQL 管理或错误日志中没有显示任何明显的登录失败、损坏或奇怪行为。
  • 我们在任何一方的服务器事件日志中都看不到任何内容。
  • 我们的网络和安全团队进行了检查,并没有发现位于同一交换机上且未通过防火墙的连接和流量方面的任何问题。
  • 端口是开放的。
  • 当这些问题发生时,来自链接服务器的测试连接工作正常,我通常可以通过临时访问底层问题表,但不能访问存储过程的代码,甚至就地运行。

我在这里缺少什么?

sql-server linked-server errors connections

5
推荐指数
1
解决办法
2429
查看次数