PowerShell을 사용하여 디렉터리와 같은 SQL 데이터베이스를 나열할 수 없습니다.

PowerShell을 사용하여 디렉터리와 같은 SQL 데이터베이스를 나열할 수 없습니다.

PowerShell을 사용하여 데이터베이스를 나열하려고 합니다. Inkoke-Sqcmd cmdlet을 사용할 수 있지만 다음 명령으로 데이터베이스를 나열할 수는 없습니다.

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 cmdlet은 다음 정보를 보여줍니다.

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

PowerShell을 사용하여 디렉터리와 같은 SQL 데이터베이스를 나열할 수 없습니다.

적절한 명령 등을 지원하려면 SQL Server 스냅인(Add-PSSnapin)을 로드해야 합니다. 다음은 두 가지 구문의 예입니다.기본 인스턴스또는명명된 인스턴스SQL Server의 PS 명령에 해당 세부 정보를 연결할 위치를 지정합니다.

중요 사항:PS 논리 가 serverr2\serverr2올바르지 않을 수 있으며, 이는 사용자가 사용하는 기본 인스턴스일 수 있습니다 DIR SQLSERVER:\\SQL\Serverr2\Databases. SQL Server 인스턴스의 SSMS에서 데이터베이스 엔진에 연결하는 유형과 일치하도록 이 부분을 미러링합니다.


따라서 오류에 따라 시도해 볼 수 있는 두 가지 가능성(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를 사용하여 연결합니다.

각 인스턴스는 다른 인스턴스와 완전히 독립적이며 고유한 서비스, 데이터베이스 및 구성 설정 세트를 가지고 있습니다. 단일 인스턴스의 모든 구성 요소는 함께 관리되며 서비스 팩과 패치는 인스턴스 내의 모든 구성 요소에 적용됩니다.

설치 프로세스 중에 해당 인스턴스의 디렉터리 구조, 레지스트리 구조 및 서비스 이름을 정의하는 데 사용되는 고유한 인스턴스 ID를 지정해야 합니다. 이는 SQL Server 2008의 새로운 기능입니다. 기본적으로 지정한 인스턴스 이름이 인스턴스 ID로 사용됩니다. 기본 인스턴스의 경우 MSSQLSERVER가 인스턴스 ID로 사용됩니다.

에 따라Mr_LinDowsMac. . .

나는 다음과 같은 해결 방법을 사용합니다 $databases = (DIR SQLSERVER:\\SQL\serverr2 | SELECT Databases -ExpandProperty Databases | SELECT Name,Owner,Urn). WHERE를 사용할 수 없으므로 $databases = $databases -match "SERVERR2\SERVERR2"를 사용하여 해당 특정 인스턴스로 필터링합니다. – Mr_LinDowsMac

관련 정보