Ric*_*ick 25 sql-server backup sql-server-2017
我试图恢复我的数据库和 SQL Server 不断崩溃。我会在 SSMS 中收到一条消息,指出存在网络传输错误(连接因崩溃而中断)。我检查了日志,发现 SQL Server 意外关闭。然后我将不得不去重新启动服务。
我将问题缩小到 GUI 试图运行的脚本。问题是在进行尾日志备份时,备份文件的路径是错误的。它应该是D:\mapbenefits\...
BACKUP LOG [mapbenefits]
TO DISK = N'D:mapbenefits_LogBackup_2019-02-21_13-58-24.bak'
WITH NOFORMAT, NOINIT, NAME = N'mapbenefits_LogBackup_2019-02-21_13-58-24',
NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5
Run Code Online (Sandbox Code Playgroud)
我有两个问题。
如何修复此路径?我尝试进入服务器设置,备份路径D:没有斜线。如果我添加斜杠,gui 会将其删除。这是 SSMS v17.9.1。我可以选择D:\mapbenefits\并且有效,但我想要D:\DATABASE\...
这是一个错误吗?SQL 服务器是否应该因为路径输入错误而崩溃?一旦我修复了文件路径,它就没有问题了。我可以通过整理文件路径随时复制。
如果我运行查询来检查版本,我会得到 CU13,但如果我进入设置,我会看到版本 14.0.1000.169。
看起来这是一个错误并且可以重现,所以我将它发布到这里:https : //feedback.azure.com/forums/908035-sql-server/suggestions/36920542-incorrect-filepath-with-backup-log-command-原因
Jos*_*ell 25
我能够重现这一点。
在 2016 年,如果我输入这样的无效路径,我会收到以下消息:
无法打开备份设备“D:mapbenefits_LogBackup_2019-02-21_13-58-24.bak”。操作系统错误 3(系统找不到指定的路径。)
在 2017 CU 13 (14.0.3048.4) 上,它导致服务崩溃。您已经在最新的修补程序 (14.0.3049.1) 中提到,服务不会崩溃,但会话已终止。
我已经确认同样的确切行为也适用于RESTORE DATABASE- 传递像“D:Backups”(缺少反斜杠)或“D::\Backups”(额外的冒号)这样的路径会使 SQL Server 实例崩溃(感谢Michael K Campbell提出这个问题)。
如果我放置了一个不存在的“有效”路径,我会在 2017 年得到正确的行为(“找不到指定的路径”)。
这是一个错误 - 在 CU 13 和修补程序版本中。将不正确的参数传递给BACKUP或RESTORE命令不应使服务崩溃或终止您的会话。您可以在反馈站点上报告。
注意:此错误的服务崩溃版本可以在 SQL Server 2019 的公共预览版中重现(CTP2.2 - 感谢Denis Rubashkin指出这一点)
在调试器中查看这个,似乎路径验证代码被破坏了。sqlmin!CheckFileStreamReserved在对提供的路径的正常(并且相当广泛)的检查无法理解它之后,它最终通过递归调用 in 导致堆栈溢出。堆栈溢出导致构建 3048 上的服务停止运行。同样的事情发生在 3049 上,除了在尝试处理堆栈溢出时出现一系列访问冲突,而不是中断连接而不是停止整个服务器。
SQL Server 2017 CU 15 中发布了针对此错误的修复程序:
修复:当您尝试将主数据库备份到磁盘时,SQL Server 2017 由于堆栈溢出而崩溃
该问题也在 SQL Server 2019 CTP 3.0 中得到解决。
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |