SQL Server 作业运行时出现死锁。死锁发生在一个简单的 DELETE 语句上。我原以为必须运行 SELECT/UPDATE 查询才能导致死锁?但看起来是 DELETE/DELETE 死锁...
我正在寻找的是为什么我会遇到 DELETE/DELETE 死锁。这是(据我所知)传入不同的参数。
有任何想法吗?谢谢。
deadlock-list
2014-05-20 07:30:09.66 spid25s deadlock victim=process409048
2014-05-20 07:30:09.66 spid25s process-list
2014-05-20 07:30:09.66 spid25s process id=process409048 taskpriority=0 logused=0 waitresource=PAGE: 12:1:7127294 waittime=4352 ownerId=629860973 transactionname=DELETE lasttranstarted=2014-05-20T07:30:05.307 XDES=0x397219620 lockMode=U schedulerid=5 kpid=3792 status=suspended spid=150 sbid=0 ecid=3 priority=0 trancount=0 lastbatchstarted=2014-05-20T07:30:05.307 lastbatchcompleted=2014-05-20T07:30:05.307 clientapp=QSQL25 hostname=MORRIS hostpid=1528 isolationlevel=read committed (2) xactid=629860973 currentdb=12 lockTimeout=4294967295 clientoption1=671088672 clientoption2=128056
2014-05-20 07:30:09.66 spid25s executionStack
2014-05-20 07:30:09.66 spid25s frame procname=adhoc line=1 stmtstart=68 sqlhandle=0x020000000b887a18f75d0aa07c25a9b8630fca696aa0e5d2
2014-05-20 07:30:09.66 spid25s DELETE FROM dbo.UserDetailsData WHERE (Username = …Run Code Online (Sandbox Code Playgroud) 我有时会收到以下错误。也许每30分钟左右。我不确定如何跟踪导致问题的原因。我认为这可能是网络问题,因为也有磁盘备份在运行。
关于从哪里开始的任何建议?谢谢!
底层提供程序在 Open 上失败。---> System.Data.SqlClient.SqlException: 已成功与服务器建立连接,但在登录前握手期间发生错误。(提供程序:SSL 提供程序,错误:0 - 等待操作超时。)---> System.ComponentModel.Win32Exception:等待操作超时
我正在将 SQL Server DB 迁移到新实例。
有人告诉我,可以从系统目录中的可用备份动态构建 RESTORE 脚本。
有谁知道一个示例脚本来做到这一点?
谢谢!
我正在将 SQL Server 2008R2 数据库迁移到新服务器。(也是 2008R2)
服务器上有许多 CLR 程序集。这些会自动随数据库迁移还是我必须手动编写脚本?
谢谢!
我已经将 VS2008 中内置的 SSIS 包转换为在 VS2010 中打开。
我有一个未通过验证的派生列组件。它在 VS2008 中运行良好。这是派生列中使用的表达式...
FINDSTRING(
SecurityDescription,"\n",1) > 0
? SUBSTRING(SecurityDescription, 1,
FINDSTRING(SecurityDescription,"\n",1) - 1)
) : SecurityDescription
Run Code Online (Sandbox Code Playgroud)
以下是我运行包时的错误...
错误是:
[派生列 [36]] 错误:
尝试解析表达式
“[FINDSTRING](#102,"\n",1) > 0 ? [SUBSTRING](#11898,1,[FINDSTRING](#11898,"\n",1) - 1) : #102”失败并返回错误代码 0xC00470A3。
无法解析表达式。它可能包含无效元素或格式不正确。也可能存在内存不足错误。
我已经仔细检查过,SecurityDescription是一个有效的列。如果我只是添加SecurityDescription. 不知道FINDSTRING代码有什么问题。
最好不要对自动增长设置使用百分比文件增长吗?
以下建议对 500GB 以下的数据库使用百分比值增长,但是否建议这样做?
http://performance-expert.blogspot.ie/2012/06/tuning-autogrow-settings-of-sql-server.html
如果磁盘空间有限或无法调整数据库大小,则应将 >autogrowth 值配置为固定百分比。例如,对于 500 GB 以下的数据库,将自动增长值配置为 >10%,如果数据库超过 500 GB,则配置为固定的兆字节数。
谢谢!
更新:下面我在一些数据库上添加了 Autogrowth 的快照。对此有什么建议吗?
还有什么是预测数据库大小的最佳方法?

我有一个 TVF,调用时需要 10 秒才能运行。
但是,如果我在该 TVF 内进行查询,则只需要 1 秒。我已在此基础查询表上添加了正确的索引。
在 TVF 的执行计划中,它正在执行表扫描。我如何找出它这样做的原因?
谢谢。
询问...
select Username, Identifier
from [dbo].Unmapped(@CustID, @StartDate, @EndDate)
Run Code Online (Sandbox Code Playgroud)

表扫描属性...

我已经下载了 Ola Hallengren 的脚本并部署到主数据库。我使用下面的运行它...
EXECUTE dbo.IndexOptimize
@Databases = 'USER_DATABASES',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30
Run Code Online (Sandbox Code Playgroud)
我在 SSMS 中得到了这个输出,但索引没有被重建。碎片化程度还是很高的。我错过了什么吗?
Date and time: 2015-03-01 14:07:24
Server: TestSvr
Version: 10.50.2500.0
Edition: Standard Edition (64-bit)
Procedure: [master].[dbo].[IndexOptimize]
Parameters: @Databases = 'USER_DATABASES',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@PageCountLevel = 1000, @SortInTempdb = 'N',
@MaxDOP = NULL, @FillFactor = NULL, @PadIndex = NULL,
@LOBCompaction = 'Y', @UpdateStatistics …Run Code Online (Sandbox Code Playgroud) 我运行了下面的查询,它显示了当前正在运行的作业的列表。然而,在活动监视器中,这些都没有运行。我如何验证这些是否正在运行?
我该如何杀死他们?
select sj.name
,sja.*
from msdb.dbo.sysjobactivity as sja
inner join msdb.dbo.sysjobs as sj on sja.job_id = sj.job_id
where sja.start_execution_date is not null
and sja.stop_execution_date is null
Run Code Online (Sandbox Code Playgroud)
我们的服务器管理员要求我释放 SQL 服务器上的磁盘空间,因为 SQL 数据文件所在的驱动器的使用率为 97%。
我发现了一张失控的桌子。它现在包含超过 3 亿行,所以我将设置一项工作以在一夜之间删除这些行。
我想避免 SHRINKFILE,因为不推荐。
sql-server ×10
index-tuning ×2
auto-growth ×1
automation ×1
catalogs ×1
deadlock ×1
disk-space ×1
index ×1
jobs ×1
maintenance ×1
migration ×1
restore ×1
scripting ×1
sql-clr ×1
ssis ×1
ssis-2012 ×1