我想SELECT GETDATE()
在SQL Server 2008中打印,我需要毫秒的时间(这是为了调试目的 - 找到sp的执行时间)
我发现了这个差异
print GETDATE()
返回2011-03-15 18:43:44.100 2011-03-15 18:43:44.100
返回2011年3月15日下午6:44我认为SQL Server会自动对打印功能进行类型转换.
我需要打印这样的日期 SELECT GETDATE()
谢谢你的帮助.
我有一个SQL表突然无法返回数据,除非我在末尾包含"with(nolock)",这表示我的表上有某种锁.我已经用dm_tran_locks进行了一些实验,以确定表中实际上存在多个锁,但是如何识别锁定它们的是什么(即dm_tran_locks的请求元素)?
编辑:我知道SQL 2005之前的sp_lock,但现在不推荐使用sp,AFAIK正确的做法是使用dm_tran_locks.我正在使用SQL Server 2008 R2.
sql sql-server locking query-optimization sql-server-2008-r2
我跑了EXEC sp_who2 78
,我得到以下结果:
我怎样才能找到其状态暂停的原因?
INSERT
基于昂贵的查询,此过程非常繁重.一个大SELECT
从几个表中获取数据,并写一些3-4百万行不同的表.
没有锁/块.
将waittype
它与是CXPACKET
.我能理解,因为你可以在下面的图片中看到9个78.
关注我和我真正想知道的是为什么SPID
78 号中的第1号被暂停.
我知道当a的状态SPID
被暂停时,它意味着进程正在等待资源,并且当它获取其资源时它将恢复.
我怎样才能找到更多这方面的细节?什么资源?为什么不可用?
我使用了下面的代码以及其中的变化,但是我还能做些什么来找出SPID
暂停的原因?
select *
from sys.dm_exec_requests r
join sys.dm_os_tasks t on r.session_id = t.session_id
where r.session_id = 78
Run Code Online (Sandbox Code Playgroud)
我已经习惯了EXEC sp_who2 78
.我得到的这个特殊spid78的结果如下:(分为3个图片以适应屏幕)
我试图将varchar字段转换为数字,但是,该字段中有一组常见字符需要删除才能成功将其转换为数字.
该字段的名称是UKSellPrice1
我需要从UKSellPrice1中删除以下字符串,然后再将其转换为数字:
'.00'
'£'
'n/a'
'$'
'#N/A'
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
目前我有以下内容:
;WITH R0 AS (
SELECT StyleCode
,ColourCode
,UKSellPrice1= CASE WHEN CHARINDEX('.00',UKSellPrice1,1) > 0
THEN REPLACE (UKSellPrice1,'.00','')
ELSE UKSellPrice1 END
,UKSellPrice2
FROM dbo.RangePlan
)
SELECT *
FROM R0
Run Code Online (Sandbox Code Playgroud)