首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Server中复制数据库时保留序列的当前值

如何在Server中复制数据库时保留序列的当前值
EN

Database Administration用户
提问于 2018-04-05 21:24:51
回答 2查看 1.6K关注 0票数 3

我有一个模板数据库,其中包含一些数据的表,我希望在启动新项目时始终拥有这些数据。这样做的目的是在启动新项目时复制模板。我使用序列来获取表中数据行的id列值(在代码中)。

问题是:当我使用的任务->复制数据库复制数据库,并选择使用方法作为传输方法时,序列值似乎重置为源数据库序列的“重置值”,而不是保留序列当前值。

在复制数据库时,是否有任何方法自动保留序列的当前值?现在,当我向模板数据库添加一些数据时,我基本上必须每次更新相关表的重置值,否则复制的数据库中的数据和序列的当前值将被关闭。

我正在使用2012,服务器版本为12.0.4237 ( Server 2014)。

EN

回答 2

Database Administration用户

发布于 2019-06-30 23:19:28

您可以通过运行以下命令获得当前种子值:

代码语言:javascript
运行
复制
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脚本列。

根据您的需求,可以将输出存储到表/文件中,然后在恢复后执行同步脚本。

票数 2
EN

Database Administration用户

发布于 2018-04-06 18:07:35

有什么原因不能备份模板数据库并将其还原为不同的db名称?我猜那会起作用的。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/203184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档