在 SQL Server 2008 R2 中,我收到了几个死锁报告,输入缓冲区中有“*password------------”。看起来像是攻击,但在那种情况下,我不知道攻击的原因或类型。
(日志是由一位经验丰富的 DBA 专家生成的,并告诉我,不是我)
有谁知道它是什么?谢谢!
例子:
<?xml version="1.0"?>
<blocked-process>
<process id="process879948" taskpriority="0" logused="0" waitresource="KEY: 5:72057602473263104 (1d69201d0ba6)" waittime="5185" ownerId="88389135" transactionname="SELECT" lasttranstarted="2012-09-25T18:11:02.507" XDES="0x1f7d2a590" lockMode="S" schedulerid="2" kpid="4552" status="suspended" spid="86" sbid="2" ecid="0" priority="0" trancount="0" lastbatchstarted="2012-09-25T18:11:02.507" lastbatchcompleted="2012-09-25T18:11:02.507" lastattention="2012-09-25T18:07:35.740" clientapp=".Net SqlClient Data Provider" hostname="IP-xxxxxxxx" hostpid="4868" loginname="sa" isolationlevel="read committed (2)" xactid="88389135" currentdb="1" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame line="14" stmtstart="374" stmtend="764" sqlhandle="0x03000500dac2967f208e4000a19d00000000000000000000"/>
<frame line="1" stmtstart="44" sqlhandle="0x02000000632f7e131f79ec7312284505961e537a61b81be7"/>
<frame line="1" sqlhandle="0x000000000000000000000000000000000000000000000000"/>
</executionStack>
<inputbuf>
*password--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- </inputbuf>
</process>
</blocked-process>
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,有几次我必须显示按某个字段分页和排序的结果。
例如,按姓氏排序的简单用户列表。正因为如此,因为我也有逻辑删除,而且它是一个多租户应用程序,我通常使用这样的集群索引:
CREATE CLUSTERED INDEX [idx] ON [Users]
(
IsDeleted ASC,
[AccountId] ASC,
[LastName] ASC
)
Run Code Online (Sandbox Code Playgroud)
这意味着像分页一样的查询SELECT TOP(20) * FROM Users WHERE IsDeleted = 0 AND AccountId = xxx
按姓氏排序。我知道它不能保证被排序,但在实践中它总是如此。
然而,在这里阅读关于聚集索引的Kimberly Tripp博客文章,她说这样做是一个可怕的想法。更糟糕的是因为 IsDeleted (BIT) 字段不允许我设置
但是,如果我将 CLUSTERED INDEX 更改为唯一 ID,则需要开始使用ORDER BY LastName
,这在实践中非常慢。
我的表有几百万条记录(最多几千万条),一般使用如下:
IsDeleted = 0, AccountId = xxxx
(只有单个帐户的未删除数据批量更新)。题:
这类表的推荐索引(以及如何排序)是什么?
又如对于这些类型的表将是一个调查结果表包含以下几列IsDeleted (BIT), AccountId (FK GUID), UserId (FK GUID), QuestionKey (NVARCHAR), AnswerValue (TEXT)
,在我的聚集键是可能(IsDeleted, AccountId, …
我有一个 SQL Server 代理作业卡在“进行中”。这是一个完整的备份,通常需要 30 分钟,但它需要 7 小时,而且还在增加。我重新启动了代理,然后重新启动了整个操作系统,它仍然显示“进行中”。
有什么办法可以阻止吗?
如果我运行select * from sys.dm_exec_requests
,我会得到 2 行处于“正在运行”状态,一个是“SELECT”,另一行是“DBCC TABLE CHECK”。事实上,这项工作的第一步是使用 Ola Hallengren 的脚本运行数据库完整性检查。
版本:
Microsoft SQL Server 2016 (RTM-GDR) (KB4019088) - 13.0.1742.0 (X64)
2017 年 7 月 5 日 23:41:17 版权所有 (c) Windows Server 2016 Datacenter 6.3(内部版本 14393)上的 Microsoft Corporation 标准版(64 位): )(管理程序)