我的数据库大约是 2.5TB。每天运行重建索引是一个好习惯吗?
我们每天删除大约 20 GB 的数据 & 同时我们删除分区 & 我们将添加新分区。运行重建索引需要 8 小时,有时需要 24 小时。在此期间,日志文件增加到 300 GB。
我们需要将数据库碎片的每日报告发送给客户。看到 99% 或 98% 的人都会害怕。请建议。
表大小为 70GB,对于此表碎片级别,每天将是 99%。不知道是什么让客户要求每日报告碎片级别,但他每天都需要它。
每次我尝试查看查询存储中缺少的索引详细信息时,都会收到以下错误:
文档框架(SQL 编辑器)
程序位置:在 Microsoft.SqlServer.Management.UI.VSIntegration.Editors.ShowPlan.ShowPlanControl.OnMissingIndexDetails(Object sender, EventArgs a) 在 System.ComponentModel.Design.MenuCommand.Invoke() 在 Microsoft.SqlServer.Management.UI.VSIntegration .Editors.ShowPlan.ShowPlanControl.Microsoft.VisualStudio.OLE.Interop.IOleCommandTarget.Exec(Guid&guidGroup, UInt32 nCmdId, UInt32 nCmdExcept, IntPtr vIn, IntPtr vOut)
有没有其他人遇到过这种情况?这是我可以修复的东西还是一个错误?
SSMS 版本 13.0.16106.4
这有点令人沮丧,因为我无法查看创建索引建议的结尾。
SQL Server 2016 中的新基数估计器 (CE) 有一个不幸的回归,它严重影响了我们的部署。有问题的查询是一个普通的 Hibernate 生成的更新;然而,更新的表也是索引视图的一部分。这是一个单行更新,通常也会影响索引视图中的 ~5 行。
我已经设法将问题缩小到 2.5M 表的 PK 列的基数估计,如果首先针对该列的当前统计信息中的 PK 值编译查询,一切正常,并且生成了最佳计划.
如果 PK 较新,id est 在统计范围之外,CE 130 会生成一个非常次优的计划,基本上估计整个索引视图将受到更新的影响。对于 CE 120 或 CE 70 而言,这对我们来说从来都不是问题,这两个估算器都能生成良好的计划。有问题的领先列被“标记”为 UNKNOWN。
然而,我发现有几个跟踪标志(2388-90、4139)可用于旧的查询规划器,但这些对 CE 120+ 没有影响。
是否有任何更新的设置或跟踪标志可以调用以确保每次都能找到正常的查询计划?
我已经尝试过 TF 9481 来强制使用旧的 CE,然后它工作得很好,但这很难与 Hibernate 结合(很难将提示注入查询,我真的不想在 Hibernate 的内部结构中胡思乱想)。我还尝试了 TF 4199 和最新的 CU,但无济于事。
我正在为新的数据仓库设计 ERD。
我将“事实”放在引号中并说“松散星型模式”,因为使用聚集列存储,我可以将许多维度直接放入“事实”表中,而无需担心行宽的典型问题。我的许多维度都进入了“事实”表。我正在创建一些维度表和代理键,但前提是除了暗淡描述本身之外,暗淡还具有属性。
这给我带来了一些非常广泛、高基数的领域,即nvarchar(max). 不必太深入,将这些字段视为非规范化列表。我需要针对我的一个数据源的粒度对列表进行非规范化。我确实在另一个事实表中对其进行了规范化,但不是我在此数据源中出现的事实表。
用户需要这些字段来搜索我正在显示的数据集市中的关键字。在我当前的设计中,它们位于聚集列存储“事实”表中。用户将经常查询事实表而不触及nvarchar(max)字段。
有没有比聚集列存储表更正确的将宽维度放入我的数据仓库的地方?
Joe Obbish告诉我,我们目前无法放入nvarchar(max)CCI。创建一个 LOB 表作为我的“事实”表的扩展对我来说是最佳实践吗?
我们将来可能会添加其他语言。目前和在可预见的期限内,该nvarchar栏仅包含英语。
data-warehouse database-design sql-server columnstore sql-server-2016
我的 SQL Server 2016 网络版正面临一个奇怪的行为。SQL Server Windows NT 64 位突然跳转到使用 90% 的 CPU,然后在 5 秒后下降,然后在 3 到 5 分钟后再次出现尖峰(正常使用率大约是 CPU 的 2% 到 5%)
我的服务器规格
服务器是最新的,安装了最新的更新,MS SQL Server 处于默认设置。我怎样才能找到导致这种情况的原因。请帮我。谢谢
请检查屏幕截图
我想创建被授予访问权限的登录名
查看所有定义
选择所有表的所有记录
对我来说,将登录名分配给每个数据库并将其添加到自定义 db 角色或每个 db 中的默认 db 角色(如 db_datareader)似乎开销太大。
相反,我尝试使用用户定义的服务器角色。
但是如何将所需的权限分配给用户定义的服务器角色以允许查看所有数据库的任何定义和 db_datareader?
这甚至可能吗?
请帮我解决这个安装问题。
我正在尝试在两个 Windows Server 2012 R2 VM 上安装 SQL Server 2016(SP1 集成)故障转移群集实例 (FCI)。
我有 3 个集群磁盘。
我首先尝试直接安装到这些根目录。失败后,我创建了要安装的子目录。服务帐户和我自己是 VM 的本地管理员,我明确授予对每个子目录的完全控制权。最后,我暂时尝试忽略挂载点,只安装到 E: 上的子目录。所有尝试都失败并出现以下错误。
详细结果:功能:数据库引擎服务状态:失败:有关详细信息,请参阅日志失败原因:在功能的设置过程中发生错误。下一步:使用以下信息解决错误,卸载此功能,然后再次运行安装过程。组件名称:
SQL Server 数据库引擎服务实例功能组件错误代码:0x84CF0004 错误描述:更新文件夹“E:\MSSQL\Data\TempDB1\System Volume Information”的权限设置时,文件“E:\MSSQL\Data\”的权限设置更新失败TempDB1\系统卷信息\ResumeKeyFilter.Store'。文件夹权限设置应该设置为 'D:P(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICI;FA;;;CO)(A; OICI;FA;;;S-1-5-80-419818685-2113908795-3893829424-1849583840-1690709397)'。错误帮助链接:http :
//go.microsoft.com/fwlink?LinkId=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=13.0.4001.0&EvtType=0x88792597%400x72597%400x720000000000x8000x8700x8700000
下面是用于安装的配置文件的匿名版本。
;SQL Server 2016 Configuration File
[OPTIONS]
ACTION="InstallFailoverCluster"
SUPPRESSPRIVACYSTATEMENTNOTICE="False"
IACCEPTROPENLICENSETERMS="False"
IAcceptSQLServerLicenseTerms="True"
ENU="True"
QUIET="False"
QUIETSIMPLE="True"
UpdateEnabled="True"
USEMICROSOFTUPDATE="False"
FEATURES=SQLENGINE,REPLICATION,FULLTEXT,DQ,CONN,BC,SDK,SNAC_SDK
UpdateSource="MU"
HELP="False"
INDICATEPROGRESS="True"
X86="False"
INSTANCENAME="InstName"
INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"
INSTANCEID="InstName"
INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
FAILOVERCLUSTERDISKS="Cluster Disk 7"
FAILOVERCLUSTERGROUP="SQL Server (InstName)"
FAILOVERCLUSTERIPADDRESSES="IPv4;10.10.10.17;Cluster …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 SQL 代理作业 (SQL Server 2016) 中设置 PowerShell 脚本。我正在使用第三方模块 DBATOOLS.psd1,它似乎是我遇到语法错误的地方。目前我的 SQL 作业有一行代码失败:
Import-Module e:\dbatools-master\dbatools-master\dbatools.psd1
Run Code Online (Sandbox Code Playgroud)
为什么作业失败并出现以下错误?当我通过 PowerShell ISE 运行它时,此命令工作正常。
Error Message: Unable to start execution of step 1 (reason: line(5): Syntax error). The step failed.
Run Code Online (Sandbox Code Playgroud) sql-server powershell sql-server-agent sql-server-2016 dbatools
我有一个包含 80 多个稀疏列和一个列集列的表,这是一个简单的例子:
DROP TABLE IF EXISTS #ColumnSet
GO
CREATE TABLE #ColumnSet
(
Id INT NOT NULL
, Value1 VARCHAR(100) SPARSE NULL
, Value2 VARCHAR(100) SPARSE NULL
, Value3 VARCHAR(100) SPARSE NULL
, Value4 VARCHAR(100) SPARSE NULL
, AllValues XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
)
GO
INSERT INTO #ColumnSet
(Id, Value1, Value2, Value3, Value4)
VALUES
(1, 'POSITIVE', NULL, NULL, NULL),
(2, 'NEGATIVE', NULL, 'NEGATIVE', NULL),
(3, NULL, NULL, 'NEGATIVE', 'POSITIVE'),
(4, 'NEGATIVE', NULL, 'THIS IS NOT A POSITIVE RESULT', NULL)
GO …Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×9
ssms ×2
clustering ×1
columnstore ×1
dbatools ×1
memory ×1
mount-point ×1
permissions ×1
powershell ×1
role ×1
security ×1
xml ×1
xquery ×1