有没有一种方法可以识别执行查询时实际消耗大量资源的顶级数据库用户?
我可以将文字表名称传递到内置函数中CHANGETABLE。我想知道这是如何完成的以及是否可以在我自己的存储过程/内联函数中完成。
在此之上。如果可以先将其传递给文字常量,然后将其传递给函数,这样我就可以获得表 ID,而不必在两个地方指定表名称。
提前致谢。
我在SSAS中创建了一个多维数据集,如何从数据源提取实时数据到我的多维数据集?
我的意思是,如果发生任何数据修改(插入、更新、删除),SSAS 应该更新多维数据集。
尝试获取正在执行的作业的会话 ID
;with JobDetails as
(
select Job_Id = left(intr1,charindex(':',intr1)-1),
Step = substring(intr1,charindex(':',intr1)+1,charindex(')',intr1)-charindex(':',intr1)-1),
SessionId = spid
from master.dbo.sysprocesses x
cross apply (select replace(x.program_name,'SQLAgent - TSQL JobStep (Job ','')) cs (intr1)
where spid > 50 and x.program_name like 'SQLAgent - TSQL JobStep (Job %'
)
select *
from msdb.dbo.sysjobs j
inner join JobDetails jd on j.job_id = jd.Job_Id
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误
消息 8169,级别 16,状态 2,第 47 行 从字符串转换为 uniqueidentifier 时转换失败。
我尝试将其转换job_id为varbinary但没有产生任何结果
;with JobDetails as
(
select Job_Id = left(intr1,charindex(':',intr1)-1), …Run Code Online (Sandbox Code Playgroud) 在Linux上,SQL Server在哪里存储“SQL Server密码策略”和SA用户的密码?我明白了,“密码”不安全。
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它太短。密码必须至少为 8 个字符..
进而,
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它不够复杂。密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、基数 10 的数字和符号。
我猜该策略实际上已编译到数据库中?密码会存储在一个不起眼的位置吗?
我想以这样的方式返回数据,即如果代码具有连续的活动日期和结束日期,则数据应给出最小活动日期和最大结束日期,但如果代码已停止,则应显示两个日期
例如桌子
+----+------+---------------+------------+
|Code| Decri| Active Date |End Date |
+----+------+---------------+------------+
|1000| ABC | 1/1/2011 | 30/6/2011 |
|1000| ABC | 1/7/2011 | 30/6/2012 |
|1000| ABC | 1/7/2012 | 30/6/2013 |
|1001| ABC | 1/7/2013 | 30/6/2014 |
|1001| ABC |12/20/2015 |12/20/2017 |
|1003| ABC | 1/1/2011 |30/6/2011 |
|1003| ABC | 1/7/2012 |30/6/2013 |
|1003| ABC | 1/7/2014 |30/6/2015 |
|1003| ABC | 1/7/2015 |12/20/2017 |
+----+------+---------------+------------+
Run Code Online (Sandbox Code Playgroud)
欲望输出
+----+------+---------------+------------+
|Code| Decri| Active Date |End Date |
+----+------+---------------+------------+
|1000| …Run Code Online (Sandbox Code Playgroud) 我需要在事务日志文件中查找一些特定事务,因此我使用 fn_dblog 函数。但该函数只返回几行。同时,我的数据库的 LDF 文件至少有几 GB。
我知道 fn_dblog 函数仅搜索日志的活动部分:
但是,这是什么意思?
事务日志的一部分何时变得不活动?
以及如何搜索不活动的部分?
有没有办法按顺序链接两个表?
表 A(实际):
EX STATUS DLV Actual FEE Expected Fee
N ACT MAIL 1.25
N ACT EMAIL 1.25
N ACT PICKUP 0
N NON MAIL 0
N NON EMAIL 1.25
N NON PICKUP 0
Y 0
Run Code Online (Sandbox Code Playgroud)
表 B(预期):
EX STATUS DLV Expected FEE
N ACT MAIL 1.25
N ACT EMAIL 0
N ACT PICKUP 0
N NON MAIL 1.25
N NON EMAIL 0
N NON PICKUP 0
Y 0
Run Code Online (Sandbox Code Playgroud)
表 A(预期结果):
EX STATUS DLV Actual FEE Expected Fee
N ACT …Run Code Online (Sandbox Code Playgroud) 我试图将电子邮件列表旋转到一行上,但由于某种原因,我的主要电子邮件地址得到了自己的一行,所以我最终每个联系人有两行。
CREATE TABLE #tmp (
ID VARCHAR(20)
, EMAIL VARCHAR(50)
, isPrimary VARCHAR(1)
)
INSERT INTO #tmp (ID, EMAIL, isPrimary) VALUES ('B4100358183Q!ZH.ETES', 'ABoyd@Energize.com', '1')
INSERT INTO #tmp (ID, EMAIL, isPrimary) VALUES ('B4100358183Q!ZH.ETES', 'BSykes@Energize.com', '0')
INSERT INTO #tmp (ID, EMAIL, isPrimary) VALUES ('B4100358183Q!ZH.ETES', 'TC6@test.com', '0')
Run Code Online (Sandbox Code Playgroud)
我如何修改下面的脚本以仅返回包含所有 3 个电子邮件地址的一行而不是两行?
SELECT ID, [1], [2], [3]
FROM (
Select ID, EMAIL, isPrimary
, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY isPrimary desc) AS rn
from #tmp
) eml
PIVOT (
min(EMAIL)
FOR rn IN …Run Code Online (Sandbox Code Playgroud) 我正在使用 Tsql 脚本来恢复多个数据库。
RESTORE DATABASE XXX_M
FROM DISK = 'C:\XXX.bak'
WITH FILE = 1, replace
GO
Run Code Online (Sandbox Code Playgroud)
有时 .bak 文件已损坏(不是数据损坏)。
我想知道是否有一种方法可以检查文件是否未损坏,然后进行恢复,否则不会。我尝试在恢复验证后使用@@rowcount,但效果不好。
RESTORE VERIFYONLY
FROM DISK = 'C:\xxx.bak'
if @@ROWCOUNT !=0
print 'false'
else
print 'good'
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
谢谢。
sql-server-2008 sql-server t-sql sql-server-2008-r2 sql-server-2014