SQL Server的隐藏功能
SQL Server的一些隐藏功能是什么?
例如,没有记录的系统存储过程,诀窍做的事情是非常有用的,但没有足够的文档记录?
答案
感谢大家的所有伟大的答案!
存储过程
片段
功能
杂项
GO
重复批次后的编号 在Management Studio中,您可以在GO批次结束标记之后放置一个数字,以使该批次重复该次数:
PRINT 'X'
GO 10
将打印'X'10次。 这可以让您从重复的东西时繁琐的复制/粘贴。
许多SQL Server开发人员似乎还不了解DELETE,INSERT和UPDATE语句中的OUTPUT子句 (SQL Server 2005和更新版本)。
知道哪些行已被INSERT,UPDATE或DELETEd并且OUTPUT子句允许非常容易地执行此操作非常有用 - 它允许访问称为inserted
和deleted
(如触发器中)的“虚拟”表:
DELETE FROM (table)
OUTPUT deleted.ID, deleted.Description
WHERE (condition)
如果要使用OUTPUT子句将值插入到具有INT IDENTITY主键字段的表中,则可以立即获取插入的新ID:
INSERT INTO MyTable(Field1, Field2)
OUTPUT inserted.ID
VALUES (Value1, Value2)
如果您正在更新,那么知道更改的内容会非常有用 - 在这种情况下, inserted
表示新值(UPDATE后),而deleted
表示UPDATE之前的旧值:
UPDATE (table)
SET field1 = value1, field2 = value2
OUTPUT inserted.ID, deleted.field1, inserted.field1
WHERE (condition)
如果将返回大量信息,则OUTPUT的输出也可以重定向到临时表或表变量( OUTPUT INTO @myInfoTable
)。
非常有用 - 而且知之甚少!
渣子
sp_msforeachtable
:使用'?'运行命令 换成每个表名。 例如
exec sp_msforeachtable "dbcc dbreindex('?')"
每个表最多可以发出3个命令
exec sp_msforeachtable
@Command1 = 'print ''reindexing table ?''',
@Command2 = 'dbcc dbreindex(''?'')',
@Command3 = 'select count (*) [?] from ?'
另外,还有sp_MSforeachdb
上一篇: Hidden Features of SQL Server
下一篇: Recreate index on column store indexed table with 35 billion rows