SQL-Datenbanken können mit PowerShell nicht wie Verzeichnisse aufgelistet werden

SQL-Datenbanken können mit PowerShell nicht wie Verzeichnisse aufgelistet werden

Ich versuche, Datenbanken mit PowerShell aufzulisten. Ich kann das Cmdlet Inkoke-Sqcmd verwenden, aber mit diesem Befehl kann ich keine Datenbanken auflisten:

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

Ich habe dies bereits auf meinem lokalen Computer getestet, aber auf meinem Server ist es fehlgeschlagen. Fehlt bei meiner Installation etwas? Ich habe Windows Server 2008 R2, SQL Server 2008 R2, PowerShell 2.0

Bearbeiten: Das Cmdlet „Get-Host“ zeigt mir diese Informationen:

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

Ich habe auch festgestellt, dass meine Instanz von SQL Server Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) ist und nicht SQL Server 2008 R2, wie ich dachte

Antwort1

SQL-Datenbanken können mit PowerShell nicht wie Verzeichnisse aufgelistet werden

Stellen Sie sicher, dass Sie die SQL Server Snap-Ins (Add-PSSnapin) laden, um die entsprechenden Befehle usw. zu unterstützen. Nachfolgend finden Sie Beispiele für die Syntax fürStandardinstanzoderbenannte Instanzvon SQL Server und wo diese Details in die PS-Befehle eingefügt werden.

Wichtiger Hinweis:Die serverr2\serverr2Logik in Ihrer PS ist möglicherweise falsch. Möglicherweise ist es die Standardinstanz, die Sie DIR SQLSERVER:\\SQL\Serverr2\Databasesnur verwenden würden. Spiegeln Sie diesen Teil so, dass er dem Typ entspricht, mit dem Sie möglicherweise von SSMS aus eine Verbindung zur Datenbank-Engine Ihrer SQL Server-Instanz herstellen.


Es gibt also zwei Möglichkeiten, die Sie basierend auf Ihrem Fehler ausprobieren können (Sehen Sie sich jedoch zuerst die Beispiele unten an, wie Sie vorgehen müssen, Add-PSSnapin *sql*falls nötig.):

  • Standardinstanz: DIR SQLSERVER:\\SQL\Serverr2\Databases | Select Name
  • Benannte Instanz: DIR SQLSERVER:\\SQL\Serverr2\Serverr2\Databases | Select Name

Beispiel einer benannten SQL Server-Instanz

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

Beispiel einer SQL Server-Standardinstanz

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

Weitere Lektüre und Ressourcen


Unterschied zwischen Standardinstanz und benannter Instanz in SQL Server

Was ist der Unterschied zwischen der Standardinstanz und der benannten Instanz in SQL Server?

Eine SQL Server-Installation wird als Instanz bezeichnet. Bis einschließlich SQL Server 7.0 war nur eine Installation von SQL Server auf einem Server möglich, aber diese Einschränkung entsprach nicht einer Reihe von Bereitstellungsszenarien, die Kunden benötigten, darunter Hochverfügbarkeit und Konsolidierung.

Mit der Veröffentlichung von SQL Server 2000 waren mehrere Installationen von SQL Server auf einem einzigen Server möglich und wurden als SQL Server-Instanzen bezeichnet. SQL Server 2008 setzt dieses Modell mit nur wenigen Änderungen fort. Eine Standardinstanz hat weitgehend dasselbe Profil wie frühere SQL Server-Installationen; Sie installieren SQL Server und stellen dann eine Verbindung unter Verwendung des Computernamens des Servers her. Ihr Windows-Server kann nur einen Computernamen haben, sodass Sie ihn nur verwenden können, um eine Verbindung zu einer SQL Server-Instanz herzustellen. Dies wird als Standardinstanz bezeichnet.

Wenn Sie zusätzliche Instanzen von SQL Server installieren, werden diese als benannte Instanzen bezeichnet. Sie stellen die Verbindung zu ihnen im Format her. Wenn Sie beispielsweise einen Server mit dem Namen PLUTO haben und eine benannte Instanz mit dem Namen SQL1 installieren, stellen Sie die Verbindung zu dieser Instanz mit PLUTOSQL1 her. Wenn Sie eine weitere benannte Instanz mit dem Namen SQL2 installieren, stellen Sie die Verbindung mit PLUTO SQL2 her. Wenn Sie eine Standardinstanz installiert haben, stellen Sie die Verbindung mit PLUTO her.

Jede Instanz ist vollständig unabhängig von allen anderen Instanzen und verfügt über eigene Dienste, Datenbanken und Konfigurationseinstellungen. Alle Komponenten einer einzelnen Instanz werden gemeinsam verwaltet und Service Packs und Patches werden auf alle Komponenten innerhalb einer Instanz angewendet.

Während des Installationsvorgangs müssen Sie eine eindeutige Instanz-ID angeben, die zum Definieren der Verzeichnisstruktur, Registrierungsstruktur und Dienstnamen für diese Instanz verwendet wird. Dies ist neu in SQL Server 2008. Standardmäßig wird der von Ihnen angegebene Instanzname als Instanz-ID verwendet. Für die Standardinstanz wird MSSQLSERVER als Instanz-ID verwendet.

GemäßHerr_LinDowsMac. . .

Ich gehe folgendermaßen vor: $databases = (DIR SQLSERVER:\\SQL\serverr2 | SELECT Databases -ExpandProperty Databases | SELECT Name,Owner,Urn). Da ich WHERE nicht verwenden kann, verwende ich einfach $databases = $databases -match "SERVERR2\SERVERR2", um nach dieser bestimmten Instanz zu filtern. – Herr_LinDowsMac

verwandte Informationen