gpt4 book ai didi

sql-server-2005 - 以编程方式确定数据库上的可用空间?

转载 作者:行者123 更新时间:2023-12-03 01:26:54 25 4
gpt4 key购买 nike

好吧,我尝试四处寻找这个答案,但没有成功。我的 SQL Server 上有大约 50 个数据库,我几乎每天都必须检查这些数据库,看看是否可以通过收缩来释放任何空间。我们的驱动器往往会填满很多,所以这就是为什么它几乎是一项日常任务。

有没有一种快速方法可以检查哪些数据库实际上有可用空间?有谁知道系统/自定义存储过程或系统 View 可以生成每个数据库的列表以及该数据库上有多少可用空间可以缩小?

顺便说一下,使用的是sql server 2005。

最佳答案

<小时/>

为每个数据库运行sp_spacedused:

--temporary table to hold database names
CREATE TABLE #Databases (name varchar(255))

INSERT INTO #Databases
SELECT name FROM master..sysdatabases

DECLARE abc CURSOR FOR
SELECT name FROM #Databases

DECLARE @name varchar(255)
DECLARE @sql nvarchar(1024)

OPEN abc

FETCH NEXT FROM abc INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
--build sql to switch to that database...
SET @sql = 'USE '+@name
PRINT @sql
EXECUTE (@sql)

--and run spaceused on it
SET @sql = 'EXECUTE sp_spaceused @UpdateUsage=True'
PRINT @sql
EXECUTE (@sql)

FETCH NEXT FROM ABC INTO @name
END

CLOSE abc
DEALLOCATE abc
DROP TABLE #Databases
<小时/>

奇异结果示例

执行T-SQL:

USE Contoso
EXECUTE sp_spaceused @UpdateUsage=True

结果:

database_name: Contoso
database_size: 85.13 MB
unallocated_space: 15.41 MB

reserved: 70,368 KB (68.7 MB)
data: 42,944 KB (41.9 MB)
index_size: 24,200 KB (23.6 MB)
unused: 3,224 KB ( 3.1 MB)

收缩:

DBCC SHRINKDATABASE (Contoso)

再次检查空间:

EXECUTE sp_spaceused @UpdateUsage=True

结果:

database_name: Contoso
database_size: 69.81 MB
unallocated_space: 0.20 MB

reserved: 70,256 KB (68.6 MB)
data: 43,024 KB (42.0 MB)
index_size: 24,200 KB (23.6 MB)
unused: 3,032 KB ( 3.0 MB)

关于sql-server-2005 - 以编程方式确定数据库上的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com