PowerShell でディレクトリのような SQL データベースを一覧表示できない

PowerShell でディレクトリのような SQL データベースを一覧表示できない

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

PowerShell でディレクトリのような SQL データベースを一覧表示できない

適切なコマンドなどをサポートするために、SQL Serverスナップイン(Add-PSSnapin)を必ずロードしてください。以下は、デフォルトインスタンスまたは名前付きインスタンスSQL Server の詳細と、その詳細を PS コマンドのどこに入力するかを示します。

重要な注意点:PS ロジックのがserverr2\serverr2間違っている可能性があります。これは、使用する既定のインスタンスDIR SQLSERVER:\\SQL\Serverr2\Databasesのみである可能性があります。この部分をミラーリングして、SQL Server インスタンスの SSMS からデータベース エンジンに接続する方法と一致するようにします。


エラーに基づいて試すことができる2つの可能性(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 は 1 つだけでした。しかし、この制限は、高可用性や統合など、顧客が求める多くの展開シナリオには適していませんでした。

SQL Server 2000 のリリースにより、1 台のサーバーに複数の SQL Server をインストールできるようになり、SQL Server インスタンスと呼ばれていました。SQL Server 2008 もこのモデルを継承しており、変更点はほとんどありません。既定のインスタンスは、これまでの SQL Server インストールとほぼ同じプロファイルを持ちます。SQL Server をインストールし、サーバーのコンピューター名を使用して接続します。Windows Server にはコンピューター名を 1 つしか設定できないため、そのコンピューター名を使用して接続できるのは 1 つの SQL Server インスタンスのみです。これを既定のインスタンスと呼びます。

SQL Server の追加インスタンスをインストールすると、これらは名前付きインスタンスと呼ばれます。形式を使用して接続します。たとえば、PLUTO という名前のサーバーがあり、SQL1 という名前の名前付きインスタンスをインストールする場合、PLUTOSQL1 を使用してそのインスタンスに接続します。SQL2 という名前の別の名前付きインスタンスをインストールした場合は、PLUTO SQL2 を使用して接続します。既定のインスタンスがインストールされている場合は、PLUTO を使用して接続します。

各インスタンスは他のインスタンスから完全に独立しており、独自のサービス、データベース、および構成設定のセットを備えています。 1 つのインスタンスのすべてのコンポーネントはまとめて管理され、サービス パックとパッチはインスタンス内のすべてのコンポーネントに適用されます。

インストール プロセス中に、そのインスタンスのディレクトリ構造、レジストリ構造、およびサービス名を定義するために使用される一意のインスタンス ID を指定する必要があります。これは、SQL Server 2008 の新機能です。既定では、指定したインスタンス名がインスタンス ID として使用されます。既定のインスタンスでは、MSSQLSERVER がインスタンス ID として使用されます。

に従ってリンダウズマックさん。 。 。

私は次のように回避します: $databases = (DIR SQLSERVER:\\SQL\serverr2 | SELECT Databases -ExpandProperty Databases | SELECT Name,Owner,Urn)WHERE を使用できないため、$databases = $databases -match "SERVERR2\SERVERR2" を使用して、特定のインスタンスにフィルター処理します。 – リンダウズマックさん

関連情報