请参阅https://www.brentozar.com/pastetheplan/?id=SyLQIPDtF (SQL 2016 Enterprise)上的执行计划
SELECT prmp.month_key
, prd.*
FROM mba.peak_reporting_monats_peaks AS prmp
LEFT LOOP JOIN (SELECT prd.date_key
, prd.hour
, prd.kpi_type
, prd.is_dr_brand
, prd.type_id_usage
, prd.product_identifier
, SUM(prd.kb) / 1024.0 / 1024.0 AS gb
, SUM(CAST(prd.sek AS BIGINT)) AS sek
, SUM(prd.anzahl) AS anzahl
, SUM(prd.kb) / 439453125.0 AS gbits
FROM db1.mba.peak_reporting_data AS prd …Run Code Online (Sandbox Code Playgroud) 我有一段用 T-SQL 编写的代码(存储过程),它将临时表中的多个数据插入表中,如下所示:
INSERT INTO [myschema].[CalculatedData](
Year,
Month,
Line,
Car,
Service,
Route,
Trip,
Stop,
Qty,
CalculatedMean
) SELECT
Year,
Month,
Line,
Car,
Service,
Route,
Trip,
Stop,
COUNT(*),
AVG(Duration),
FROM
@TableToCalculate
GROUP BY
Year,
Month,
Line,
Car,
Service,
Route,
Trip,
Stop;
Run Code Online (Sandbox Code Playgroud)
如您所见,我计算了所有值的平均值。很简单,考虑到内置功能。
现在,我想做的是计算中位数。没有任何函数可以计算它,但由于中位数等于计算第 50 个百分位数,因此可以使用它。但我不知道该怎么做。
有什么帮助吗?
我有第三部分应用程序,其中有一个 450GB 的表,其中在 TEXT 列中包含文件附件(是的,我知道)。通过文档保留角度,我已使用便携式驱动器将大约 35% 的旧附件导出到磁盘。TEXT 列现在有一条注释,表明附件已存档(有利于应用程序的 UI) - 从多个 MB/GB 减少到不到 1KB。
我知道反对缩小数据库的论点。我从这个论坛收集的选项包括(1)复制表、删除原始表、重命名副本、(2)使用 xp_cmdshell 'bcp...' 导出表、截断表、使用 BULK INSERT 从 'c: 导入数据。 ..' 和 ...; (3) 运行 ALTER INDEX ALL ON dbo.Table REORGANIZE WITH (LOB_COMPACTION = ON)
我最关心的是 SQL Server 将用于任何选项的资源(磁盘空间、CPU、内存...),特别是考虑到表的大小。至于时间,如果需要,我可以阻止周末时间,但是日志文件、临时数据库文件等呢?在开始使用这些选项中的任何一个之前,我应该设置/更改哪些设置?
该服务器具有 160GB 内存,其中 128GB 用于 SQL Server (2016),2 个节点,配有 20 个处理器,每个节点在 MS Windows Server 2012 R2 标准上额定频率为 2.2 GHz。
目前我们的服务器运行在 Microsoft SQL Server 2016 (SP3) (KB5003279) - 13.0.6300.2 (X64) 2021 年 8 月 7 日 01:20:37 版权所有 (c) Windows Server 2016 Standard 10.0 上的 Microsoft Corporation Enterprise Edition(64 位)(内部版本 14393:)。这是辅助只读 AG 副本。我们在主副本和辅助副本上安装了 SP3。然而最近第二个节点在 Windows 更新中声明了这一点
可用更新:SQL Server 2016 Service Pack 2 (KB4052908)
我有两个与链接服务器连接的 SQL Server 2016。当我sys.dm_exec_describe_first_result_set从远程服务器查询时,它返回列表的数字数据类型而不是十进制。
第一个查询(从远程服务器执行)
select * from sys.dm_exec_describe_first_result_set (N'select top 1 * from LinkedServerFoo.DatabaseFoo.dbo.TargetTable', NULL, 0) [source]
Run Code Online (Sandbox Code Playgroud)
第二个查询(从sql server执行)
select * from sys.dm_exec_describe_first_result_set (N'select top 1 * from DatabaseFoo.dbo.TargetTable', NULL, 0) [source]
Run Code Online (Sandbox Code Playgroud)
结果
这对我来说是一个问题,因为我根据这些查询的输出来比较数据类型。
知道可能出现什么问题吗?为什么会这样以及如何解决?
smalldatetimewhere sys 表错误返回也存在同样的问题datetime我们正在使用 SQL Server 2016。我们在 2023 年 9 月 11 日的查询持续时间方面遇到一些问题。想在 QueryStore 上检查它,我在 2023 年 9 月 11 日 05:00 PM 执行的查询存储上看到:
2023 年 9 月 11 日,我们的执行次数要多得多(2023 年 9 月 8 日,执行次数约为 1150 VS 800)。我在 2023 年 9 月 12 日运行相同的查询存储检查,发现昨天的执行计数比我昨天检查的要少得多。
你知道为什么我们会有这样的差异吗?更重要的是,我仍然看到 2023 年 9 月 11 日的执行计数仍在减少。
查询执行 2023-09-14 9:52 AM:
由于磁盘性能较差,我需要使用 SQL Server 2016 中的延迟持久性设置进行评估。
微软明确表示,这会带来数据丢失的风险,因为事务是在内存中而不是在磁盘上提交的。
这种风险不仅限于 SQL Server 崩溃,其他原因也可能导致这种风险,例如服务器重新启动。
如果有人尝试重新启动服务器,是否有任何方法可以通过将 SQL Server 将数据闪存到磁盘来降低风险?我搜索过诸如事件触发之类的内容,但一无所获。
除了我上面提到的风险之外,您还认为我应该考虑其他风险吗?这是一个独立的 SQL Server,不参与故障转移群集,也不属于可用性组的一部分。
我提到的性能不佳与日志延迟有关;此 SQL Server 实例中等待时间最长的是 CX*,其次是 WriteLog。目前将事务写入磁盘需要 3-4 毫秒。这是关于云的,即使在 SQL Server 中激活 T1800 后,系统也会受到日志延迟的影响。我猜这与虚拟化/vSAN 固件和更深层次的卷设置有关;我们已经打开了供应商服务票,但为了以防万一供应商无法提供帮助,我必须调查所有可能提高性能的可能性。
我们目前有一个在 Win 2012 专用服务器上运行的 asp.net 应用程序,带有 SQL 2014 Express 的本地副本。
我们希望添加第二个 Web 服务器并将它们放在 NLB 集群中。但是如何处理 SQL... 该网站严重依赖 SQL 数据库(读取和写入)
我隐约熟悉 SQL 复制、可用性组、日志传送等的形式,并且已经阅读了 StackExchange 上关于同一主题的很多帖子,但我仍然有一些问题。
该站点只有中等流量,但 HA 和 RPO 仍然非常重要。我宁愿有一些停机时间,而不是松散的 1 行 SQL 数据,尽管迁移到此设置的重点是减少停机的机会。
一个适用于 SQL Express 的解决方案将是理想的,SQL Standard 很好,但我不想升级到 SQL Enterprise。
A) 关于在 IIS 服务器上保留 SQL,我有什么选择/建议。我宁愿将 SQL 跨越 2 个以上的 Web 服务器,然后只为 SQL 添加额外的服务器。B) SQL 2016 中是否有任何新功能可以帮助解决这个问题?
虽然我知道这不完全是 DBA 的问题,但我还是会问。有没有办法强制 asp.net 同时写入所有可用的 SQL 数据库,但可以从其中任何一个读取?(有点像 Windows NLB 对所有服务器使用相同的 IP,将更新/插入发布到 SQL IP 会将其写入所有服务器,但查询只会使用第一台回答的服务器的结果?
谢谢你们!
我们正在构建一个新的 AlwaysOn SQL Server 2016 数据库集群,我正在使用 Ola Hallengren ( https://ola.hallengren.com ) 备份脚本设置备份,我正在寻找最佳运行时间的一些建议以下任务:
DatabaseIntegrityCheck - SYSTEM_DATABASES
DatabaseIntegrityCheck - USER_DATABASES
IndexOptimize - USER_DATABASES
Run Code Online (Sandbox Code Playgroud)
我目前计划使用以下计划进行备份:
DatabaseBackup - SYSTEM_DATABASES - FULL @ 23:30 every day
DatabaseBackup - USER_DATABASES - FULL @ 23:00 every day
DatabaseBackup - USER_DATABASES - DIFF @ Every hour starting at 00:00 to 22:00
DatabaseBackup - USER_DATABASES - LOG @ Every 5 mins starting at 00:03 to 23:59:59
Run Code Online (Sandbox Code Playgroud)
通过阅读建议是在备份之前进行数据库完整性检查,所以我认为可能在主备份之前 30 分钟,然后在已知负载很小的时间运行索引优化。将其作为 SQL Server 备份的计划有意义吗?
我们的 SQL Server 2016 开发服务器在启动时设置了跟踪标志 10260。运行 SQL Server 2016 的其他服务器没有。
我搜索了高低,但未能找到有关该主题的任何信息。
这个跟踪标志有什么作用?
移除是否安全?
sql-server-2016 ×10
sql-server ×8
t-sql ×2
backup ×1
blob ×1
columnstore ×1
index ×1
jobs ×1
query-store ×1
replication ×1
service-pack ×1
trace-flags ×1
windows ×1