疯了 docker 中的 sqlserver 始终无法导入数据

2022-03-29 20:04:07 +08:00
 helee9199

docker 中拉了最新的的 sqlserver 版本号显示 15.0.4198.2 下称版本 A (也尝试过 2017 也不行) Microsoft SQL Server Express 版本 15.0.2000.5 下称版本 B 目前想把版本 B 资料库导入到版本 A 的资料库 导出版本 B 的 bak 文件以后 导入到 docker 容器下 使用 MSSMS 导入时却报错

===================================

还原数据库“aers”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks)

------------------------------
程序位置:

  在 Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)
  在 Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.Perform(ITaskExecutionContext context)
  在 Microsoft.SqlServer.Management.TaskForms.TaskExecutionManager.ExecuteTaskSequence(ISfcScriptCollector collector)

===================================

System.Data.SqlClient.SqlError: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\aers.mdf" failed with the operating system error 2(The system cannot find the file specified.). (Microsoft.SqlServer.SmoExtended)

------------------------------
有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.100.44091.28+(SMO-master-A)&LinkId=20476

------------------------------
程序位置:

  在 Microsoft.SqlServer.Management.Smo.RestorePlan.Execute()
  在 Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)


于是找又找其他方式导入
但是依然报错
 ➜  ~ docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost \
   -U sa -P '1234' \
   -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/ares.bak"' \
   | tr -s ' ' | cut -d ' ' -f 1-2
Msg 3201,
Cannot open
Msg 3013,
RESTORE FILELIST

报错代码也无法搜到有用的信息 有大佬知道这是怎么回事么

856 次点击
所在节点    问与答
7 条回复
disk
2022-03-29 21:36:27 +08:00
可以尝试用 SSMS 连接后,能不能用图形化操作。
disk
2022-03-29 21:43:02 +08:00
第一条报错说明导入的路径不对,你直接选择本地的文件,但是在容器里是找不到的。
第二条需要先把备份拷贝进去,然后通过交互式运行指令便于排错,参考 https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-restore-database?view=sql-server-ver15
helee9199
2022-03-30 08:41:00 +08:00
@disk emm 第一个报错就是我已经把备份文件拷贝到 docker 的 sqlserver 容器目录下了 然后使用 ssms 连接了 也选择了文件 点导入 然后就报这个错

第二个是我搜的命令导入 然后报的这个错
disk
2022-03-30 10:36:56 +08:00
@helee9199 有检查过容器内文件的权限吗?导入好像需要允许读写。
DCCooper
2022-03-30 15:34:00 +08:00
1. 容器内查看文件在不在
2. 把挂载进去试试看,-v
julyclyde
2022-03-30 15:58:38 +08:00
不明白
docker 里还能运行 windows 吗?
jeffw
2023-02-03 10:09:03 +08:00
@julyclyde sqlserver 可以运行在 linux 上!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX