我已经在我们的测试数据库服务器上运行了 sp_blitz(版本 45)。它抱怨
数据库 [MDS] 具有用于页面验证的 TORN_PAGE_DETECTION。SQL Server 可能更难识别存储损坏并从中恢复。考虑使用 CHECKSUM 代替。
但这是来自微软的数据库。
将页面验证更改为 CheckSum 是否明智?
还是应该等微软发布新版本的MDS?
我想将数据库中的所有文件组更改为 AutoGrow_all_Files,但前提是它当前是 AutoGrow_Single_File,如下所示:
ALTER DATABASE mydatabase MODIFY FILEGROUP [myfilegroup] AUTOGROW_ALL_FILES
Run Code Online (Sandbox Code Playgroud)
如何检查此数据库属性?
我在 SQL Server 2016 CTP 30 中使用新的“R”脚本。
终于让它工作了,感谢这个站点。
我遇到了一个问题,我相信其他人也会遇到这个问题。
突然之间“R”脚本不再工作,他们返回了这个错误:
消息 39011,级别 16,状态 1,第 1 行
SQL Server 无法与 LaunchPad 服务进行通信。请验证服务的配置。
我刚刚从 BrentOzar.com 下载了 FirstResponderKit 的最新版本 (20190128),并尝试将其安装在 Azure SQL DB 上。我收到这些错误:
Msg 40515, Level 15, State 1, Procedure sp_AllNightLog, Line 16 [Batch Start Line 13]
Reference to database and/or server name in 'master.sys.procedures' is not supported in this version of SQL Server.
Msg 40515, Level 15, State 1, Procedure sp_AllNightLog_Setup, Line 16 [Batch Start Line 1492]
Reference to database and/or server name in 'master.sys.procedures' is not supported in this version of SQL Server.
Msg 40515, Level 15, State 1, Procedure sp_Blitz, …Run Code Online (Sandbox Code Playgroud) 在包含 170 亿行的分区表上,我得到的 row_group 数量非常多。
我听说我应该尝试在每个行组中获取 1.048.576 行。我该如何实现这一目标?
据报道,这trim_reason是。DICTIONARY_SIZEsys.dm_db_column_store_row_group_physical_stats
当我的批处理作业每批插入 1,048,576 行时,每个行组平均获得 100.000 行。
我对列存储索引相当陌生,但我能找到的唯一参考DICTIONARY_SIZE是字符串列。我的表只有bit、bigint、 和numeric列。
我的表看起来像这样(列名模糊),我知道很多列大多包含 NULL。如果存在值,它们可能会变化很大(标准差很大)。这是振动数据。
CREATE TABLE fct.MeasureV2
(
MeasureV2ID bigint NOT NULL IDENTITY(1, 1),
DT1ModelID int NOT NULL CONSTRAINT DF_MeasureV2_DT1ModelID DEFAULT ((0)),
DT1TID int NOT NULL CONSTRAINT DF_MeasureV2_DT1TID DEFAULT ((0)),
TimeStampUTC datetime NOT NULL,
AChkSum bigint NULL,
OChkSum bigint NULL,
SChkSum bigint NULL,
ATp numeric (18, 10) NULL,
ATpAvg numeric (18, 10) NULL,
AWDAbsAvg …Run Code Online (Sandbox Code Playgroud) 我正在运行以下查询:
DECLARE @sql NVARCHAR(max) = N''
SELECT @sql += N' EXEC dbo.DoSomething @Tablename = ''' + SCHEMA_NAME(T.schema_id) + N'.' + T.name + N''''
--SELECT *
FROM sys.tables T
INNER JOIN sys.indexes I ON I.object_id = T.object_id
ORDER by 1
PRINT @sql
Run Code Online (Sandbox Code Playgroud)
但我只打印了一行。如果我取出这ORDER by 1条线,或者用它替换它,
ORDER BY t.name那么我就会得到预期的结果。
这是 SQL Server 中的错误吗?
我已经在 SQL Server 2016 SP1 和 2014 Sp2-Cu1 上试过了。
您应该多久更新一次统计数据?什么是“太少”?“太频繁”有多频繁?
答案是“这取决于”您的数据库、用户、数据等。
所以我试图在两个表中记录我们的统计数据随着时间的推移是什么样的。他们来了:
DROP TABLE /*IF EXISTS */ dbo.dm_db_stats_histogram
DROP TABLE /*IF EXISTS */ dbo.dm_db_stats_properties
go
CREATE TABLE dbo.dm_db_stats_properties(
dm_db_stats_propertiesID INT IDENTITY(1,1) NOT NULL constraint PK_dm_db_stats_properties PRIMARY KEY CLUSTERED,
DatabaseId INT NOT NULL,
object_id int NOT NULL,
stats_id int NOT NULL,
last_updated DATETIME2 NOT NULL,
rows BIGINT NOT NULL,
rows_sampled BIGINT NOT NULL,
steps int NOT NULL,
unfiltered_rows BIGINT NOT NULL,
modification_counter BIGINT NOT NULL,
persisted_sample_percent FLOAT NULL
, SampleDate DATETIME2 NOT NULL CONSTRAINT df_dm_db_stats_properties_SampleDate DEFAULT SYSUTCDATETIME()
)
GO
ALTER …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server statistics azure-sql-database sql-server-2017
我们的 SQL Server 2016 开发服务器在启动时设置了跟踪标志 10260。运行 SQL Server 2016 的其他服务器没有。
我搜索了高低,但未能找到有关该主题的任何信息。
这个跟踪标志有什么作用?
移除是否安全?
如何在 SQL Server 中将时间戳/行版本转换为日期和时间?
我有几个表,我想在其中跟踪上次更新,列名称如ModifiedAt, UpdatedAt, UpdatedDate。
如果它们使用 Rowversion 数据类型或 Timestamp 数据类型,这可能吗?
如
CREATE TABLE dbo.Customer (
CustomerID BIGINT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
CustomerName NVARCHAR(200) NOT NULL ,
CreatedAt DATETIME2 NOT NULL CONSTRAINT df_Customer_CreatedAt DEFAULT GETUTCDATE(),
UpdatedAt ROWVERSION NOT NULL /* does this work ? */
)
Run Code Online (Sandbox Code Playgroud) sql-server ×7
sp-blitz ×2
columnstore ×1
order-by ×1
statistics ×1
timestamp ×1
trace-flags ×1