一些用在 SQL 2000 的企业管理 GUI 中,并且不打算用于其他的流程。微软已预计将其中的一些存储过程从未来的 SQL Server 版本中删除 ( 或已经删除了 ) 。虽然这些存储过程可能很有用并为你节省了很多时间,但是他们可以在任何时候改变他们的函数或简单的删除掉。

  下面的图表显示了当许多存储过程从一个 Microsoft SQL Server 版本移入另一个版本时,引入了新的存储过程,而原来的一些则从安装包里删除了。大多数的存储过程,如果不是所有的,要求用户是系统管理员服务器角色以便执行这些存储过程。和文件系统交互的存储过程还要求执行存储过程的用户 ( 还有 SQL Server 的服务帐户 ) 具有访问文件 / 文件夹的权限。

存储过程名称

SQL 2000

SQL 2005

SQL 2008

sp_executeresultset

X

sp_MSforeachdb

X

X

X

sp_MSforeachtable

X

X

X

sp_readerrorlog

X

X

X

xp_create_subdir

X

X

Xp_delete_file

X

X

xp_dirtree

X

X

X

xp_fileexist

X

X

X

xp_fixeddrives

X

X

X

xp_getfiledetails

X

xp_getnetname

X

X

X

xp_loginconfig

X

X

X

xp_makecab

X

xp_msver

X

X

X

xp_get_mapi_profiles

X

X

X

xp_subdirs

X

X

X

xp_test_mapi_profile

X

X

X

xp_unpackcab

X

   sp_executeresultset

  微软在 SQL Server 2005 中删除了这个名为 sp_executeresultset 的便利小程序。它允许你在空闲时通过使用 SELECT 查询产生动态 SQL 代码。然后,作为结果的 SQL 命令将会在数据库上执行。它允许你创建单独的一行代码,这行代码可以在单步中查询到你的数据库里的每一个表的记录数目 ( 就像例子中所显示的 ) 。这是一个未公开的存储过程,而且无法知道它为什么被删除了。但是,唉,这个便利的有用存储过程已经没有了。  

exec sp_execresultset 'SELECT ''SELECT '''''' + name + '''''',

   count(*) FROM '' + name

   from sysobjects

   where xtype = ''U'''

   sp_MSforeachdb / sp_MSforeachtable

  sp_MSforeachdb / sp_MSforeachtable   

  两个存储过程, sp_MSforeachdb 和 sp_MSforeachtable 封装了一个指针。它们允许你对你的 SQL Server 上的每一个数据库和当前数据库中的每一个表分别执行 T-SQL 代码。然而你不能在 SQL2000 和之前的版本中在一个 sp_MSforeachdb 命令中使用 sp_MSforeachtable 命令。在这些存储过程中使用的指针名称是一样的 (hCForEach) ,因此在每一次执行 sp_MSforeachtable 时会返回一个错误说该指针名称已经在使用。在 SQL Server 2005 中,微软解决了这一问题。为了执行 “ 下一个 ” 命令,你必须告诉其中的一个存储过程它将使用一个不同的替换字符而不是默认的问号。我改变了数据库命令中的这个替换字符,因为它更为简单。

  打印当前数据库中的每一个表的名称

< p>    exec sp_MSforeachtable 'print ''?'''

  打印当前服务器的每一个数据库

   exec sp_MSforeachdb 'print ''?'''

  打印当前数据库的每一个表

   exec sp_MSforeachdb 'use [@] exec sp_MSforeachtable ''print

   ''''@.?''''''', '@'

   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 0, 1

  查看之前的 SQL Agent Log 文件。

   exec sp_readerrorlog 1, 2

   xp_create_subdir

  在 SQL Server 2005 中引入的 xp_create_subdir 存储过程是非常轻便的,因为你可以用它在 SQL Server 的硬盘上或从 T-SQL 内部的网络共享上创建文件夹。

   exec xp_create_subdir 'c:MSSQLData'

   xp_delete_file

  使用 SQL Server 2005 中引入的 xp_delete_file 存储过程从 SQL Server 的硬盘或从 T-SQL 内部的网络共享上删除文件。

   xp_dirtree

   xp_dirtree 存储过程允许你查看文件夹树状结构和 / 或一个文件夹下的文件列表。这个存储过程有几个参数用来控制这个存储过程查询深度和是返回文件和文件夹还是只返回文件夹。第一个参数设定要查看的文件夹。 ( 建议 ; 不要在 Windows 的系统盘根目录上执行这个存储过程,因为产生树和返回数据需要一些时间。) 第二个参数限制了这个存储过程将会进行的递归级数。默认是零或所有级别。第三个参数告诉存储过程包括文件。默认是零或只对文件夹,数值 1 代表包括结果集的文件。定义第三个参数为不为零的数值将会增加一行到输出的调用文件,这个文件是显示进入一个文件夹或文件的一个小文件。

  获得完整目录树。

   exec xp_dirtree 'd:mssql'

  获得目录树的前两级。

   exec xp_dirtree 'd:mssql', 2

  获得目录数的前三级,包括文件。

   exec xp_dirtree 'd:mssql', 3, 1

   exec xp_dirtree 'd:mssql'

   xp_fileexist

  这个 SQL Server 存储过程, xp_fileexist , 是用来决定一个文件是存在于的硬盘上还是在网络共享上。它对于从规则文档中下载数据的存储过程是非常有用的。它允许你在打算盲目的下载数据之前查看文件是 否存在。这个存储过程有两个参数。用第一个参数来确定你想要的文件或文件夹是否存在。第二个参数是一个输出参数,如果它被定义了,会根据文件存在或不存在 而返回 1 或 0 。

  没有这个参数:

   exec xp_fileexist 'c:importfile.csv'

  有这个参数:

   DECLARE @file_exists int

   exec xp_fileexist 'c:importfile.csv', @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 版本中最后一次可用。这个存储过程返回关于指定文件的大小、日期和属性信息,包括创建、访问和修改的日期和次数。

< p>    exec xp_getfiledetails 'c:filetoload.csv'

   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:test.cab', 'mszip', 1, 'c:test.txt' , 'c:test1.txt'

   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 'd:/mssql'

  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版本到另一个版本时这些存储过程仍然存在,你也不应该期待在不同的版本间它们的代码基础仍然相同。意思就是,去编码并享受它带来的便利。

  所有提供的关于Microsoft SQL Server 2008(Katmai)的信息是基于该软件的测试版10.0.1019。

转载于:https://www.cnblogs.com/zerocc/archive/2013/04/09/3010568.html

转:微软未公开的几个过程介绍及用法相关推荐

  1. DOS命令未公开的命令

    dos系统中有许多未公开的命令与参数.我经过收集整理,发现了很多.由于dos的有好几种,所以下面仅以ms-dos为例,介绍一下常用命令中的未公开的命令与参数.经过比较,我发现在ms-dos的各版本中, ...

  2. [翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb

    SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb 您是否曾经写过代码来处理数据库中的所有表?处理一个 SQL Server实例中的所有数据 ...

  3. 可怕!CPU暗藏了这些未公开的指令!

    ‍ 作者 | 轩辕之风 来源 | 编程技术宇宙 我们知道,我们平时编程写的高级语言,是经过编译器编译以后,变成了CPU可以执行的机器指令: 而CPU能支持的指令,都在它的指令集里面了. 很久以来,我都 ...

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

    sp_readerrorlog / xp_readerrorlog     存储过程sp_readerrorlog实际上有两种形式.每一项的工作内容一样;一个是另一个的简单封装.封装的存储过程是sp_ ...

  5. 【VBA研究】定时关闭MsgBox及相关未公开的API

    iamlaosong文 大家都知道,VBA中自带的MsgBox不能自动关闭,某些特殊情况下需要在指定时间内用户没有点击消息框按钮后能继续运行代码,需要用到定时关闭的消息框,我一般都是自己做一个窗体显示 ...

  6. SQL Server2000 未公开的存储过程

    SQL Server2000 未公开的存储过程 sp_columns_rowset The sp_columns_rowset stored procedure returns the complet ...

  7. SQL Server里一些未公开的扩展存储过程

    SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.com SQL Server里一些未公开的扩展存储过程 扩展存储过程(xp)是直接运行在SQL Server ...

  8. 微软宣布公开预览Dev Spaces for AKS

    微软宣布公开预览面向Azure Kubernetes Services(AKS)的Dev Spaces,为团队提供了一种快速的Kubernetes迭代开发体验.该版本是继5月份Build 2018大会 ...

  9. jsp input输入实时校验长度并提示_HotCRC未公开发布的高版本穷举输入规则(V3.02)...

    HotCRC未公开发布的高版本穷举输入规则(V3.02): text ?poly-poly #init-init ^xor-xor $CRC4~64LlRr?poly#init:code,%*Nn(i ...

最新文章

  1. Android开发之详解五大布局
  2. 个人小应用服务器安装搭建,HP 360p Gen9 使用winpe安装centos[一]
  3. UA OPTI570 量子力学30 Degenerate Stationary Perturbation Theory简介
  4. linux 查看和修改文件编码的方法
  5. 解决Apache/PHP无法启动的问题
  6. bzoj2111,P2606-[ZJOI2010]排列计数【Lucas,组合计数,dp】
  7. docker安装nginx容器小记
  8. github上markdown文件编写笔记
  9. ccf矩阵java_CCF系列之矩阵(201512-5)
  10. SQL server脚本语句积累
  11. Flutter高级第4篇:inappbrowser、StatefulBuilder 更新 Flutter showDialog、showModalBottomSheet中的状态
  12. L1-014 简单题 (5 分)—团体程序设计天梯赛
  13. bzoj4008: [HNOI2015]亚瑟王
  14. 大数据:数据大合集,你想要的这里或许会有
  15. C# BackgroundWorker
  16. 抖音视频什么时候投放dou+最好,dou+投放实战总结:国仁网络资讯
  17. Cesium开发环境搭建的几种方法总结
  18. 爬取股票收盘价,计算神奇九转
  19. 你知道5分钟法则和10字节法则么?
  20. 原子性、可见性、有序性解决方案

热门文章

  1. gulp.js 的安装以及使用
  2. 【ORACLE】oracl基本操作笔记
  3. JBoss日志文件配置
  4. 应用程序性能分析利器 —— Visual Studio Profiler
  5. dbc2000找不到服务器控制台,控制面板没有BDE Administrator(安装好DBC2000找不到)
  6. java valueof的用法_Java SignStyle valueOf()用法及代码示例
  7. leetcode算法题--将数字变成 0 的操作次数
  8. python主函数的作用_python中main函数的用法
  9. ASP.NET验证控件详细使用解释
  10. Python全栈 MySQL 数据库 (索引、数据导入、导出)