SQL Server 2017 相对路径问题

10

在迁移到SQL Server 2017后,遇到了有趣的问题。

绝对路径测试

backup database master to disk = 'C:\Temp\1\2\3\master.bak'

备份已按预期保存在C:\Temp\1\2\3\。

相对路径测试#1

backup database master to disk = 'C:\Temp\1\2\3\..\master.bak'

备份已创建在C:\Temp\

期望值:C:\Temp\1\2\

相对路径测试 #2

backup database master to disk = 'C:\Temp\11\22\33\..\master.bak'
backup database master to disk = 'C:\Temp\111\222\333\..\master.bak'
backup database master to disk = 'C:\Temp\bin\bin\bin\..\master.bak'

备份文件存储在以下文件夹中:C:\Temp\11\、C:\Temp\111\和C:\Temp\bin\。

期望结果为:分别是C:\Temp\11\22\、C:\Temp\111\222\和C:\Temp\bin\bin\。

相对路径测试 #3

backup database master to disk = 'C:\Temp\Folder1\Folder2\Folder3\..\master.bak'
backup database master to disk = 'C:\Temp\1111\2222\3333\..\master.bak'

备份文件按预期存储在文件夹C:\Temp\Folder1\Folder2和C:\Temp\1111\2222中。

您可以看到,所有相对路径的深度都相同,但是根据文件夹名称长度的不同,备份文件会落在不同的层级上。我无法复制此问题,使用SQL Server 2014没有出现该问题,但是在SQL Server 2017 RTM和RTM-CU2中都能够复制此问题。

操作系统:Windows Server 2016。当将路径粘贴到Windows Explorer时,路径被正确解析。

如何使包含短(少于4个字符)文件夹名称的相对路径起作用?


1
有趣的,投票支持 - EagerToLearn
5
我会将此发布到微软页面,因为这可能是一个漏洞。 - S3S
2个回答

1
这个问题在SQL Server 2017 CU14(或更早版本)中似乎已经得到解决。

0

已确认在 "Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)" 上出现了此 Bug。

不过,经过尝试后我发现一个解决方法,即在目录名称后面添加另一个点。

backup database master to disk = 'C:\Temp\1.\2.\3.\..\master.bak'

这个成功备份到了'C:\Temp\1\2\'。我找不到任何参考说明为什么会成功。另外,如果可能的话,最好避免使用低字符目录。


1
用更多的bug来对抗bug? - wqw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接