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


当前回答

表/存储过程过滤器是一个半隐藏的特性,非常有用…

在“SQL Server Management Studio对象资源管理器”中,右键单击“表或存储过程”文件夹,选择“筛选器”菜单,然后选择“筛选器设置”,并在“名称包含”行中输入部分名称。

同样地,使用Remove Filter再次查看所有表/存储过程。

其他回答

在SQL Server 2005中,您不再需要运行sp-blocker-pss80存储过程。相反,你可以这样做:

exec sp_configure 'show advanced options', 1;
reconfigure;
go
exec sp_configure 'blocked process threshold', 30;
reconfigure; 

然后,您可以启动SQL跟踪,并在“错误和警告”组中选择“阻塞”流程报告事件类。详情请点击这里。

连接字符串额外功能:

MultipleActiveResultSets = true;

这就产生了ADO。Net 2.0及以上版本在单个数据库连接上读取多个只向前、只读的结果集,如果要进行大量读取,这可以提高性能。即使是混合执行查询类型,也可以打开它。

应用程序名称= MyProgramName

现在,当您希望通过查询sysprocesses表来查看活动连接列表时,程序的名称将出现在program_name列中,而不是“”。Net SqlClient数据提供程序

以下是我最喜欢的一些东西:

在sp2 -工具/选项/脚本下增加了脚本选项

使用模式的新安全性—创建两个模式:user_access、admin_access。把你的用户过程放在一个,你的管理过程放在另一个,像这样:user_access。showList, admin_access.deleteUser。将模式上的EXECUTE授权给你的应用用户/角色。不再一直授予EXECUTE。

使用内置加密函数、视图(为了表示而解密)和带触发器的基表(在插入/更新时加密)进行加密。

如果你想知道表的结构,索引和约束:

sp_help 'TableName'

好吧,这是我的观点:

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/