SQL Server里一些未公开的扩展存储过程
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里一些未公开的扩展存储过程的更多相关文章
- 在SQL Server里为什么我们需要更新锁
今天我想讲解一个特别的问题,在我每次讲解SQL Server里的锁和阻塞(Locking & Blocking)都会碰到的问题:在SQL Server里,为什么我们需要更新锁?在我们讲解具体需 ...
- 在SQL Server里如何进行页级别的恢复
在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...
- 在SQL Server里如何进行数据页级别的恢复
在SQL Server里如何进行页级别的恢复 关键词:数据页修复 在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你 ...
- SQL Server里的闩锁介绍
在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...
- SQL Server里等待统计(Wait Statistics)介绍
在今天的文章里我想详细谈下SQL Server里的统计等待(Wait Statistics),还有她们如何帮助你立即为什么你的SQL Server当前很慢.一提到性能调优,对我来说统计等待是SQL S ...
- SQL Server里PIVOT运算符的”红颜祸水“
在今天的文章里我想讨论下SQL Server里一个特别的T-SQL语言结构——自SQL Server 2005引入的PIVOT运算符.我经常引用这个与语言结构是SQL Server里最危险的一个——很 ...
- SQL Server里的自旋锁介绍
在上一篇文章里我讨论了SQL Server里的闩锁.在文章的最后我给你简单介绍了下自旋锁(Spinlock).基于那个基础,今天我会继续讨论SQL Server中的自旋锁,还有给你展示下如何对它们进行 ...
- 在SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
- SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
随机推荐
- svn:revert to this version 和 revert changes from this version的区别 假设我们有许多个版本,版本号分别是1-10
假设我们有许多个版本,版本号分别是1-10 如果我们在7这里选择revert to this version那么7之后的8,9,10的操作都会被消除 如果在7选择revert changes from ...
- ssh-keygen的使用方法
一.概述 1.就是为了让两个linux机器之间使用ssh不需要用户名和密码.采用了数字签名RSA或者DSA来完成这个操作 2.模型分析 假设 A (192.168.20.59)为客户机器,B(192. ...
- WinCE NAND flash - FAL
http://blog.csdn.net/renpine/article/details/4572347 http://msdn.microsoft.com/en-US/library/ee48203 ...
- C语言一维数组中的数据随机排列
#include <stdio.h>#include <stdlib.h> void randomlize(int *a, int n){ int i = 0,j ...
- 中国海洋大学第四届朗讯杯高级组 Cash Cow(模拟)
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2721 题意: 给定n个左标,跟那n个坐标 ...
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- Sping表达式语言--SpEL
Spring表达式语言---SpEL 是一个支持运行时查询和操作对象的强大的表达式语言 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean ...
- 自杀程序&递归删除目录
自杀程序,删掉自身,包括执行程序所在的文件夹. 仅在windows下进行了测试,使用语言C# string fileName = Path.GetTempPath() + "killmyse ...
- MEF技术
MEF 是一个使开发人员能够创建“插件式应用程序”的技术,这里的“插件”是指在应用程序部署后开发人员能够通过开发“插件”来扩展应用程序功能.但不同之处是使用MEF框架您在系统设计阶段不需要考虑在应用程 ...
- 在FOR中使用close window,循环次数大于1就会报异常
在FOR循环中执行以下动作: 场景:1.打开页面A, 2.点击A中的链接打开新的window, 3.将driver切换到新window, 4.close window 5.再切换到页面A 时出异 ...