gpt4 book ai didi

sql-server - 声明文件时如何还原数据库?

转载 作者:行者123 更新时间:2023-12-02 21:06:15 25 4
gpt4 key购买 nike

我必须还原数据库,并遵循此官方文档,在该文档中,我分两个步骤进行操作:
-列出文件
-对上述文件运行“恢复”命令。

但是,我面临“已声明”错误。

我尝试使用其他名称,但是由于备份中包含某些文件,因此无法使用。我还尝试了跨不同域的其他答案,它们都具有GUI。

我运行的第一个命令是:

sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost \
-U SA -P '<YourStrong@Passw0rd>' \
-Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/us_national_statistics.bak"' \
| tr -s ' ' | cut -d ' ' -f 1-2

我得到以下输出:
LogicalName PhysicalName
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
us_national_statistics C:\Program
us_national_statistics_log C:\Program

然后,根据文档,我运行了以下命令:
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourStrong@Passw0rd>' \
-Q 'RESTORE DATABASE US_NATIONAL FROM DISK = "/var/opt/mssql/backup/us_national_statistics.bak" WITH MOVE "us_national_statistics" TO "C:\Program", MOVE "us_national_statistics_log" TO "C:\Program"'

在这里,我得到以下错误:
Msg 3176, Level 16, State 1, Server 0a6a6aac7476, Line 1
File 'C:\Program\New' is claimed by 'us_national_statistics_log'(2) and 'us_national_statistics'(1). The WITH MOVE clause can be used to relocate one or more files.
Msg 3013, Level 16, State 1, Server 0a6a6aac7476, Line 1
RESTORE DATABASE is terminating abnormally.

我希望数据库可以还原。

最佳答案

由于多种原因,您无法还原到C:\Program。那不是完整的路径(您似乎在Program Files的第一个空格之后丢失了字符串);数据和日志不能同时放在同一文件中;您通常没有对任何驱动器根目录的写权限;并且C:\在Docker或Linux中无效。

您需要LogicalName,但无论是要还原到Docker还是Linux,还是要与要保留的现有副本一起还原数据库,都不要直接使用PhysicalName。将数据库还原到其他实例(这种情况很有可能具有不同的数据文件夹结构)的情况。

尝试:

RESTORE DATABASE US_NATIONAL_COPY 
FROM DISK = "/var/opt/mssql/backup/us_national_statistics.bak"
WITH REPLACE, RECOVERY,
MOVE "us_national_statistics" TO "/var/opt/mssql/data/usns_copy.mdf",
MOVE "us_national_statistics_log" TO "/var/opt/mssql/data/usns_copy.ldf";

关于sql-server - 声明文件时如何还原数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57860030/

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