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" を使用して、特定のインスタンスにフィルター処理します。 – リンダウズマックさん