我有一个模板数据库,其中包含一些数据的表,我希望在启动新项目时始终拥有这些数据。这样做的目的是在启动新项目时复制模板。我使用序列来获取表中数据行的id列值(在代码中)。
问题是:当我使用的任务->复制数据库复制数据库,并选择使用方法作为传输方法时,序列值似乎重置为源数据库序列的“重置值”,而不是保留序列当前值。
在复制数据库时,是否有任何方法自动保留序列的当前值?现在,当我向模板数据库添加一些数据时,我基本上必须每次更新相关表的重置值,否则复制的数据库中的数据和序列的当前值将被关闭。
我正在使用2012,服务器版本为12.0.4237 ( Server 2014)。
发布于 2019-06-30 23:19:28
您可以通过运行以下命令获得当前种子值:
SELECT
s.name as [schema],
t.name as [table],
IDENT_CURRENT( s.name + '.' +t.name ) NextIdentValue,
'DBCC CHECKIDENT ('+char(39)+s.name+'.' +t.name+char(39)+',RESEED,'+ CAST(IDENT_CURRENT( s.name + '.' +t.name ) as varchar(50))+ '); ' as cmdSQL
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
ON s.[schema_id] = t.[schema_id]
WHERE EXISTS
(
SELECT 1 FROM sys.identity_columns
WHERE [object_id] = t.[object_id]
);
在目标系统上运行cmdSQL脚本列。
根据您的需求,可以将输出存储到表/文件中,然后在恢复后执行同步脚本。
发布于 2018-04-06 18:07:35
有什么原因不能备份模板数据库并将其还原为不同的db名称?我猜那会起作用的。
https://dba.stackexchange.com/questions/203184
复制相似问题