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中无法找到。

SQL Server里一些未公开的扩展存储过程的更多相关文章

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

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

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

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

  3. 在SQL Server里如何进行数据页级别的恢复

    在SQL Server里如何进行页级别的恢复 关键词:数据页修复 在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你 ...

  4. SQL Server里的闩锁介绍

    在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...

  5. SQL Server里等待统计(Wait Statistics)介绍

    在今天的文章里我想详细谈下SQL Server里的统计等待(Wait Statistics),还有她们如何帮助你立即为什么你的SQL Server当前很慢.一提到性能调优,对我来说统计等待是SQL S ...

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

    在今天的文章里我想讨论下SQL Server里一个特别的T-SQL语言结构——自SQL Server 2005引入的PIVOT运算符.我经常引用这个与语言结构是SQL Server里最危险的一个——很 ...

  7. SQL Server里的自旋锁介绍

    在上一篇文章里我讨论了SQL Server里的闩锁.在文章的最后我给你简单介绍了下自旋锁(Spinlock).基于那个基础,今天我会继续讨论SQL Server中的自旋锁,还有给你展示下如何对它们进行 ...

  8. 在SQL Server里如何处理死锁

    在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...

  9. SQL Server里如何处理死锁

    在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...

随机推荐

  1. 200. Number of Islands

    题目: Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is s ...

  2. 如何设置table的border-radius?

    遇到一个诡异的问题, 为table添加border-radius不起作用. 示例如下: #table1 { border-collapse: collapse !important; border-r ...

  3. CCS使用TIPS

    2013-06-20 09:37:49 CCS使用TIPS: 代码编写: CCS中通过Using CodeSense方便写代码,跟VC助手类似,具体使用方法在ccs的help中搜索using visu ...

  4. 12月上旬poj其他题

    poj3170 1,4两遍bfs: poj3171 改一改poj2376即可 poj3172 dfs+剪枝 其实增长速度很快,n<=40,题目吓你的: poj3661 比较经典的dp:设f[i, ...

  5. SCOI2009游戏

    1025: [SCOI2009]游戏 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1065  Solved: 673[Submit][Status] ...

  6. 了解AngularJS $resource

    原文: https://learnable.com/books/angularjs-novice-to-ninja/preview/understanding-angularjs-resource-e ...

  7. CSS3 Transitions, Transforms和Animation使用简介与应用展示

    CSS3 Transitions, Transforms和Animation使用简介与应用展示 by zhangxinxu from http://www.zhangxinxu.com本文地址:htt ...

  8. EF Code First 学习笔记:约定配置

    要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...

  9. [原创]一种简单的cocos2d-x动态更新方案

    介绍一个曾经在cocos2d-x项目中使用过的动态更新方案,这个方案简单易行,针对小的项目非常有用. 这个方案有两个核心的关键词:JSON,MD5. 原理可以简单地概括为:服务端持有所有动态更新资源文 ...

  10. [GRYZ2015]足球联赛

    问题描述 巴蜀中学新一季的足球联赛开幕了.足球联赛有n 只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得3 分,输一场不得分,平局两只队伍各得一分.英勇无畏的小鸿是机房的主力前锋 ...