首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

USE [Database]是不是存在BUG呢?

2013-07-04 
USE [Database]是否存在BUG呢??--本人想达到的最终目的是获取当前实例上的所有数据库的可用空间,数据库大

USE [Database]是否存在BUG呢??
--本人想达到的最终目的是获取当前实例上的所有数据库的可用空间,数据库大小已通过SP_HELPDB获取出来了。
--想了各种办法都一直达不到我想要的结果,原因是MSSQL在循环时use [database]不能实际生效。如:

exec sp_MSforeachdb  'select count(1) from sys.sysobjects'

--实际上出来的结果还是当前数据库的数量。
--我通过自己的游标进行循环,结果也一样,无法实现取各个数据库的count(1)数量。
Declare @sql varchar(500)
Declare @name varchar(32) 
Declare DB cursor  For
select name from sys.databases where state_desc='ONLINE'
open DB
fetch next From DB into @name
WHILE (@@FETCH_STATUS=0)
BEGIN 
set @sql='use '+@name
exec (@sql)
print (@sql)
select COUNT(1) from sys.sysobjects 
fetch next From DB into @name  
END
CLOSE DB;
DEALLOCATE DB;


--不知道这算不算MSSQL的BUG呢??求高手帮忙出招啊??万分感谢
                                                  sp_MSforeachdb                    可用空间                    MSSQL                    BUG                                              
[解决办法]
Declare @sql varchar(500)
Declare @name varchar(32) 
Declare DB cursor  For
select name from sys.databases where state_desc='ONLINE'
open DB
fetch next From DB into @name
WHILE (@@FETCH_STATUS=0)
BEGIN 
set @sql='select COUNT(1) from '+@name+'.sys.sysobjects'
exec (@sql)

 
fetch next From DB into @name  
END
CLOSE DB;
DEALLOCATE DB;

热点排行