小编clo*_*afe的帖子

如果时间太长,想要超时或跳过 SQL Server 索引重建语句

在大型和高度碎片化的数据库上过夜运行索引重建脚本时,我们经常遇到停止工作的索引,因为它们似乎从未完成重建。作业暂停,早上我们必须手动取消语句,永远等待回滚,导致停机。我们可以修复这些偶尔手动删除和重新创建的索引。

如果没有什么进展,有没有办法自动使索引重建语句超时,以便脚本可以继续执行下一个重建语句?

我们的脚本是这样的:

ALTER INDEX ALL ON [Table1] REBUILD WITH (FILLFACTOR = 90)
ALTER INDEX ALL ON [Table2] REBUILD WITH (FILLFACTOR = 90)
ALTER INDEX ALL ON [Table3] REBUILD WITH (FILLFACTOR = 90)..
Run Code Online (Sandbox Code Playgroud)

index sql-server sql-server-2012

4
推荐指数
1
解决办法
1982
查看次数

可以从 SQL Server 2008 中的环形缓冲区中提取的死锁 xml 创建图表吗?

在 SQL_Server 的更高版本中,我们在对象浏览器中查看事件文件以查看死锁图。这个特定的客户端有 SQL 2008(兼容性 2005),并且使用以下脚本从环形缓冲区中提取了唯一的死锁副本:

SELECT
   xed.value('@timestamp', 'datetime2(3)') as CreationDate,
   xed.query('.') AS XEvent
FROM
(
   SELECT CAST([target_data] AS XML) AS TargetData
   FROM sys.dm_xe_session_targets AS st
   INNER JOIN sys.dm_xe_sessions AS s
      ON s.address = st.event_session_address
   WHERE s.name = N'system_health'
         AND st.target_name = N'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData (xed)
ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)

该格式与我们的 xdl 查看器不兼容。有没有办法从下面返回的 XML 中获取图表?:

<event name="xml_deadlock_report" package="sqlserver" id="123" version="1" timestamp="2018-07-04T00:15:14.667Z">
  <data name="xml_report">
    <type name="unicode_string" package="package0" />
    <value>&lt;deadlock&gt;
 &lt;victim-list&gt;
  &lt;victimProcess id="process3cf048"/&gt;
 &lt;/victim-list&gt;
 &lt;process-list&gt;
  &lt;process …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server deadlock

3
推荐指数
1
解决办法
625
查看次数

SQL Server 创建了一个新的错误日志文件,但未重新启动实例和代理

我们的一项工作失败了,但在我们调查时,工作历史已经过期。但是,我们可以看到在失败时创建了一个新的日志文件。

没有实例重启(检查 os_sys_info)或代理重启(在 sys.processes 中查看)并且没有人使用它知道如何循环日志。

一定是某种腐败吗?

sql-server sql-server-2012 error-log

3
推荐指数
1
解决办法
40
查看次数

在不同的文件组上创建表分区,这是内存优化文件组的第一个边界

我们所有交易的 99% 都是针对最近一周的数据,一个 WEEK_SELECTOR 列描述了哪一周被描述。按周对我们的 10 亿+ 行表进行分区将是有益的,如果最近一周的 50 万左右行位于内存分区中,则更是如此。

在尝试将前一周拆分到我们的内存优化文件组时

CREATE PARTITION FUNCTION [TPF](int) AS RANGE RIGHT FOR VALUES (N'1700114')
CREATE PARTITION SCHEME [TPS] AS PARTITION [TPF] TO ([PRIMARY], [memtest])
Run Code Online (Sandbox Code Playgroud)

我们收到以下错误:

Msg 7737, Level 16, State 1, Line 2
Filegroup memtest is of a different filegroup type than the first filegroup in partition scheme TPS
Run Code Online (Sandbox Code Playgroud)

我们现在假设分区的文件组必须是相同类型的,我们的计划是不可能的,但找不到文档说这是不可能的。

有人可以解释如何做到这一点,或者如果没有,请提供一个链接来说明?谢谢。

sql-server partitioning memory-optimized-tables sql-server-2016

2
推荐指数
1
解决办法
434
查看次数