Mic*_*ele 9 sql-server transaction-log
我正在使用 SQL Server 2008 R2 并通过持续部署创建数据库。
在我们的系统中,SQL Server 中默认的 1Mb/10% 自动增长设置对我们的数据效果不佳。特别是因为我们有一个遗留应用程序,它阻止我们对架构进行太多更改。我们希望在实例级别配置数据库设置,以便我们可以为分阶段部署更改它。
我在几个地方读到过,新数据库的默认设置基于“模型”的设置,但似乎这只能通过单击 SQL Management Studio UI 中的新数据库而不是从脚本(例如 CREATE DATABASE [MyDb])来实现。
msdn.microsoft.com/en-us/library/ms186388(v=sql.105).aspx
sqlservercentral.com/Forums/Topic1065073-391-1.aspx
/sf/ask/617999021/#comment15586568_8828604
有没有人真的让这个与创建脚本一起工作?还有另一种方法可以设置每个服务器实例的自动增长吗?
怎么样:
use master
go
declare @newDbName sysname
, @fn nvarchar(1024)
, @growthAmount integer
, @growth nvarchar(128)
, @growthAmount_log integer
, @growth_log nvarchar(128)
set @newDbName = 'myNewDB'
--see what's available to us
--select *
--from sys.sysaltfiles saf
--inner join sys.databases db
-- on saf.dbid = db.database_id
--where db.name = 'model'
select @growthAmount = saf.growth
, @growth = case saf.status & 0x100000 when 0 then 'MB' else '%' end
, @fn = replace(saf.filename,'model.mdf','')
from sys.sysaltfiles saf
inner join sys.databases db
on saf.dbid = db.database_id
where db.name = 'model'
and saf.name = 'modeldev'
select @growthAmount_log = saf.growth
, @growth_log = case saf.status & 0x100000 when 0 then 'MB' else '%' end
from sys.sysaltfiles saf
inner join sys.databases db
on saf.dbid = db.database_id
where db.name = 'model'
and saf.name = 'modellog'
if @growth = 'MB' set @growthAmount = @growthAmount / 128
if @growth_log = 'MB' set @growthAmount_log = @growthAmount_log / 128
set @growth = cast(@growthAmount as nvarchar(10)) + @growth
set @growth_log = cast(@growthAmount_log as nvarchar(10)) + @growth_log
print '
CREATE DATABASE ' + @newDbName + '
ON
(
NAME = ' + @newDbName + '_data
,FILENAME = ''' + @fn + @newDbName + '.mdf''
,FILEGROWTH = ' + @growth + '
)
LOG ON
(
NAME = ' + @newDbName + '_log
,FILENAME = ''' + @fn + @newDbName + '.ldf''
,FILEGROWTH = ' + @growth_log + '
)
'
exec('
CREATE DATABASE ' + @newDbName + '
ON
(
NAME = ' + @newDbName + '_data
,FILENAME = ''' + @fn + @newDbName + '.mdf''
,FILEGROWTH = ' + @growth + '
)
LOG ON
(
NAME = ' + @newDbName + '_log
,FILENAME = ''' + @fn + @newDbName + '.ldf''
,FILEGROWTH = ' + @growth_log + '
)
')
Run Code Online (Sandbox Code Playgroud)