我正在尝试使用下面的代码来扩展数据库。但是我收到以下错误。如何检查大小 (3600MB) 并在必要时增加它?
USING MyDatabase
ALTER DATABASE MyDatabase
MODIFY FILE (NAME = MyDatabase_data, SIZE = 3600MB)
错误:修改文件失败。指定的大小小于或等于当前大小。
更新:由于交通繁忙,我没有使用 Auto Grow。由于我在这里的设置(无关的长篇故事),我需要使用代码进行更改。但是,如果此代码运行多次,我会收到上述错误。在再次尝试更改之前,我需要先检查尺寸。
最佳答案
数据库的大小将显示为
USE MyDatabase
EXEC sp_spaceused
查看 sp_spaceused 的代码(我碰巧正在查看 SQL 2000 服务器,但对于 SQL2005/SQL2008 也是如此)
USE master
EXEC sp_helptext 'sp_spaceused'
相关代码为:
declare @dbsize dec(15,0)
declare @logsize dec(15)
declare @bytesperpage dec(15,0)
declare @pagesperMB dec(15,0)
select @dbsize = sum(convert(dec(15),size))
from dbo.sysfiles
where (status & 64 = 0)
select @logsize = sum(convert(dec(15),size))
from dbo.sysfiles
where (status & 64 <> 0)
select @bytesperpage = low
from master.dbo.spt_values
where number = 1
and type = 'E'
select @pagesperMB = 1048576 / @bytesperpage
select database_name = db_name(),
database_size =
ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB')
因此您可以将大小保存到一个变量并再次比较您尝试设置的大小:
DECLARE @database_size bigint
SELECT @database_size = (@dbsize + @logsize) / @pagesperMB
IF @database_size < 3600
BEGIN
PRINT 'Expanding MyDatabase ...'
ALTER DATABASE MyDatabase
MODIFY FILE (NAME = MyDatabase_data, SIZE = 3600MB)
PRINT 'Expanding MyDatabase DONE'
END
ELSE
BEGIN
PRINT 'No expansion of MyDatabase required'
END
关于sql-server - 如何增加数据库文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592540/