rya*_*lit 6 sql-server-2005 shrink
好吧,我试过寻找这个答案,但没有运气.我工作的SQL Server上有大约50个数据库,我几乎每天都要检查一下,看看是否可以通过缩小来释放任何空间.我们的驱动器往往会填满很多,所以这就是为什么它几乎是日常工作的原因.
有没有快速的方法来检查哪些数据库实际上有可用的可用空间?有谁知道系统/自定义存储过程或系统视图可以生成每个数据库的列表以及可以在该数据库上缩小多少可用空间?
顺便说一下,使用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
Run Code Online (Sandbox Code Playgroud)
执行T-SQL:
USE Contoso
EXECUTE sp_spaceused @UpdateUsage=True
Run Code Online (Sandbox Code Playgroud)
结果:
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)
Run Code Online (Sandbox Code Playgroud)
收缩:
DBCC SHRINKDATABASE (Contoso)
Run Code Online (Sandbox Code Playgroud)
再次检查空间:
EXECUTE sp_spaceused @UpdateUsage=True
Run Code Online (Sandbox Code Playgroud)
结果:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3410 次 |
| 最近记录: |