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


当前回答

我最喜欢master..xp_cmdshell。它允许您从服务器上的命令提示符运行命令并查看输出。如果你不能登录到服务器,但你需要获取信息或以某种方式控制它,它是非常有用的。

例如,列出运行SQL server的服务器C:驱动器上的文件夹。

主. .Xp_cmdshell ` dir c:\ `

您还可以启动和停止服务。

主. .xp_cmdshell的sc查询“My . 服务”的 主. .xp_cmdshell 'sc stop“My . 服务”的 主. .xp_cmdshell 'sc start“My . 服务”的

它很强大,但也有安全隐患。许多人禁用它,因为它很容易被用来在服务器上做坏事。但是,如果你能接触到它,它会非常有用。

其他回答

仅限返回日期

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

or

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

Stored proc sp_MSdependencies以一种比sp_depends更有用的方式告诉您对象依赖关系。对于某些产品版本,可以方便地暂时禁用子表约束,应用更改然后重新启用子表约束。这是查找依赖于父表的对象的好方法。

这段代码禁用了子表约束:

create table #deps
( oType int,
  oObjName sysname,
  oOwner nvarchar(200),
  oSequence int
)

insert into #deps  
exec sp_MSdependencies @tableName, null, 1315327

exec sp_MSforeachtable @command1 = 'ALTER TABLE ? NOCHECK CONSTRAINT ALL',
@whereand = ' and o.name in (select oObjName from #deps where oType = 8)'

应用更改后,可以运行以下代码重新启用约束:

exec sp_MSforeachtable @command1 = 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL',
@whereand = ' and o.name in (select oObjName from #deps where oType = 8)'

第三个参数是@flags,它控制列出的依赖项类型。请阅读proc内容,了解如何根据自己的目的更改@flags。该过程使用位掩码来破译您想要返回的内容。

下面是一些我喜欢的SQL Management Studio隐藏特性。

我喜欢的一点是,如果你在高亮显示信息时按住ALT键,你可以选择柱状信息,而不仅仅是整行。

在SQL Management Studio中,你有预定义的快捷键:

Ctrl+1运行sp_who Ctrl+2运行sp_lock Alt+F1运行sp_help Ctrl+F1运行sp_helptext

因此,如果您在编辑器中突出显示表名并按Alt+F1,它将显示表的结构。

连接字符串额外功能:

MultipleActiveResultSets = true;

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

应用程序名称= MyProgramName

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

我不确定这是否是一个隐藏的功能,但我偶然发现了这个功能,并发现它在很多情况下都很有用。您可以在单个选择语句中连接一组字段,而不是使用游标并遍历选择语句。

例子:

DECLARE @nvcConcatonated nvarchar(max)
SET @nvcConcatonated = ''

SELECT @nvcConcatonated = @nvcConcatonated + C.CompanyName + ', '
FROM tblCompany C
WHERE C.CompanyID IN (1,2,3)

SELECT @nvcConcatonated

结果:

Acme, Microsoft, Apple,