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


当前回答

不是无证

行号由Itzik Ben-Gan 提供 http://www.sqlmag.com/article/articleid/97675/sql_server_blog_97675.html

设置xact_abort为on 在事务发生错误时回滚所有内容

所有的sp_都很有帮助,只是在网上浏览书籍

我在管理工作室一直使用的快捷键 F6 -结果和查询之间切换 Alt+X或F5-在查询中运行选中的文本,如果没有选中则运行整个窗口 Alt+T和Alt+D -结果在文本或网格分别

其他回答

Use

从information_schema中选择*

列出所有的数据库,基本表,sps,视图等在SQL server。

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

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

好吧,这是我剩下的一些,很遗憾我错过了开始,但继续吧,这里有一些顶级的东西!

查询分析器

Alt+F1对所选文本执行sp_help Alt-D -聚焦到数据库下拉菜单,这样你就可以使用字母光标键选择db。

t - sql

if (object_id("nameofobject") IS NOT NULL) begin <do something> end -最简单的存在性检查 Sp_locks——比sp_who2(这是第一个调用端口)更深入的锁定信息 DBCC inputbuffer(spid) -执行进程的顶部行列表(有点有用,但简单) DBCC outputbuffer(spid) -执行进程输出的顶行列表

通用T-sql技巧

对于大容量的数据,可以自由地使用子查询来处理集合中的数据

例如,获得已婚人士的名单 50岁以上的人可以选择 一群结婚的人 子查询并与一组 同样是50岁以上的人 加入结果-请原谅 的例子

许多SQL Server开发人员似乎仍然不知道DELETE、INSERT和UPDATE语句中的OUTPUT子句(SQL Server 2005及更新版本)。

知道哪些行被插入、更新或删除是非常有用的,OUTPUT子句可以很容易地做到这一点——它允许访问称为插入和删除的“虚拟”表(就像在触发器中一样):

DELETE FROM (table)
OUTPUT deleted.ID, deleted.Description
WHERE (condition)

如果你在一个有INT IDENTITY主键字段的表中插入值,使用OUTPUT子句,你可以立即获得插入的新ID:

INSERT INTO MyTable(Field1, Field2)
OUTPUT inserted.ID
VALUES (Value1, Value2)

如果你正在更新,知道发生了什么变化是非常有用的——在这种情况下,插入表示更新之后的新值,而删除则指更新之前的旧值:

UPDATE (table)
SET field1 = value1, field2 = value2
OUTPUT inserted.ID, deleted.field1, inserted.field1
WHERE (condition)

如果将返回大量信息,output的输出也可以重定向到临时表或表变量(output INTO @myInfoTable)。

非常有用——却鲜为人知!

Marc

执行一个存储过程,并在(temp)表中捕获结果,以便进一步处理,例如:

INSERT INTO someTable EXEC sp_someproc

示例:显示sp_help输出,但按数据库大小排序:

CREATE TABLE #dbs
(
    name nvarchar(50),
    db_size nvarchar(50),
    owner nvarchar(50),
    dbid int,
    created datetime,
    status nvarchar(255),
    compatiblity_level int
)
INSERT INTO #dbs EXEC sp_helpdb

SELECT * FROM #dbs 
ORDER BY CONVERT(decimal, LTRIM(LEFT(db_size, LEN(db_size)-3))) DESC

DROP TABLE #dbs