SQL Server有哪些隐藏特性?

例如,没有文档的系统存储过程,做一些非常有用但没有足够文档的事情的技巧?


答案

感谢大家的精彩回答!

存储过程

sp_msforeachtable: Runs a command with '?' replaced with each table name (v6.5 and up) sp_msforeachdb: Runs a command with '?' replaced with each database name (v7 and up) sp_who2: just like sp_who, but with a lot more info for troubleshooting blocks (v7 and up) sp_helptext: If you want the code of a stored procedure, view & UDF sp_tables: return a list of all tables and views of database in scope. sp_stored_procedures: return a list of all stored procedures xp_sscanf: Reads data from the string into the argument locations specified by each format argument. xp_fixeddrives:: Find the fixed drive with largest free space sp_help: If you want to know the table structure, indexes and constraints of a table. Also views and UDFs. Shortcut is Alt+F1

片段

Returning rows in random order All database User Objects by Last Modified Date Return Date Only Find records which date falls somewhere inside the current week. Find records which date occurred last week. Returns the date for the beginning of the current week. Returns the date for the beginning of last week. See the text of a procedure that has been deployed to a server Drop all connections to the database Table Checksum Row Checksum Drop all the procedures in a database Re-map the login Ids correctly after restore Call Stored Procedures from an INSERT statement Find Procedures By Keyword Drop all the procedures in a database Query the transaction log for a database programmatically.

功能

哈希字节() EncryptByKey 枢轴命令

Misc

Connection String extras TableDiff.exe Triggers for Logon Events (New in Service Pack 2) Boosting performance with persisted-computed-columns (pcc). DEFAULT_SCHEMA setting in sys.database_principles Forced Parameterization Vardecimal Storage Format Figuring out the most popular queries in seconds Scalable Shared Databases Table/Stored Procedure Filter feature in SQL Management Studio Trace flags Number after a GO repeats the batch Security using schemas Encryption using built in encryption functions, views and base tables with triggers


当前回答

EXCEPT和INTERSECT

在比较两个查询结果时,这两个关键字是一种更优雅的简写和可读的表达查询意图的方式,而不是编写复杂的连接和子查询。作为SQL Server 2005的新版本,它们有力地补充了在TSQL语言中已经存在多年的UNION。

EXCEPT、INTERSECT和UNION是集合论中的基本概念,集合论是所有现代RDBMS使用的关系建模的基础和基础。现在,使用TSQL可以更直观、更容易地生成维恩图类型的结果。

其他回答

在Management Studio中,你可以在GO批处理结束标记后面放一个数字,以使批处理重复该次数:

PRINT 'X'
GO 10

将打印'X' 10次。这可以让你在做重复的事情时避免繁琐的复制/粘贴。

批分离器

大多数人都不知道“GO”不是SQL命令。它是客户端工具使用的默认批处理分隔符。你可以在Books Online找到更多信息。

您可以通过在Management Studio中选择“Tools -> Options”,并在“查询执行”部分更改批量分隔符选项来更改批量分隔符选项。

我不知道为什么你想这样做,除了作为一个恶作剧,但这是一个有点有趣的琐事。

我发现这个小脚本非常方便地查看已经部署到服务器上的过程的文本:

DECLARE @procedureName NVARCHAR( MAX ), @procedureText NVARCHAR( MAX )

SET @procedureName = 'myproc_Proc1'

SET @procedureText =    (
                            SELECT  OBJECT_DEFINITION( object_id )
                            FROM    sys.procedures 
                            WHERE   Name = @procedureName
                        )

PRINT @procedureText

dm_db_index_usage_stats

这允许您知道表中的数据最近是否更新过,即使表上没有DateUpdated列。

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'MyDatabase')
AND OBJECT_ID=OBJECT_ID('MyTable')

代码来自:http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/

参考资料: SQL Server -表的最后插入行的日期/时间是什么?

在SQL 2005及更高版本中可用

空间结果选项卡可以用来创建艺术。

在这里输入链接描述http://michaeljswart.com/wp-content/uploads/2010/02/venus.png