小编Mit*_*eat的帖子

跟踪标志 4199 - 全局启用?

这可能属于意见范畴,但我很好奇人们是否使用跟踪标志 4199作为 SQL Server 的启动参数。对于使用过它的人,您在什么情况下遇到过查询回归?

这似乎是全面的潜在性能优势,我正在考虑在我们的非生产环境中全局启用它,并让它静置几个月以找出任何问题。

2014 年(或 2016 年)是否默认将 4199 中的修复程序纳入优化器?虽然我理解不引入意外计划更改的情况,但在版本之间隐藏所有这些修复似乎很奇怪。

我们使用的是 2008、2008R2,主要是 2012。

sql-server optimization execution-plan

20
推荐指数
2
解决办法
2万
查看次数

TempDB 中的损坏分区如何导致 DBCC CHECKDB 报告没有问题?

我们的其中一台 SQL Server 最近报告了以下错误:

DATE/TIME:  2/25/2013 9:15:14 PM

DESCRIPTION:    No catalog entry found for partition ID 9079262474267394048
     in database 2. The metadata is inconsistent. Run DBCC CHECKDB to check for
     a metadata corruption.
Run Code Online (Sandbox Code Playgroud)

不到 15 分钟后,我连接到服务器并运行:

SELECT name
FROM sys.databases
WHERE database_id = 2;
Run Code Online (Sandbox Code Playgroud)

返回'tempdb'。然后我跑了:

DBCC CHECKDB ('tempdb') WITH NO_INFOMSGS, TABLERESULTS;
Run Code Online (Sandbox Code Playgroud)

没有返回任何结果,表明受影响的数据库没有问题。

数据库中的损坏如何导致上述错误消息DBCC CHECKDB但未报告问题?我假设如果页面校验和计算失败,导致页面被标记为怀疑引用该页面的任何对象将无法删除,但我一定是错的。

一旦页面被标记为“可疑”,如何将其标记为“不可疑”、“已修复”或“重用”,或者DBCC CHECKDB不报告相关页面有任何问题的任何内容?


编辑:2013-02-27 13:24

只是为了好玩,我试图在 TempDB 中重新创建损坏,假设 #temp 表是罪魁祸首。

但是,由于我无法SINGLE_USER在 TempDB 中设置该选项,因此无法用于DBCC WRITEPAGE损坏页面,因此我无法在 TempDB 中强制损坏。

而不是使用DBCC WRITEPAGE …

sql-server sql-server-2012 tempdb dbcc-checkdb

9
推荐指数
3
解决办法
8334
查看次数

SQL Server 表大小差异

希望这有一个简单的答案,我错过了一些明显的东西。我有一个表,其中行数 * 行大小比表使用的实际数据空间小得多。

如果我运行标准报告“Top Tables 的磁盘使用情况”,我得到的数字是:

# Records   Reserved (KB)      Data (KB)      Indexes (KB)      Unused (KB) 
33,245        32,962,192       31,070,264       144               1,891,784
Run Code Online (Sandbox Code Playgroud)

这(除非我遗漏了一些东西)意味着每一行占用的空间不到 1MB!

表模式(我没有设计)是:

CREATE TABLE [MySchema].[MyTable]
(
    [Code]     [varchar](4) NOT NULL,
    [SomeID]   [smallint] NOT NULL,
    [SomeID1]  [smallint] NOT NULL,
    [Updated]  [datetime] NOT NULL,
    [SomeId2]  [int] NULL,
    [SomeId3]  [int] NULL,
    [Somekey]  [real] NULL,
    [desc1]    [char](12) NULL,
    [colA]     [real] NULL,
    [someid4]  [char](20) NULL,
    [starttime] [real] NULL,
    [endtime]  [real] NULL,
    [duration] [real] NULL,
    [reason]   [real] NULL,
    [status]   [real] NULL,
    [category] [real] NULL, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server size

6
推荐指数
1
解决办法
1725
查看次数

空间查询结果的可视化工具

这个问题什么是将 sql 08 空间数据放到地图上的最简单方法?(以及许多其他文章)推荐 Craig Dunn 的 Geoquery,但所有下载链接似乎都已失效。

SQL Server Managament Studio 的空间结果选项卡将显示单个数据集,这篇 MSDN 文章SQL Server 2008中的空间数据支持提到了一种UNION ALL用于显示叠加在地图上的点数据的解决方法:

SELECT geog, name FROM Mondial.dbo.city WHERE geog IS NOT NULL 
UNION ALL 
SELECT geog, cntry_name FROM SpatialSamples.dbo.cntry00
Run Code Online (Sandbox Code Playgroud)

每当我尝试类似的事情时,我只会显示一个结果集。

SQL Server 2008 或 2012 中是否有内置的东西来做到这一点?

sql-server-2008 sql-server spatial

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