注册 登录
Office中国论坛/Access中国论坛 返回首页

xyxj1974的个人空间 http://www.office-cn.net/?50071 [收藏] [复制] [分享] [RSS]

日志

网上找的一些SQL有用的东东

热度 8已有 5912 次阅读2009-12-22 16:38

Create PROCEDURE EnumerateSQLServers
AS
/*
存储过程名称: EnumerateSQLServers
目        的:使用SQLDMO和TSQL列出所有可用的实例
*/

DECLARE @retval int
DECLARE @result varchar(500)
DECLARE @object int
DECLARE @objectList int
DECLARE @src varchar(254)
DECLARE @desc varchar(255)
DECLARE @resultsCount int
DECLARE @counter int
DECLARE @method varchar(255)

--创建SQLDMO对象
EXEC @retval = sp_OACreate 'SQLDMO.Application', @object OUT

--检查对象是否创建成功
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
    Select hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END
--调用方法ListAvailableServers() , 为SQLDMO.NameList得到Object_ID
EXEC @retval = sp_OAMethod @object , 'ListAvailableSQlServers()' , @objectList OUT
-- 是否有错误?
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
    Select hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END
--计算局域网里的服务器数量
EXEC @retval = sp_OAGetProperty @objectList , 'Count' , @resultsCount OUT
--再一次进行错误处理
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
    Select hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END

--如果有服务器的话,进入处理.....
IF @resultsCount > 0
BEGIN
  SET @counter = 1
  DECLARE @ServersTbl table (ServerID int IDENTITY ,ServerName varchar(255))
  WHILE @counter <= @resultsCount
  BEGIN
    --列出SQL实例:一个名字接一个名字的列出
    SET @method = 'Item(' + convert(varchar(3),@counter) + ')'        
    EXEC @retval = sp_OAGetProperty @objectList ,@method , @result OUT
    
    --将数据存到临时表
    Insert INTO @ServersTbl (ServerName) Select @result
    
    --移到下一条记录
    SET @counter = @counter + 1
  END
END
ELSE
BEGIN
  SET @result = 'No Servers around you'
  Insert INTO @ServersTbl (ServerName) Select @result
END
--释放对象
EXEC @retval = sp_OADestroy @object
IF @retval <> 0
BEGIN
  EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
  Select hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
  RETURN
END

--好了,可以列出所有可用的实例了 ....
Select * FROM @ServersTbl
GO


------------------------------------------------------------------------------------------------------
枚举数据库名称简单:

程序代码 程序代码
USE master
select name from sysdatabases;


-------------------------------------------------------------------------------------------------------
一大堆,网摘
--1:获取当前数据库中的所有用户表
程序代码 程序代码
select Name from sysobjects where xtype='u' and status>=0


--2:获取某一个表的所有字段
程序代码 程序代码
select name from syscolumns where id=object_id(N'表名')


--3:查看与某一个表相关的视图、存储过程、函数
程序代码 程序代码
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

--4:查看当前数据库中所有存储过程
程序代码 程序代码
select name as 存储过程名称 from sysobjects where xtype='P'


--5:查询用户创建的所有数据库
程序代码 程序代码
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')


或者
程序代码 程序代码
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01


--6:查询某一个表的字段和数据类型
程序代码 程序代码
select column_name,data_type from information_schema.columns
where table_name = N'表名'


--7:获取数据库文件路径
程序代码 程序代码
select ltrim(rtrim(filename)) from 数据库名..sysfiles where charindex('MDF',filename)>0
或者
select ltrim(rtrim(filename)) from 数据库名..sysfiles where charindex('LDF',filename)>0

刚表态过的朋友 (0 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 08:55 , Processed in 0.067328 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部