Невозможно перечислить базы данных SQL как каталоги с помощью PowerShell

Невозможно перечислить базы данных SQL как каталоги с помощью PowerShell

Я пытаюсь вывести список баз данных с помощью PowerShell. Я могу использовать командлет Inkoke-Sqcmd, но не могу вывести список баз данных с помощью этой команды:

dir SQLSERVER:\SQL\myserver\sqlinstance\Databases

Get-ChildItem : No se encuentra la ruta de acceso 'SQLSERVER:\SQL\serverr2\serverr2\Databases' porque no existe.
En línea: 1 Carácter: 4
+ dir <<<<  SQLSERVER:\SQL\serverr2\serverr2\Databases
    + CategoryInfo          : ObjectNotFound: (SQLSERVER:\SQL\serverr2\serverr2\Databases:String) [Get-ChildItem], ItemNo
   tFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Я уже проверил это на локальном компьютере, но не смог на сервере. Чего-то не хватает в моей установке? У меня Windows Server 2008 R2, SQL Server 2008 R2, PowerShell 2.0

Редактировать: Командлет Get-Host показывает мне следующую информацию:

Name             : ConsoleHost
Version          : 2.0
InstanceId       : c1976472-19c0-439e-a4f6-debe59a18616
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-MX
CurrentUICulture : es-ES
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Я также обнаружил, что мой экземпляр SQL Server — это Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64), а не SQL Server 2008 R2, как я думал.

решение1

Невозможно перечислить базы данных SQL как каталоги с помощью PowerShell

Обязательно загрузите оснастки SQL Server (Add-PSSnapin) для поддержки соответствующих команд и т. д. Ниже приведены примеры синтаксиса дляэкземпляр по умолчаниюилиименованный экземплярSQL Server и куда вставлять эту информацию в команды PS.

Важная заметка:В serverr2\serverr2вашей логике PS может быть неправильно, это может быть экземпляр по умолчанию, где вы будете использовать DIR SQLSERVER:\\SQL\Serverr2\Databasesтолько. Зеркально отразите эту часть, чтобы соответствовать типу, который подключается к ядру базы данных из SSMS, возможно, вашего экземпляра SQL Server.


Итак, две возможности, которые можно попробовать, основываясь на вашей ошибке (см. ниже примеры того, как это сделать, Add-PSSnapin *sql*если необходимо, в первую очередь):

  • Экземпляр по умолчанию: DIR SQLSERVER:\\SQL\Serverr2\Databases | Select Name
  • Именованный экземпляр: DIR SQLSERVER:\\SQL\Serverr2\Serverr2\Databases | Select Name

Пример именованного экземпляра SQL Server

Add-PSSnapin *sql*
DIR SQLSERVER:\\SQL\<SQLServerName>\<InstanceName>\Databases | Select Name

Пример экземпляра SQL Server по умолчанию

Add-PSSnapin *sql*
DIR SQLSERVER:\\SQL\<SQLServerName>\Databases | Select Name

Дополнительные материалы и ресурсы


Разница между экземпляром по умолчанию и именованным экземпляром в SQL Server

В чем разница между экземпляром по умолчанию и именованным экземпляром в SQL Server?

Установка SQL Server называется экземпляром. До SQL Server 7.0 включительно на сервере была возможна только одна установка SQL Server, но это ограничение не подходило для ряда сценариев развертывания, которые требовались клиентам, включая высокую доступность и консолидацию.

С выпуском SQL Server 2000 стало возможным устанавливать несколько SQL Server на одном сервере, и они были известны как экземпляры SQL Server. SQL Server 2008 продолжает использовать эту модель с очень небольшими изменениями. Экземпляр по умолчанию имеет почти такой же профиль, что и установки SQL Server в прошлом; вы устанавливаете SQL Server, а затем подключаетесь, используя имя компьютера сервера. Ваш Windows Server может иметь только одно имя компьютера, поэтому вы можете использовать его только для подключения к одному экземпляру SQL Server. Это называется экземпляром по умолчанию.

Если вы устанавливаете дополнительные экземпляры SQL Server, они называются именованными экземплярами. Вы подключаетесь к ним, используя формат. Например, если у вас есть сервер с именем PLUTO и вы устанавливаете именованный экземпляр с именем SQL1, вы подключаетесь к этому экземпляру с помощью PLUTOSQL1. Если вы устанавливаете другой именованный экземпляр с именем SQL2, вы подключаетесь с помощью PLUTO SQL2. Если у вас установлен экземпляр по умолчанию, вы подключаетесь с помощью PLUTO.

Каждый экземпляр полностью независим от любого другого экземпляра и имеет свой собственный набор служб, баз данных и параметров конфигурации. Все компоненты одного экземпляра управляются совместно, а пакеты обновлений и исправления применяются ко всем компонентам в пределах экземпляра.

В процессе установки вам необходимо указать уникальный идентификатор экземпляра, который используется для определения структуры каталогов, структуры реестра и имен служб для этого экземпляра. Это новое в SQL Server 2008. По умолчанию указанное вами имя экземпляра используется в качестве идентификатора экземпляра. Для экземпляра по умолчанию в качестве идентификатора экземпляра используется MSSQLSERVER.

СогласноMr_LinDowsMac. . .

Я обхожу это так: $databases = (DIR SQLSERVER:\\SQL\serverr2 | SELECT Databases -ExpandProperty Databases | SELECT Name,Owner,Urn)Поскольку я не могу использовать WHERE, я просто использую $databases = $databases -match "SERVERR2\SERVERR2" для фильтрации по этому конкретному экземпляру. – Mr_LinDowsMac

Связанный контент