Как я могу получить доступ к базе данных SQL Server с. в названии через 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

Я могу запустить ту же команду для базы данных на том же сервере, который не имеет точек в имени, и подключиться просто отлично.

Я запускаю это на своем компьютере с Windows в Powershell ISE, Powershell v2.0 с установленными инструментами SQL Server 2012. Удаленный сервер базы данных работает под управлением SQL Server 2008r2.

2 ответа

Решение

Попробуйте изменить период . чтобы это шестнадцатеричное значение %2e как показано ниже, учитывая, что имя базы данных foo.bar.com_content,

cd [foo%2ebar%2ecom_content]

Ответ Рахула в целом правильный, но снимите скобки. Вот исправление к ответу Рахула.

cd foo%2ebar%2ecom_content

Если ваше соглашение об именах использует пробелы, заключите его в кавычки (одинарное или двойное либо работает)

cd 'foo%2eb ar%2ecom_content'
Другие вопросы по тегам