以下是我在网上找到的一个脚本,其中包含我想要的结果集中的大部分元素。唯一缺少的是我如何获得确定时间段内运行时间的平均值,例如一周、10 天、23 天、一个月等。
我已经进行了一些搜索,但是我尝试的方法以某种方式失败了。此外,我的 TSQL 很弱,但我正在阅读 Itzik Ben-gan 的出版物来改变这个问题。我真的很感激任何人都可以提供的任何帮助。
select job_name, run_datetime, run_duration
from
(
select job_name, run_datetime,
SUBSTRING(run_duration, 1, 2) + ':' + SUBSTRING(run_duration, 3, 2) + ':' +
SUBSTRING(run_duration, 5, 2) AS run_duration
from
(
select DISTINCT
j.name as job_name,
run_datetime = CONVERT(DATETIME, RTRIM(run_date)) +
(run_time * 9 + run_time % 10000 * 6 + run_time % 100 * 10) / 216e4,
run_duration = RIGHT('000000' + CONVERT(varchar(6), run_duration), 6)
from msdb..sysjobhistory h
inner join msdb..sysjobs j
on h.job_id …Run Code Online (Sandbox Code Playgroud) 我一直在想办法将 40GB 的表从一个 SQL Server 机器移动到另一个 SQL Server 机器。他们位于不同的公司,没有内部网链接,显然没有链接服务器。
最初,我认为最快的方法是提取夜间备份文件并将其传输到另一台服务器。从备份创建一个数据库,然后将我的表从该数据库传输到现有数据库。
考虑到这一点后,由于安全原因,我无法在另一家公司拥有该特定数据库中的所有数据。而我所追求的表格是计算性的,与任何类型的公司特定竞争优势无关。
无论哪种方式,我正在寻找的是如何快速有效地导出该大小的表并将其放入与现有数据库没有任何连接的数据库中。
这是我第一次研究这方面的东西,我很确定我不想编写表格。最初,我认为 bak 文件是我最好的选择,但不能完成整个数据库。
我有一张像:
ID A0 A1 A2 A3 A4
14 A B A C A
15 A A A A A
Run Code Online (Sandbox Code Playgroud)
我需要比较所有 5 列并检查它们是否具有相同的值并检索唯一具有所有相同值的列......在这种情况下 ID 为 15 的列。有没有办法在 T-SQL 中实现这一点?
我们的数据库是 SQL Server 2008 R2。我们有一些表有一些 varchar(500) 列,我想切换到 datetime2 或 bigint。我可以保证要切换的列中的所有数据对于正确的类型都是有效的。列更改确实会影响索引,但不会影响键。
在与同事讨论时,我们得出了两种解决问题的方法。这两个都将通过 T-Sql 脚本完成。
ALTER TABLE x ALTER COLUMN Y datetime2,然后重建或重新创建索引。因为我相信数据会干净利落地转换,所以我倾向于#2。我的同事和 DBA 朋友更喜欢 #1,但我的同事不记得他们为什么这样训练他。DBA 朋友正在休假,所以我没有问他为什么。
有人可以提供有关他们认为更好的选择以及为什么的见解吗?最终这是我的决定,我想知道为什么 #1 比 #2 更受欢迎?
抱歉,如果之前有人问过这个问题,建议的“相关”问题不相关,而且我自己的搜索结果很少。
我需要列出所有存储过程的定义(代码),以便我可以开始处理所有 450 个并添加分号以实现 v2014 标准。
我在这里找到了以下代码并稍微修改了它:
SELECT
obj.Name AS SPName,
REPLACE(modu.definition, 'CREATE PROC', 'ALTER PROC') + 'GO' AS SPDefinition
FROM
sys.sql_modules modu INNER JOIN
sys.objects obj ON modu.object_id = obj.object_id
WHERE
(obj.type = 'P')
ORDER BY
obj.name;
Run Code Online (Sandbox Code Playgroud)
上面的代码是使用 SA 帐户运行的。
我认为这正是我需要的,但是,我刚刚注意到 MSDN 上有人声称它没有按预期显示全文。
将结果粘贴到 SSMS 编辑器中时,我有 46,000 行代码需要处理,因此如果缺少任何内容,对我来说并不明显。我想确保在编辑器中浪费一天之前我已经正确地开始了这个过程。
因此,我正在联系您的专业人士,询问这是否是这种方法的真正缺点,或者是否有替代方法而不是一个一个?
我正在尝试编写一个查询,当连接表 B 中的列包含表 A 中单个匹配行的多个不同值时,该查询从表 A 中返回一行。(A -> B 是 1 -> 多关系。)我构建了在上下文中演示这一点的 SQL 小提琴:http : //sqlfiddle.com/#!6/83952/1
在这个小提琴中,表格的design列perf_ticket_type对于每个ticket_type具有相同的 都应该是相同的perf_id,但我试图只选择它没有的实例。因此,对于perf_id3,design我当前使用的查询返回了不止一个唯一值。
我想我的结果是两列performance的表只对perf_id3的基础上的多重价值design为perf_id所加入的表。
过去我一直对 GROUP BY 的理解感到沮丧,所以我不确定我是否可以在这里做一些不同的事情来获得我想要的结果。此刻,我想我可以选择什么我都在拨弄到一个临时表,然后做另一个选择上是有GROUP BY perf_id HAVING COUNT(*) > 1得到我想要的东西(按其中列包含在一个以上的记录相同的数据选择行)但这似乎是一个额外的步骤。
SET STATISTICS XML ON;
DECLARE @x XML = (SELECT 'hi' "@id" FOR XML PATH ('this'), root ('xml'));
Run Code Online (Sandbox Code Playgroud)
表达式中的类型转换 (CONVERT_IMPLICIT(xml,[Expr1001],0)) 可能会影响查询计划选择中的“CardinalityEstimate”
为什么会发生转换?我认为这FOR XML导致结果XML已经是类型。如果这个警告可以/应该被忽略,我如何阻止警告出现在执行计划中(这样当我调试带有类似警告的更大查询时,它不会分散我对实际问题的注意力)?
我有一些流程需要在开始之前采取不同的步骤。例如:
禁用对外键的检查约束:
select 'alter table '+fk.table_schema+'.'+fk.table_name
+' NOCHECK CONSTRAINT '+fk.CONSTRAINT_NAME
from SAProduct.information_schema.table_constraints fk
join SAProduct.information_schema.tables t
on t.table_schema = fk.table_schema
and t.table_name = fk.table_name
WHERE constraint_type='FOREIGN KEY'
Run Code Online (Sandbox Code Playgroud)
这将产生一个很大的语句列表,我只复制 3 个:
use saproduct
go
alter table dbo.tblProdClassificationCode NOCHECK CONSTRAINT FK_tblProdClassificationCode_tblProdClassification
alter table dbo.tblProdClassificationCodeDescr NOCHECK CONSTRAINT fk_ProdClassificationCodeDescr_ProdClassificationCode
alter table dbo.tblProdClassificationCodeGenerate NOCHECK CONSTRAINT fk_ProdClassificationCodeGenerate_ProdClassification
Run Code Online (Sandbox Code Playgroud)
如果我要一次性运行它,我将如何找到我的位置?我正在处理哪张桌子,下一张是哪一张?
删除也是一样的:
select 'DELETE FROM '+table_schema+'.'+table_name
from saproduct.information_schema.tables
where table_name like 'tbl%'
Run Code Online (Sandbox Code Playgroud)
上面的脚本将生成以下语句集:
use saproduct
go
DELETE FROM dbo.tblBLanguage
DELETE FROM dbo.tblBLgCategoryXRef
DELETE FROM dbo.tblBLgSegmentXRef
DELETE FROM dbo.tblProdClassification
DELETE …Run Code Online (Sandbox Code Playgroud) 我想对电子邮件列进行限制,如下所示:xxxx@xxxx.yyy 显然“x”具有各种长度,x 是一些字符串数据,而 .yyy 是 .com、.gov 等的域类型
我问了一个关于XML使用XSD schemainside验证的问题SQL Server 2012(见链接)。我明白(正如我怀疑的那样)我需要使用CLR Function. 该函数将获取XSD schema text并XML text进行验证。
我将有 1 个配置数据库和许多安装数据库。从那个角度来看,我想知道在哪里创建该功能 - 在配置数据库中还是在每个安装数据库中?
从支持的角度来看,最好只有一个 CLR 功能。
t-sql ×10
sql-server ×8
xml ×2
aggregate ×1
alter-table ×1
drop-table ×1
functions ×1
group-by ×1
jobs ×1
monitoring ×1
sql-clr ×1
ssms ×1