在大型和高度碎片化的数据库上过夜运行索引重建脚本时,我们经常遇到停止工作的索引,因为它们似乎从未完成重建。作业暂停,早上我们必须手动取消语句,永远等待回滚,导致停机。我们可以修复这些偶尔手动删除和重新创建的索引。
如果没有什么进展,有没有办法自动使索引重建语句超时,以便脚本可以继续执行下一个重建语句?
我们的脚本是这样的:
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) 在 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><deadlock>
<victim-list>
<victimProcess id="process3cf048"/>
</victim-list>
<process-list>
<process …
Run Code Online (Sandbox Code Playgroud) 我们的一项工作失败了,但在我们调查时,工作历史已经过期。但是,我们可以看到在失败时创建了一个新的日志文件。
没有实例重启(检查 os_sys_info)或代理重启(在 sys.processes 中查看)并且没有人使用它知道如何循环日志。
一定是某种腐败吗?
我们所有交易的 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