SQL Server的隐藏功能

SQL Server的一些隐藏功能是什么?

例如,没有记录的系统存储过程,诀窍做的事情是非常有用的,但没有足够的文档记录?


答案

感谢大家的所有伟大的答案!

存储过程

  • sp_msforeachtable:使用'?'运行命令 替换为每个表名(v6.5及更高版本)
  • sp_msforeachdb:使用'?'运行命令 替换为每个数据库名称(v7及更高版本)
  • sp_who2:就像sp_who一样,但是有更多的信息来解决问题(v7及更高版本)
  • sp_helptext:如果您需要存储过程的代码,请查看&UDF
  • sp_tables:返回范围内数据库的所有表和视图的列表。
  • sp_stored_procedures:返回所有存储过程的列表
  • xp_sscanf:将字符串中的数据读入由每个格式参数指定的参数位置。
  • xp_fixeddrives ::查找具有最大可用空间的固定驱动器
  • sp_help:如果你想知道表的结构,索引和约束。 也是视图和UDF。 快捷键是Alt + F1
  • 片段

  • 以随机顺序返回行
  • 所有数据库用户对象的最后修改日期
  • 仅返回日期
  • 查找哪些日期落在当前周内某处的记录。
  • 查找记录上周发生的日期。
  • 返回当前星期开始的日期。
  • 返回上周开始的日期。
  • 查看已部署到服务器的过程的文本
  • 删除到数据库的所有连接
  • 表格校验和
  • 行校验和
  • 删除数据库中的所有过程
  • 恢复后正确重新映射登录ID
  • 从INSERT语句调用存储过程
  • 通过关键字查找过程
  • 删除数据库中的所有过程
  • 以编程方式查询数据库的事务日志。
  • 功能

  • HASHBYTES()
  • EncryptByKey的
  • PIVOT命令
  • 杂项

  • 连接字符串额外
  • TableDiff.exe
  • 登录事件触发器(Service Pack 2中的新增功能)
  • 用持久计算列(pcc)提高性能。
  • sys.database_principles中的DEFAULT_SCHEMA设置
  • 强制参数化
  • Vardecimal存储格式
  • 在几秒钟内找出最受欢迎的查询
  • 可扩展的共享数据库
  • SQL Management Studio中的表/存储过程过滤器功能
  • 跟踪标志
  • GO重复批次后的编号
  • 使用模式的安全性
  • 使用内置的加密函数,视图和带触发器的基表进行加密

  • 在Management Studio中,您可以在GO批次结束标记之后放置一个数字,以使该批次重复该次数:

    PRINT 'X'
    GO 10
    

    将打印'X'10次。 这可以让您从重复的东西时繁琐的复制/粘贴。


    许多SQL Server开发人员似乎还不了解DELETE,INSERT和UPDATE语句中的OUTPUT子句 (SQL Server 2005和更新版本)。

    知道哪些行已被INSERT,UPDATE或DELETEd并且OUTPUT子句允许非常容易地执行此操作非常有用 - 它允许访问称为inserteddeleted (如触发器中)的“虚拟”表:

    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

    链接地址: http://www.djcxy.com/p/95687.html

    上一篇: Hidden Features of SQL Server

    下一篇: Recreate index on column store indexed table with 35 billion rows