[英]How can I access a SQL Server database with . in name via set-location
问题在标题中。 我有一个数据库服务器,该服务器具有多个名称中带有句点的数据库(它们是url,以便我知道哪个数据库与哪个站点关联,例如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的Windows台式机上运行此程序,安装了SQL Server 2012工具的Powershell v2.0。 远程数据库服务器正在运行SQL Server 2008r2。
尝试更改期限.
假设数据库名称为foo.bar.com_content
则为十六进制值%2e
如下所示。
cd [foo%2ebar%2ecom_content]
拉胡尔的答案通常是正确的,但要删除括号。 这是对拉胡尔答案的更正。
cd foo%2ebar%2ecom_content
如果您的名称约定使用空格,则将其用引号引起来(单选或双选均可)
cd 'foo%2eb ar%2ecom_content'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.