我们有一个每天运行的存储过程。在其中一个子查询(执行计划中的查询 20)中,SQL Server 在 2021 年 9 月 24 日之前一直使用索引查找。但突然间,当查询在 2021/09/25 运行时,SQL Server 在同一步骤开始使用索引扫描。
以下是 2021 年 9 月 24 日执行搜寻的计划
以下是 2021 年 9 月 25 日 SQL Server 执行索引扫描的计划
EMAIL_SENDS_CCMP_LTD 表是一个相当大的表,下面是该表的空间使用数据
以下是上面突出显示的存储过程中的查询 -
insert into TALBOTS_BASE.dbo.EMAIL_ACTIVITIES
(EMAILTYPE,INTSOURCE,EMAIL,ACCTNO,FNAME,LNAME,EMAILDATE,DNEFLAG,SOURCE_CD,CREATE_ID,EMAILPREF,HASH,FILENAME,SEQ,FILEDATE,MODDATE,IPADDRESS,HAV_EMAILDATE)
SELECT
'OPEN' AS EMAILTYPE
,'CCMP' AS INTSOURCE
, a.[P_email] AS EMAIL
,'' AS ACCTNO
,'' AS [FNAME]
,'' AS [LNAME]
,CASE WHEN ISNULL(c.Subchannel,'')<>'HWW'
THEN
CASE WHEN ISDATE([click_time])=1 THEN CAST([click_time] AS DATE) ELSE NULL END
ELSE NULL
END AS EMAILDATE
,'' as …Run Code Online (Sandbox Code Playgroud) 这是一个奇怪的场景。事务日志已满。它等待AG。AG一切都好。无延迟,最后提交/硬化时间在所有节点上几乎都是实时的。预计恢复时间为零。我也从主节点和辅助节点检查了这一点(以防仪表板未更新)。此页面仅列出了此错误的两个原因:传递延迟和重做延迟。没有任何内容适用于我的系统。如何进一步解决这个问题?
编辑 1。我们对环境所做的唯一更改是添加了两个 SQL Server 2019 节点以准备迁移。但它不应该出现这样的问题。
编辑2。我发现的唯一解决方法是将数据库重新添加到AG。
我在 SQL Server 中遇到一个问题,其中非聚集索引查找的性能很差。
下面是实际的执行计划 https://www.brentozar.com/pastetheplan/?id=Sk3-4JGAK
我怎样才能提高绩效?
下面是表定义
CREATE TABLE [Parts].[ManufacturingData](
[LeadFinishId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[PartID] [int] NOT NULL,
[LeadFinishMaterial] [varchar](50) NULL,
[CreatedDate] [datetime] NULL,
[CreatedBy] [int] NULL,
[ModifiedDate] [datetime] NULL,
[Modifiedby] [int] NULL,
[DeletedDate] [datetime] NULL,
[DeletedBy] [int] NULL,
[Revision_Id] [int] NULL,
[BaseMaterialID] [int] NULL,
[MSLID] [int] NULL,
[MSLSource_Revision_id] [int] NULL,
[MaximumReflowTemperatureID] [int] NULL,
[ReflowTemperatureSource_Revision_Id] [int] NULL,
[MaximumWaveTemperatureID] [int] NULL,
[WaveTemperatureSource_Revision_ID] [int] NULL,
[ReflowSolderTimeID] [int] NULL,
[WaveSolderTimeID] [int] NULL,
[NumberOfReflowCycleID] [int] NULL,
[LeadFinishPlatingID] [int] NULL, …Run Code Online (Sandbox Code Playgroud) sql-server constraint stored-procedures execution-plan sql-server-2016
我正在观察一个简单的语句,该语句正在查询一个表并访问多个索引来检索数据:
SELECT DISTINCT
feld16,
zahl4,
feld12,
feld19 FROM
object1 WHERE
(deleted = 0 or deleted IS NULL)
Run Code Online (Sandbox Code Playgroud)
查询执行计划可以在Brent Ozar 的 Paste The Plan网站上找到,图形表示如下:
该表由包含各种数据的 82 列组成。列中数据的分布deleted为:
deleted | Number of records
---------+-------------------
0 | 71'620'068
NULL | 10
a value | 59'673
Run Code Online (Sandbox Code Playgroud)
结果集包含大约。大约 6400 万行。7100 万行与搜索谓词匹配WHERE (deleted = 0 or deleted IS NULL)。这是因为DISTINCT遗漏了 700 万条记录。
为了加快速度,我正在考虑添加一个新索引。最初我以为我有足够的知识来添加足够的索引,但我开始重新审视自己。
以下哪个索引定义(可能)是适当的解决方案?
CREATE NONCLUSTERED INDEX [IDXNew] ON [schema_owner].[object1]
(
[deleted] ASC,
[feld16] ASC,
[zahl4] …Run Code Online (Sandbox Code Playgroud) 在我们的服务器上运行 CHECKDB 时,我们遇到了以下错误:
在文件“D:\MSSQL\Data\database1.mdf_MSSQL_DBCC34”中的偏移量 0x00021279006000 处写入时,操作系统向 SQL Server 返回错误 665(由于文件系统限制,请求的操作无法完成)。
正在运行的命令:
DBCC CHECKDB (database) WITH ALL_ERRORMSGS, NO_INFOMSGS, PHYSICAL_ONLY
Run Code Online (Sandbox Code Playgroud)
设置:
生产环境中的5台服务器可用性组
测试环境中的2台服务器可用性组
这一切都发生在同一个晚上。生产服务器上的数据库相同,但测试中的数据库不同。当然,我接到电话并开始调查此事。我决定在产品中的服务器 3 上再次运行 CHECKDB,以查找失败的数据库,并且成功且没有错误。此后我们再次收到错误,但它是随机的,这让我怀疑它是否是基于活动的。根据我们的监测,该活动相当正常。
根据本文 ( https://www.mssqltips.com/sqlservertip/3008/solving-sql-server-database-physical-file-fragmentation/ ),我们使用 CONTIG -A 查看了文件碎片。mdf 文件的碎片还不错(2 和 4 个碎片)。
最近我在我的 PC 上安装了 SQL Server 2016。
这是我的服务器的详细信息:
Microsoft SQL Server 2016 (RC1) - 13.0.1200.242 (X64)
2016 年 3 月 10 日 16:49:45
版权所有 (c)
Windows 10 Pro 6.3(内部版本10586:)上的Microsoft Corporation企业评估版(64 位)
在我的 PC 上安装服务器后,尝试安装以下插件
问题:
SQL Pretty Printer甚至没有安装它会抛出错误,例如
但是SQL Pretty Printer站点说它适用于 SQL Server 2016,您可以查看链接。
下一个SQLSentry 计划资源管理器已成功安装,但插件未显示在SSMS.
版本: v2.8(内部版本 9.0.9252.0)
谁能帮我解决这个问题。请注意,两者都在 SQL Server 2014 中完美运行。
计划为我们的 Sql-Servers 重新创建新的服务帐户,我想知道 - 从安全角度来看 - 每个服务和每个服务器拥有一个域帐户或仅为每个服务创建一个域帐户并重复使用可能更好那些在不同的服务器上?
DOMAIN\Service-SSRS
DOMAIN\Service-SSAS
DOMAIN\Service-SSIS
vs.
DOMAIN\Service-SQL01-SSRS
DOMAIN\Service-SQL01-SSAS
DOMAIN\Service-SQL01-SSIS
DOMAIN\Service-SQL02-SSRS
DOMAIN\Service-SQL02-SSAS
DOMAIN\Service-SQL02-SSIS
etc.
Run Code Online (Sandbox Code Playgroud)
我们这样做是因为我们希望在所有服务器上都有一个统一和一致的配置,而今天还没有到位。我觉得每个服务器都有一个帐户可能会带来更大的灵活性,因此适得其反......
有什么具体的优点/缺点吗?为每台服务器设置单独的服务帐户是否有很多用途?
security sql-server configuration service-accounts sql-server-2016
我有一张桌子:
当我从表中选择所有内容时:
SELECT JSON_VALUE(LastReadings, '$.lastReadings."7-temp".value') as x FROM
(VALUES
(2,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":12}},"customId":null}'),
(3,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":32}},"customId":null}'),
(4,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":22}},"customId": null}'),
(5,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value": 12.0},"7-temp": {"name": "Temperature","value":123}},"customId": null}')
)
[AmirTestTable](Id,LastReadings )
Run Code Online (Sandbox Code Playgroud)
我得到
+-----+
| x |
+-----+
| 12 |
| 32 |
| 22 |
| 123 |
+-----+
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加 where 子句时:
SELECT JSON_VALUE(LastReadings, '$.lastReadings."7-temp".value') as x
FROM
(VALUES
(2,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":12}},"customId":null}'),
(3,N'{"groups": …Run Code Online (Sandbox Code Playgroud) 有谁知道哪个 SQL Server 2014/2016 版本/版本支持 CDC(变更数据捕获)?
过去,我完成了服务器迁移,并通过此脚本模板通过备份移动了我的数据库。
BACKUP DATABASE [ExampleDB] TO DISK = N'D:\Backups\ExampleDb.bak
Run Code Online (Sandbox Code Playgroud)
我在新服务器上恢复了 bak 文件。出乎意料的是,用户报告迁移后数据丢失,我通过检查旧服务器中的数据对其进行了验证。大约 8 小时数据丢失。这对我来说是非常意外的时刻。
我的问题是通过该脚本进行备份将为我提供完整备份,无论它是在完整恢复模式还是简单恢复模式下?
换句话说,无论恢复模式是简单还是完整,当我获得备份时,备份文件之间有什么区别吗?
sql-server-2016 ×10
sql-server ×8
backup ×1
constraint ×1
index-tuning ×1
json ×1
plugins ×1
security ×1
ssms ×1
windows-10 ×1