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


当前回答

我发现sp_depends很有用。它显示依赖于给定对象的对象,例如。

exec sp_depends 'fn_myFunction' 

返回依赖于此函数的对象(注意,如果对象最初没有按照正确的顺序运行到数据库中,将会给出错误的结果。)

其他回答

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

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

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

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

可伸缩的共享数据库

通过可伸缩共享数据库,可以在普通机器上挂载相同的物理驱动器,并允许多个SQL Server 2005实例使用同一组数据文件。这种设置不需要为每个SQL Server实例复制存储,并且允许多个SQL Server实例具有额外的处理能力,这些实例具有自己的本地资源,如cpu、内存、tempdb和其他潜在的本地数据库。

Link

@Gatekiller -一个更简单的方法来获得日期肯定是

CAST(CONVERT(varchar,getdate(),103) as datetime)

如果在本地不使用DD/MM/YYYY,则需要使用与103不同的值。SQL Books Online中的查找转换函数用于区域代码。

存储过程的一个技巧是可以从INSERT语句调用它们。当我在SQL Server数据库上工作时,我发现这非常有用。

CREATE TABLE #toto (v1 int, v2 int, v3 char(4), status char(6))
INSERT #toto (v1, v2, v3, status) EXEC dbo.sp_fulubulu(sp_param1)
SELECT * FROM #toto
DROP TABLE #toto

查找日期落在当前周内的记录。

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 )