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

[转帖] 博客天地 www.inbaidu.com

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

扩展存储过程(xp)是直接运行在SQL Server地址空间里的动态链接库,是通过使用SQL Server开放数据服务API(SQL Server Open Data Services API)开发的。我们可以像执行普通存储过程一样,在“查询分析器”里运行扩展存储过程。扩展存储过程被用于SQL Server的扩展功能,我们可以直接利用SQL Server附带的众多扩展存储过程,也可以用C或C++等编程语言编写我们自己的扩展存储过程。
在本文中,我将告诉大家一些未公开的有用的扩展存储过程。这些存储过程可以运行于SQL Server 7.0,当然SQL Server 2000也可以。

1、sp_MSgetversion
这个扩展存储过程可以用来获得Microsoft SQL Server的当前版本。要获得SQL Server的版本,执行:
EXEC master..sp_MSgetversion
注意,还有一种方法获得SQL Server的当前版本(这种方法能得到更多信息),那就是用下面的SELECT语句:
SELECT @@version

2、xp_dirtree
这个扩展存储过程可以用于为在扩展存储(xp)中命名的文件夹列出所有文件夹。要列出C:\MSSQL7中的所有文件夹,执行:
EXEC master..xp_dirtree 'C:\MSSQL7'

3、xp_enum_oledb_providers
这个扩展存储过程用于列出所有可用的OLE DB提供者(OLE DB providers)。它返回提供者的名称、解析名称(Parse Name)和提供者的描述。要获得你的SQL Server的所有OLE DB提供者,执行:
EXEC master..xp_enum_oledb_providers

4、xp_enumcodepages
这个扩展存储过程可以用来列出所有你的SQL Server的代码页(code pages)、字符集和它们的描述。要查看这些信息,执行:
EXEC master..xp_enumcodepages

5、xp_enumdsn
这个扩展存储过程系统所有的DSN和它们的描述。要查看系统DSN,执行:
EXEC master..xp_enumdsn

6、xp_enumerrorlogs
这个扩展存储过程返回所有错误日志的列表和它们的最后更改日期。要获得错误日志列表,执行:
EXEC master..xp_enumerrorlogs

7、xp_enumgroups
这个扩展存储过程返回Windows NT组及其描述的列表。要获得Windows NT组的列表,运行:
EXEC master..xp_enumgroups

8、xp_fileexist
我们可以用这个扩展存储过程来确定一个特定的文件是否在磁盘上存在。用法:
EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]
比如要检查C:盘是否存在boot.ini文件,执行:
EXEC master..xp_fileexist 'c:\boot.ini'

9、xp_fixeddrives
这是一个非常有用的扩展存储过程,他返回所有硬盘和它们的空闲空间有多少MB的列表。要查看驱动器列表,执行:
EXEC master..xp_fixeddrives

10、xp_getnetname
这个扩展存储过程返回你连接的SQL Server的WINS名。查看这个名称,执行:
EXEC master..xp_getnetname

11、xp_readerrorlog
这个扩展存储过程返回错误日志的内容。我们可以在SQL Server 7.0的默认目录C:\MSSQL7\Log里找到错误日志。要查看错误日志的话,执行:
EXEC master..xp_readerrorlog

12、xp_regdeletekey
这个扩展存储过程将从注册表里删除一个主键。用这个功能的时候务必小心!用法:
EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
                        [@key=]'key'
比如要删除“HKEY_LOCAL_MACHINE”中的“SOFTWARE\Test”这个主键,执行:
EXEC master..xp_regdeletekey @rootkey='HKEY_LOCAL_MACHINE',
                             @key='SOFTWARE\Test'

13、xp_regdeletevalue
这个扩展存储过程将删除注册表里某个特定的键值。用这个功能的时候务必小心!用法:
EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
                          [@key=]'key',
                          [@value_name=]'value_name'
比如,从“HKEY_LOCAL_MACHINE”中删除“SOFTWARE\Test”下的“Testvalue”,执行:
EXEC master..xp_regdeletevalue @rootkey='HKEY_LOCAL_MACHINE',
                               @key='SOFTWARE\Test',
                               @value_name='Testvalue'

14、xp_regread
这个扩展存储过程从注册表里度数据。用法:
EXECUTE xp_regread [@rootkey=]'rootkey',
                   [@key=]'key'
                   [, [@value_name=]'value_name']
                   [, [@value=]@value OUTPUT]
比如要把“HKEY_LOCAL_MACHINE”中“SOFTWARE\Test”下的“Testvalue”读到变量@test,执行:
DECLARE @test varchar(20)
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                        @key='SOFTWARE\Test',
                        @value_name='Testvalue',
                        @value=@test OUTPUT
SELECT @test

15、xp_regwrite
这个扩展存储过程用来写注册表。用法:
EXECUTE xp_regwrite [@rootkey=]'rootkey',
                    [@key=]'key',
                    [@value_name=]'value_name',
                    [@type=]'type',
                    [@value=]'value'
比如把变量“Test”写到“HKEY_LOCAL_MACHINE”中“SOFTWARE\Test”下的“Testvalue”,执行:
EXEC master..xp_regwrite
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='Testvalue',
     @type='REG_SZ',
     @value='Test'

16、xp_subdirs
这个扩展存储过程用于为在扩展存储(xp)中命名的文件夹列出文件夹列表。比之于xp_dirtree,xp_subdirs只返回那些深度为1(depth = 1)的文件夹。这里是例子:
EXEC master..xp_subdirs 'C:\MSSQL7'

注意:记住这些未公开的扩展存储过程不是Microsoft官方支持的,并且它们可能在下一个版本的SQL Server中无法找到。

转载于:https://www.cnblogs.com/sczw-maqing/p/3193121.html

SQL Server里一些未公开的扩展存储过程相关推荐

  1. SQL Server里那些我们应该知道的系统存储过程

    SQL Server常见系统存储过程 1 sp_who 功能及说明: 当前数据库实例的用户.会话.进程信息. 参数主要包括用户(@loginame='xxxx').会话状态(仅活动的即ACTIVE). ...

  2. 在SQL Server里如何进行页级别的恢复

    在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...

  3. 在SQL Server里为什么我们需要更新锁

    今天我想讲解一个特别的问题,在我每次讲解SQL Server里的锁和阻塞(Locking & Blocking)都会碰到的问题:在SQL Server里,为什么我们需要更新锁?在我们讲解具体需 ...

  4. SQL Server里PIVOT运算符的”红颜祸水“

    概述 SQL Server里PIVOT运算符背后的基本思想是在T-SQL查询期间,你可以旋转行为列.运算符本身是SQL Server 2005后引入的,主要用在基于建立在实体属性值模型(Entity ...

  5. SQL Server里的INTERSECT

    在今天的文章里,我想讨论下SQL Server里的INTERSECT设置操作.INTERSECT设置操作彼此交叉2个记录集,返回2个集里列值一样的记录.下图演示了这个概念. INTERSECT与INN ...

  6. SQL Server里Grouping Sets的威力

    在SQL Server里,你有没有想进行跨越多个列/纬度的聚集操作,不使用SSAS许可(SQL Server分析服务).我不是说在生产里使用开发版,也不是说安装盗版SQL Server. 不可能的任务 ...

  7. SQL Server里的 ISNULL 与 Oracle 中的 NULLIF

    SQL Server里的 ISNULL 与 Oracle 中的 NULLIF不同: SQL Server 中有两个参数,语法:     ISNULL(check_expression, replace ...

  8. SQL Server里的日期格式化

    1)SQL Server 里实现日期格式化需要到 convert()函数: CONVERT() 函数是把日期转换为新数据类型的通用函数,可以用不同的格式显示日期/时间数据. 语法:CONVERT(da ...

  9. SQL Server里查看当前连接的在线用户数

    use master select loginame,count(0) from sysprocesses group by loginame order by count(0) descselect ...

最新文章

  1. 牛顿迭代法求解平方根
  2. 开启报名 | AI芯片体系架构和软件专题报告会2020
  3. Linux监控工具介绍系列——free`
  4. CTFshow php特性 web127
  5. hdu5441(2015长春网络赛E题)
  6. ytu 2335: 0-1背包问题
  7. 当我真正开始爱自己——查理·卓别林
  8. 字符串类型的日期如何存储到数据库Date类型的字段中
  9. Qt基于TCP网络程序发包封包抽象
  10. 找出N个无序数中第K大的数
  11. html checkbox 多选 根据数据库来显示选取和未选取,前端框架(2)DIV多选复选框框的封装和MySql数据库存取...
  12. 55. mysqli 扩展库(2)
  13. 每天一个linux命令(25):chgrp命令
  14. pdf论文中visio画的图出现Times New Roman 字体未嵌入
  15. 打开计算机无法显示工具栏,任务栏不显示打开的窗口怎么办教程
  16. 《英语语法新思维 基础版1》读书笔记(一)
  17. 我们距离构建一个逼真的虚拟世界还有多远
  18. Excel 模拟form表单提交
  19. python解释器环境中用于表示上一次运算结果的特殊变量_Python语句print(type(1//2))的输出结果是...
  20. 分布式全链路跟踪系统-skywalking

热门文章

  1. TCP/IP详解笔记----第一章:概述
  2. 对通用输入输出GPIO的深入理解
  3. 图像卷积与滤波知识点整理(2)
  4. 工业机器人入门实用教程_机器学习实用入门
  5. 设计数据密集型应用程序_设计数据密集型应用程序书评
  6. 网卡驱动:stmmac DMA接收流程
  7. 欢迎使用CSDN-markdown编辑器11111
  8. 李嘉诚那么有钱,为什么还要把国内很多资产卖掉?
  9. 操作系统知识——互斥和死锁
  10. 蜕变与成长中的青春创作:评论家谈少数民族青年作家的创作