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


当前回答

use db
go      
DECLARE @procName varchar(100)      
DECLARE @cursorProcNames CURSOR      
SET @cursorProcNames = CURSOR FOR      
select name from sys.procedures where modify_date > '2009-02-05 13:12:15.273' order by modify_date desc     

OPEN @cursorProcNames      
FETCH NEXT      
FROM @cursorProcNames INTO @procName      
WHILE @@FETCH_STATUS = 0      
BEGIN      
-- see the text of the last stored procedures modified on 
-- the db , hint Ctrl + T would give you the procedures test 
set nocount off;      
exec sp_HelpText @procName --- or print them      
-- print @procName      

FETCH NEXT      
FROM @cursorProcNames INTO @procName      
END      
CLOSE @cursorProcNames      

select @@error  

其他回答

仅限返回日期

Select Cast(Floor(Cast(Getdate() As Float))As Datetime)

or

Select DateAdd(Day, 0, DateDiff(Day, 0, Getdate()))

批分离器

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

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

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

在sys.database_principles中设置DEFAULT_SCHEMA

SQL Server在名称解析方面提供了极大的灵活性。然而,名称解析是有代价的,并且在不完全限定对象引用的临时工作负载中可能会显着昂贵。SQL Server 2005允许为每个数据库原则(也称为“user”)设置新的DEFEAULT_SCHEMA,这可以在不更改TSQL代码的情况下消除这种开销。

Link

获得垂直格式的列标题列表:

复制网格结果中的列名

工具-选项-查询结果- SQL Server -结果网格 勾选“在复制或保存结果时包含列标题”

此时,您需要建立一个新的连接,然后运行查询

现在,当您从网格复制结果时,您将获得列标题

也 然后将结果复制到excel

只复制col标头

粘贴特殊(不能与复制区域重叠)

蜱虫“转置”

OK

[你可能希望在这里添加一个","并自动填充]

您有一个垂直格式的列的即时列表

sp_executesql 

用于执行字符串中的语句。与Execute一样好,但可以返回参数