问题在标题中。我有一个数据库服务器,其中有许多数据库,这些数据库在名称中有句点(它们是网址,因此我知道哪个数据库与哪个网站相关联,例如foo.bar.com_content)。当我导航到SQLSERVER:\sql\[server]\default\databases
并运行get-childitem
时,我可以看到所有数据库的列表。当我尝试cd [database name with period]
时,我收到以下错误:
Set-Location : SQL Server PowerShell provider error: The number of keys specified does not match the number of keys required to address this object. The number of keys required are: Name.
At line:1 char:3
+ cd <<<< '[database name with periods here]'
+ CategoryInfo : InvalidData: (SQLSERVER:\sql\...t.org_Content:SqlPath) [Set-Location], GenericProviderException
+ FullyQualifiedErrorId : KeysNotMatching,Microsoft.PowerShell.Commands.SetLocationCommand
该错误重复四次,然后是:
Set-Location : Cannot find path 'SQLSERVER:\sql\[servername]\default\databases\[database name with periods here]' because it does not exist.
At line:1 char:3
+ cd <<<< '[database name with periods here]'
+ CategoryInfo : ObjectNotFound: (SQLSERVER:\sql\...t.org_Content:String) [Set-Location], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
我可以对名称中没有句点的同一台服务器上的数据库运行相同的命令,并且连接正常。
我在Powershell ISE中安装了SQL Server 2012工具的Powershell v2.0中的Windows桌面计算机上运行此操作。远程数据库服务器正在运行SQL Server 2008r2。
答案 0 :(得分:3)
尝试将期间.
更改为%2e
的十六进制值,如下所示,考虑到数据库名称为foo.bar.com_content
。
cd [foo%2ebar%2ecom_content]
答案 1 :(得分:1)
Rahul的答案通常是正确的,但删除括号。这是Rahul答案的修正。
cd foo%2ebar%2ecom_content
如果您的名称约定使用空格,则用引号括起来(单个或双重作品)
cd 'foo%2eb ar%2ecom_content'