3

Я пытаюсь перечислить базы данных с помощью 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 ответ1

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, я просто использую $ database = $ database -match "SERVERR2\SERVERR2", чтобы отфильтровать этот конкретный экземпляр. - Mr_LinDowsMac

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .