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
我想推荐一个免费的插件SSMS工具包,它有很多功能,如
代码片段
你不再需要自己输入SELECT * FROM。只需输入SSF并按enter(可以自定义为任何其他键)。我更喜欢Tab)。其他有用的代码片段很少
SSC +标签-选择计数(*)从
SST + tab -选择TOP 10 * FROM
S +选项卡-选择
I + tab -插入
U + tab - UPDATE
W + tab - WHERE
OB + tab - ORDER BY
这样的例子不胜枚举。您可以使用SSMS Tools Pack菜单检查和自定义整个列表
执行日志记录
您是否意识到您可以保存几天前编写的临时查询,这样您就不需要再次重新发明轮子了?SSMS Tools包保存您的所有执行历史,您可以根据日期或查询中的任何文本进行搜索。
搜索数据库数据
这个特性可以帮助您搜索字符串在整个数据库中的出现情况,并显示表名和列名以及出现的总数。您可以通过在对象资源管理器中右键单击数据库并选择搜索数据库数据来使用此功能。
SQL格式
将所有关键字设置为大写或小写字母。右键单击查询窗口并选择格式文本。您可以在SSMS工具菜单中设置快捷键。但它缺乏对齐功能。
CRUD SP生成
右键单击一个表,SSMS Tools - > Create CRUD生成插入、更新、删除和选择SP。SP的内容可以使用SSMS Tools菜单定制。
Misc
其他特性很少
以网格模式搜索结果。
从结果集,表和数据库生成插入脚本。
执行计划分析器。
在多个数据库中运行一个脚本。
要了解更多信息,您可以访问他们的功能页面
查找日期落在当前周内的记录。
where dateadd( week, datediff( week, 0, TransDate ), 0 ) =
dateadd( week, datediff( week, 0, getdate() ), 0 )
查找上周发生的日期记录。
where dateadd( week, datediff( week, 0, TransDate ), 0 ) =
dateadd( week, datediff( week, 0, getdate() ) - 1, 0 )
返回当前周的开始日期。
select dateadd( week, datediff( week, 0, getdate() ), 0 )
返回上周开始的日期。
select dateadd( week, datediff( week, 0, getdate() ) - 1, 0 )
好吧,这是我的观点:
http://dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/
我懒得在这里重新写一遍,所以请查看我的帖子。这对许多人来说可能是微不足道的,但会有一些人会发现它是一颗“隐藏的宝石”。
编辑:
过了一会儿,我决定在这里添加代码,这样您就不必跳转到我的博客来查看代码了。
SELECT T.NAME AS [TABLE NAME], C.NAME AS [COLUMN NAME], P.NAME AS [DATA TYPE], P.MAX_LENGTH AS[SIZE], CAST(P.PRECISION AS VARCHAR) +‘/’+ CAST(P.SCALE AS VARCHAR) AS [PRECISION/SCALE]
FROM ADVENTUREWORKS.SYS.OBJECTS AS T
JOIN ADVENTUREWORKS.SYS.COLUMNS AS C
ON T.OBJECT_ID=C.OBJECT_ID
JOIN ADVENTUREWORKS.SYS.TYPES AS P
ON C.SYSTEM_TYPE_ID=P.SYSTEM_TYPE_ID
WHERE T.TYPE_DESC=‘USER_TABLE’;
或者,如果你想拉出所有的用户表,像这样使用CURSOR:
DECLARE @tablename VARCHAR(60)
DECLARE cursor_tablenames CURSOR FOR
SELECT name FROM AdventureWorks.sys.tables
OPEN cursor_tablenames
FETCH NEXT FROM cursor_tablenames INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT t.name AS [TABLE Name], c.name AS [COLUMN Name], p.name AS [DATA Type], p.max_length AS[SIZE], CAST(p.PRECISION AS VARCHAR) +‘/’+ CAST(p.scale AS VARCHAR) AS [PRECISION/Scale]
FROM AdventureWorks.sys.objects AS t
JOIN AdventureWorks.sys.columns AS c
ON t.OBJECT_ID=c.OBJECT_ID
JOIN AdventureWorks.sys.types AS p
ON c.system_type_id=p.system_type_id
WHERE t.name = @tablename
AND t.type_desc=‘USER_TABLE’
ORDER BY t.name ASC
FETCH NEXT FROM cursor_tablenames INTO @tablename
END
CLOSE cursor_tablenames
DEALLOCATE cursor_tablenames
其他参考资料(我的博客):http://dbalink.wordpress.com/2009/01/21/how-to-create-cursor-in-tsql/