其他几个未公开的存储过程

sp_readerrorlog / xp_readerrorlog  
 
存储过程sp_readerrorlog实际上有两种形式。每一项的工作内容一样;一个是另一个的简单封装。封装的存储过程是sp_readerrorlog,它调用 xp_readerrorlog。这两个都有四个输入参数,但是只有前两个对我们有用。第一个参数设定你希望看到的文件编号。第二个是要查看的日志(对于 ERRORLOG是1或空,对SQL Agent Log是2)。这允许你快速并很容易地查看你的错误日志,而不是得查看SQL Server 2005和SQL 2008所带来的臃肿的日志阅览器。  
 
查看当前的SQL ERRORLOG文件。  
 
exec sp_readerrorlog  
 
exec sp_readerrorlog 01  
 
查看之前的SQL Agent Log文件。  
 
exec sp_readerrorlog 12  
 
xp_create_subdir  
 
创建文件夹 
 
exec xp_create_subdir 'C:\MSSQLData\ccv' 
 
xp_delete_file  
 
使用SQL Server 2005中引入的xp_delete_file存储过程从SQL Server的硬盘或从T-SQL内部的网络共享上删除文件。  
 
xp_dirtree  
 
xp_dirtree存储过程允许你查看文件夹树状结构和/或一个文件夹下的文件列表。这个存储过程有几个参数用来控制这个存储过程查询深度和是返回文件和文件夹还是只返回文件夹。第一个参数设定要查看的文件夹。(建议;不要在Windows的系统盘根目录上执行这个存储过程,因为产生树和返回数据需要一些时间。)第二个参数限制了这个存储过程将会进行的递归级数。默认是零或所有级别。第三个参数告诉存储过程包括文件。默认是零或只对文件夹,数值1代表包括结果集的文件。定义第三个参数为不为零的数值将会增加一行到输出的调用文件,这个文件是显示进入一个文件夹或文件的一个小文件。   
 
获得完整目录树。  
 
exec xp_dirtree 'C:\WINDOWS'  
 
获得目录树的前两级。  
 
exec xp_dirtree 'c:\WINDOWS', 2  
 
获得目录数的前三级,包括文件。  
 
exec xp_dirtree 'c:\WINDOWS', 31  
 
exec xp_dirtree 'c:\WINDOWS'  
 
xp_fileexist  
 
这个SQL Server存储过程,xp_fileexist,是用来决定一个文件是存在于的硬盘上还是在网络共享上。 
它对于从规则文档中下载数据的存储过程是非常有用的。它允许你在打算盲目的下载数据之前查看文件是否存在。这个存储过程有两个参数。用第一个参数来确定你想要的文件或文件夹是否存在。第二个参数是一个输出参数,如果它被定义了,会根据文件存在或不存在而返回1或0。  
 
没有这个参数:  
 
exec xp_fileexist 'C:\123.XML'  
 
有这个参数:  
 
DECLARE @file_exists int  
 
exec xp_fileexist 'C:\123.XML', @file_exists OUTPUT  
 
SELECT @file_exists  
 
xp_fixeddrives  
 
xp_fixeddrives存储过程是最有用的存储过程之一。它展示了一个列表所有驱动器名和每个驱动器上的空闲空间大小。 
这个参数有一个单独的可选输入参数,它可以按驱动器类型过滤结果。 
设置为数值3将会返回所有的大量存储设备(CD -ROM,DVD等等);设置为数值4将会返回硬盘驱动器; 
而当设置为数值2时将会返回可移动的设备(USB插拔驱动器,闪存驱动器等等)。  
 
返回所有的驱动器。  
 
exec xp_fixeddrives  
 
只返回硬盘驱动器  
 
exec xp_fixeddrives 2  
 
xp_getfiledetails  
 
xp_getfiledetails是另一个非常有用的存储过程,在SQL Server 2000版本中最SERVER 
这个存储过程返回关于指定文件的大小、日期和属性信息,包括创建、访问和修改的日期和次数。  
 
exec xp_getfiledetails 'C:\123.XML'   
 
xp_getnetname  
 
xp_getnetname存储过程返回Microsoft SQL Server安装所在的物理机器的名称。你可以使机器名称作为数据集返回或作为变量返回。  
 
没有这个参数   
 
exec xp_getnetname  
 
使用这个参数  
 
DECLARE @machinename sysname  
 
exec xp_getnetname @machinename OUTPUT  
 
select @machinename  
 
xp_loginconfig  
 
SQL Server存储过程将会告诉你关于执行它的用户的一些基础的校验信息。它告诉你校验方法(Windows或SQL登录)、服务器的默认域、审计级别,还有一些内部分隔符信息。  
 
exec xp_loginconfig  
 
xp_makecab  
 
在SQL Server 2000中,微软给了我们直接从T-SQL压缩系统文件的能力,不必再到DOS下通过xp_cmdshell和运行第三方软件,像pkzip或 winzip来完成。这个命令就是xp_makecab。它允许你指定一列你想压缩的文件还有你想放进去的cab文件。它甚至允许你选择默认压缩, MSZIP压缩(类似于.zip文件格式)或不压缩。第一个参数给出到cab文件的路径,这是你想创建和添加文件的地方。第二个参数是压缩级别。如果你想使用详细的日志记录就使用第三个参数。第四个参数后跟着你想压缩的文件的名称。在我的测试里,我可以在扩展存储过程里传45个要压缩的文件名称,这意味着它是一个对你的数据压缩要求来说非常灵活的解决方案。  
 
exec xp_makecab 'c:\123.cab', 'mszip', 1, 'c:\123.xml'   
 
xp_msver   
 
存储过程xp_msver在查看系统信息的时候是非常有用的。 
它返回关于主机操作系统的大量的信息——SQL 版本号、语言、CPU类型、版权和商标信息、 
Microsoft Windows版本、CPU数和亲和性设置、物理内存设置和你的产品键。 
这个存储过程有许多输入参数,它们允许你过滤返回的记录。 
每一个参数都是一个 sysname数据类型,它接受一条记录的名称。如果指定了所有的参数, 
那么只有指定的行作为参数返回。  
 
 
 
没有指定过滤。  
 
exec xp_msver  
 
只返回Platform和Comments记录。  
 
exec xp_msver 'Platform', 'Comments'  
 
xp_get_mapi_profiles  
 
xp_get_mapi_profiles存储过程帮助你配置SQL Mail。执行时, 
它会通过SQL Server 的SQL Mail组件调用Windows,并且显示在Outlook中配置的可用的MAPI概要列表, 
并且它指定哪个概要是默认的概要。如果它不显示任何记录,那么或者是Outlook没有配置正确, 
或者是配置了Outlook概要但SQL Server没有运行在一个域帐户下。 
为了在SQL Server 2005或SQL Server 2008中使用这个存储过程, 
你必须在Surface Area Configuration(外围应用配置器)工具或sp_configure存储过程中设置“SQL Mail XPs”选项为可用。  
 
exec xp_get_mapi_profiles  
 
xp_subdirs  
 
xp_subdirs存储过程显示通过xp_dirtree可用的信息的子集。xp_subdirs将会显示给定的文件夹的所有的子文件夹。 
当你在一个表里动态地构建一个目录树时它是很便利的,并且你不需要担心xp_dirtree存储过程的其它参数。  
 
exec xp_subdirs 'c:\'  
 
xp_test_mapi_profiles  
 
xp_test_mapi_profiles存储过程是另一个未公开的存储过程,它在你建立SQL Mail时非常有用。 
它会启动然后停止一个MAPI会话来确保MAPI配置正确并工作在Microsoft SQL Server之内。 
我应该指出,它不校验MAPI客户端(Outlook)中的邮件服务器配置,也不发送测试信息。  
 
存储过程接受一个单独的输入参数。这个参数是你要测试的MAPI概要的名称。就像xp_get_mapi_profiles存储过程一样, 
这个存储过程要运行在SQL Server 2005和SQL Server 2008之中,你必须在Surface Area Configuration(外围应用配置器)工具 
或sp_configure存储过程中设置“SQL Mail XPs”选项为可用。  
当使用SQL Mail存储过程时,要清楚SQL Mail仍预计要从Microsoft SQL Server平台中删除。 
这意味着sp_get_mapi_profiles和xp_test_mapi_profiles存储过程是预计要删除的,因为他们是SQL Mail子系统的一部分。 
你应该在SQL Server 2005中做所有的邮件工作,然后使用Database Mail替代SQL Mail来确保代码可移植到SQL Server的未来版本中。 
微软最初计划在SQL Server 2008中删除SQL Mail,但基于其包括在了当前的测试版本中,它未来是否存在于SQL Server 2008中还是未知数。  
 
xp_unpackcab  
 
随xp_makecab存储过程而来的xp_unpackcab扩展存储过程,它能做的就像它的名字一样:从cab文件提取文件。第一个参数是cab文件,第二个参数是你想提取到的路径,第三个参数是详细记录日志。第四个参数使你可以指定“提取到”的文件名称。  
 
exec xp_unpackcab 'c:\test.cab', 'c:\temp\', 1  
 
虽然这并不打算罗列SQL Server中未公开的存储过程的完整列表,但它确实持着使SQL Server管理员的工作容易些的期望提供了一个对许多未公开的存储过程的参考。记住,你绝不应该指望从一个SQL Server版本到另一个版本时这些存储过程仍然存在,你也不应该期待在不同的版本间它们的代码基础仍然相同。意思就是,去编码并享受它带来的便利。  
 
posted @ 2010-11-02 10:54  qanholas  阅读(2058)  评论(1编辑  收藏  举报