我们在 SQL Server VM 上看到许多非生成调度程序错误。阅读 Microsoft Docs 上的此链接,建议我们启用内存中的锁定页面。
我对内存中的锁定页面没有太多经验,并且我读过很多博客文章,其中对打开它表示谨慎。
服务器详细信息
我正在向具有内存锁定页面经验的人寻求建议,特别是在具有大内存的虚拟机上。或者是否还有其他我没有想到的选择?
我有桌子src
。在此表中,每个产品-国家/地区组合可能包含NULL
在Country
第一行的列中x
。
如何为每个产品-国家/地区组合提供行,仅包含“国家/地区”列中包含的SELECT
第一行之后的行?对于后面的任何行也很重要,即使它们确实包含在“国家/地区”列中,只要在其之前至少有一行具有真实值即可。x
NULL
SELECT
NULL
预期输出
例如。
SELECT
的行,而不是 ID 1 和 2 的行。SELECT
的行,而不是 ID 5 的行。ID | 产品 | 国家 | 时间戳 |
---|---|---|---|
3 | A | 在 | 2022-01-23 14:29:06.830 |
4 | A | 无效的 | 2022-01-24 14:29:06.830 |
6 | 乙 | CH | 2022-01-23 14:29:06.830 |
7 | 乙 | 无效的 | 2022-01-24 14:29:06.830 |
示例表和数据
create table dbo.src
(
ID int not null
,Product varchar(2) not …
Run Code Online (Sandbox Code Playgroud) 想问一下,因为找不到这个信息。
服务器重新启动后查询存储强制计划是否仍然存在?
在哪些情况下,通过查询存储强制执行的计划不会保持有效?
由于应用程序的数据一致性问题(零星数据丢失),我必须深入研究事务处理。我创建了一个扩展事件会话:
CREATE EVENT SESSION [system_rollback_error] ON SERVER
ADD EVENT sqlserver.error_reported(
ACTION(
package0.event_sequence,
sqlserver.client_app_name,
sqlserver.client_hostname,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.server_principal_name,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.sql_text,
sqlserver.transaction_id,
sqlserver.transaction_sequence
)
WHERE ([package0].[greater_than_uint64]([sqlserver].[database_id],(4))
AND [severity]>(10))),
ADD EVENT sqlserver.sql_transaction(
ACTION(
package0.event_sequence,
sqlserver.client_app_name,
sqlserver.client_hostname,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.server_principal_name,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.sql_text,
sqlserver.transaction_id,
sqlserver.transaction_sequence
)
WHERE ([package0].[greater_than_uint64]([sqlserver].[database_id],(4))
AND [transaction_state]='Rollback'
AND [transaction_type]='System'))
ADD TARGET package0.event_file(
SET filename=N'system_rollback_error',
max_file_size=(100)
)
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
MAX_EVENT_SIZE=0 KB,
MEMORY_PARTITION_MODE=NONE,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=OFF
)
GO
Run Code Online (Sandbox Code Playgroud)
现在,我收到此 ext-event 会话中显示的大量 DUI 语句,所有这些语句都处于自动提交模式,但没有任何错误消息。没有关键违规,没有错误的语法或让我知道为什么事务被回滚的东西。我已经使用检查了事务日志
select * from sys.fn_dblog(NULL,NULL) where …
Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2019,并面临一个问题,即在进行更新时,只需要 20 秒即可更新 162 行。
Update FT SET
ft.ValueName=avo.name
FROM #package FT
inner join parts.Nop_PackageAttribute PA with(nolock)
on PA.PackageID=ft.PackageID
and PA.[Key]=FT.ZfeatureId
inner join Nop_AcceptedValuesOption AVO with(nolock)
ON convert(varchar(20),AVO.AcceptedValuesOptionID)=PA.Value
where FT.AcceptedValueID is not null
Run Code Online (Sandbox Code Playgroud)
脚本示例
create table #package
(
id int PRIMARY KEY IDENTITY(1,1),
ZfeatureId INT NULL,
AcceptedValueID INT NULL,
PackageID INT NULL,
ValueName NVARCHAR(2000) default ''
)
Run Code Online (Sandbox Code Playgroud)
我在 #package 表上的索引
create nonclustered index IDX_PackageID on #package(PackageID) include (ZfeatureId,AcceptedValueID , ValueName)
create index acceptedvaluesidpackage_idx on #package(AcceptedValueID) …
Run Code Online (Sandbox Code Playgroud) 我们有一个包含 4 列的表(示例):
create TABLE [dbo].[myTable]
(
[Id] BIGINT NOT NULL,
[Id2] SMALLINT NOT NULL,
[Id3] SMALLINT NOT NULL,
[IdUnique] UNIQUEIDENTIFIER NOT NULL,
[CreateDate] DATETIME NOT NULL,
CONSTRAINT [PK_MyTable_Id_Id2_Id3] PRIMARY KEY CLUSTERED ([Id], [Id2], [Id3]),
CONSTRAINT [UQ_MyTable_IdUnique] UNIQUE NONCLUSTERED ([IdUnique] ASC )
)
Run Code Online (Sandbox Code Playgroud)
这个想法是在 WHERE 中使用 IdUnique 来检索 ID、ID2 和 ID3:
但显然我们正在进行键查找。
如何在唯一非聚集索引上包含包含列?
我找不到与此相关的任何内容。
我在 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
我有理由更改我的计算机名称(it\xe2\x80\x99s 在虚拟机中运行)。我有一个现有的 SQLExpress 实例,它是在重命名之前安装的。
\n有些功能会失败,因为新数据库仍然由旧所有者创建。更具体地说,当我尝试创建新的数据库图表时,出现以下错误。
\n\n\n无法获取有关 Windows NT 组/用户 \'OLDNAME\\user\' 的信息,错误代码 0x534。(微软 SQL Server,错误:15404)。
\n
我使用以下说明来重命名服务器:
\nsp_dropserver \'OLDNAME\\SQLEXPRESS\';\nGO\nsp_addserver \'NEWNAME\\SQLEXPRESS\',\'local\';\nGO\n-- Restart Server\nSELECT @@SERVERNAME; -- NEWNAME\\SQLEXPRESS\n
Run Code Online (Sandbox Code Playgroud)\n但是,这并不影响新数据库的默认所有者。它们仍在与所有者一起创建OLDNAME\\user
,但所有者已不存在。
我知道如何在创建后更改现有数据库的所有者。但是,如何才能让新数据库拥有正确的所有者呢?
\n我在 Windows Server 上运行 SQL Server 2016 企业版,内存为 128 GB。在安装过程中,我为 SQL 服务器分配了 124 GB,因为该服务器仅专用于 SQL,其余的留给操作系统。
现在,当 DML/DDL 查询运行或任何维护计划运行时,每个任务管理器的内存消耗飙升至 97%。但。PLE 保持良好状态(即 > 300 秒)并且未观察到性能问题。一旦作业和查询完成,SQL 在相当长一段时间内不会释放内存,我必须进行内存上限或等待一整天才能释放内存。
除了内存上限之外,还有什么方法可以让 SQL Server 释放内存以及为什么 SQL 无法在所有作业完成后立即释放内存。
sql-server memory sql-server-2016 enterprise-edition performance-tuning
请提供建议并分享您的解决方案。
2008年R2
DECLARE @ErrMsg varchar (25)
SET @ErrMsg = 'Test Raiserror in 2008 R2'
RAISERROR 50002 @ErrMsg
Run Code Online (Sandbox Code Playgroud)
上述语句产生以下输出。
消息 50002,级别 16,状态 1,第 4 行 2008 R2 测试 Raiseerror 完成时间:2022-03-12T20:12:20.1296499+03:00
2017年
DECLARE @ErrMsg varchar (25)
SET @ErrMsg = 'Test Raiserror in 2017'
RAISERROR 50002 @ErrMsg
Run Code Online (Sandbox Code Playgroud)
上述语句产生以下输出。
消息 102,级别 15,状态 1,第 4 行“50002”附近的语法不正确。完成时间:2022-03-12T20:13:24.4256066+03:00
sql-server ×10
constraint ×2
index ×2
logins ×1
memory ×1
owner ×1
query ×1
query-store ×1
t-sql ×1
wait-types ×1