gpt4 book ai didi

用于克隆数据库的 SQL 脚本保持原始不变

转载 作者:行者123 更新时间:2023-12-02 04:52:32 26 4
gpt4 key购买 nike

我们目前有一个基本安装的 CMS,在这个 CMS 中,它包含一个完整的用户、产品、内容等工作数据集。我们希望增加安装时间,因为现在我们必须进入 SQL Server 2012 ,创建一个新的数据库,然后从现有的基础安装数据库中恢复该数据库。

我们每次安装最多可能需要 10 - 15 分钟。

我们还确保我们的基础数据库满足我们构建的网站的所有要求。

我们的问题是,我们想做以下事情。

  1. 让脚本创建一个全新的空数据库
  2. 将这个数据库克隆到一个新的 .bak 文件中
  3. 获取此 .bak 文件,然后将其复制到一个全新的数据库中,分别使用自己的 MDF 和 LDF 文件。

数据库位于同一台服务器上,因此我们不需要将其迁移到任何其他机器或实例。

我们的代码如下

CREATE database my_test

BACKUP DATABASE test_db TO DISK = 'C:\my_test\my_test.bak' WITH INIT;
EXEC internal_lab_test.dbo.sp_helpfile;

RESTORE FILELISTONLY
FROM DISK = 'C:\my_test\my_test.bak'

RESTORE DATABASE my_test
FROM DISK = 'C:\my_test\my_test.bak'
WITH MOVE 'my_test' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db.mdf',
MOVE 'my_test_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db_log.ldf'

我们想确保一切都是新鲜干净的,但仍然包含所有数据,但是每次运行这段代码时,我们都会收到以下错误消息

我们还想确保原始数据库的 mdf 和 ldf 文件完好无损,不会在新数据库中使用

Msg 3154, Level 16, State 4, Line 10
The backup set holds a backup of a database other than the existing 'my_test' database.
Msg 3013, Level 16, State 1, Line 10
RESTORE DATABASE is terminating abnormally.

最佳答案

我知道这是旧的,但为了完整性,它是谷歌中的第二个条目。

因为数据库已经存在。所以要么删除数据库,要么用 Replace 添加。

此外,my_test 和 my_test_log 名称需要是 restore filelistonly 命令中的逻辑名称。

RESTORE DATABASE my_test
FROM DISK = 'C:\my_test\my_test.bak'
WITH Replace,
MOVE 'my_test' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db.mdf',
MOVE 'my_test_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db_log.ldf'

关于用于克隆数据库的 SQL 脚本保持原始不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18568633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com