Kann keine SQL-Datenbanken wie Verzeichnisse mit PowerShell auflisten

532
Mr_LinDowsMac

Ich versuche, Datenbanken mit PowerShell aufzulisten. Ich kann das Cmdlet Inkoke-Sqcmd verwenden, aber ich kann keine Datenbanken mit diesem Befehl 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 fehlgeschlagen. Fehlt bei meiner Installation etwas? Ich habe Windows Server 2008 R2, SQL Server 2008 R2, PowerShell 2.0

Bearbeiten: Das Get-Host-Cmdlet 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 herausgefunden, dass meine Instanz von SQL Server Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) und nicht SQL Server 2008 R2 ist, wie ich dachte

3

1 Antwort auf die Frage

1
Pimp Juice IT

Kann keine SQL-Datenbanken wie Verzeichnisse mit PowerShell auflisten

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ür entweder die Standardinstanz oder die benannte Instanz von SQL Server, und wo diese Details in den SQL Server eingefügt werden sollen PS-Befehle.

Wichtiger Hinweis: Die serverr2\serverr2PS-Logik ist möglicherweise falsch. Dies kann die Standardinstanz sein, in der Sie DIR SQLSERVER:\\SQL\Serverr2\Databasesnur verwendet werden. Spiegeln Sie diesen Teil so, dass er den Typ angibt, den Sie von SSMS (möglicherweise von Ihrer SQL Server-Instanz) aus mit dem Datenbankmodul verbinden.


Also zwei Möglichkeiten, die Sie anhand Ihres Fehlers versuchen können ( siehe Beispiele, Add-PSSnapin *sql*wenn nötig, zuerst ):

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

Beispiel einer benannten Instanz von SQL Server

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

Beispiel für eine SQL Server-Standardinstanz

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

Weiterführende Literatur und Ressourcen


Unterschied zwischen der Standardinstanz und der benannten 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. Diese Einschränkung entsprach jedoch nicht den von den Kunden benötigten Bereitstellungsszenarien, einschließlich Hochverfügbarkeit und Konsolidierung.

Mit der Veröffentlichung von SQL Server 2000 waren mehrere Installationen von SQL Server auf einem einzelnen Server möglich und wurden als SQL Server-Instanzen bezeichnet. SQL Server 2008 setzt dieses Modell und mit wenigen Änderungen fort. Eine Standardinstanz hat im Wesentlichen das gleiche Profil, das SQL Server-Installationen in der Vergangenheit hatten. Sie installieren SQL Server und stellen dann eine Verbindung unter Verwendung des Computernamens des Servers her. Ihr Windows Server kann nur einen Computernamen haben. Sie können ihn daher nur verwenden, 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 eine Verbindung zu ihnen unter Verwendung des Formats her. Wenn Sie beispielsweise einen Server mit dem Namen PLUTO haben und eine benannte Instanz mit dem Namen SQL1 installieren, stellen Sie über PLUTOSQL1 eine Verbindung zu dieser Instanz her. Wenn Sie eine andere benannte Instanz namens SQL2 installiert haben, stellen Sie eine Verbindung mit PLUTO SQL2 her. Wenn Sie eine Standardinstanz installiert haben, stellen Sie eine Verbindung mit PLUTO her.

Jede Instanz ist völlig unabhängig von jeder anderen Instanz und verfügt über eigene Services, Datenbanken und Konfigurationseinstellungen. Alle Komponenten einer einzelnen Instanz werden gemeinsam verwaltet, und Service Packs und Patches werden auf alle Komponenten einer Instanz angewendet.

Während des Installationsvorgangs müssen Sie eine eindeutige Instanz-ID angeben, mit der die Verzeichnisstruktur, die Registrierungsstruktur und die Dienstnamen für diese Instanz definiert werden. 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.

Wie in Mr_LinDowsMac . . .

Ich Umgehung wie folgt aus : $databases = (DIR SQLSERVER:\\SQL\serverr2 | SELECT Databases -ExpandProperty Databases | SELECT Name,Owner,Urn). Da ich WHERE nicht verwenden kann, verwende ich einfach $ database = $ database -match "SERVERR2 \ SERVERR2", um auf diese bestimmte Instanz zu filtern. - Mr_LinDowsMac

@Mr_LinDowsMac Wahrscheinlich haben Sie 1-3 potenzielle Probleme (möglicherweise 1, 2 oder alle 3). Was ich sehe, ** 1., laden Sie zuerst `Add-PSSnapin` und führen Sie dann den Befehl 'DIR' aus. * * "2." ** Vergewissern Sie sich, dass Sie in diesem Teil des Befehls "DIR SQLSERVER: \\ SQL" ** "3." ** ZWEI "[\\]" Backslashes ** haben, die Sie nur sicherstellen müssen Sie verweisen in Ihrer Konfiguration entweder auf die korrekte Instanz von SQL Server ** oder ** ** mit dem Namen **. Pimp Juice IT vor 8 Jahren 0
DIR SQLSERVER: \\ SQL \ Server \ namedinstance \ Ich bekomme eine Liste mit Rollen, Datenbanken, Endpunkten, Rollen usw. ... Aber es kann kein DIR in ihnen sein. Mr_LinDowsMac vor 8 Jahren 0
Ich habe das von Anfang an getan, das eigentliche Problem ist, dass es nicht funktioniert. Ich habe diesen Teil von Add-PSSnapin jedoch vermisst. Ich habe es nicht ausgeführt, weil ich nicht sicher bin, ob es verwandt ist, und weil es ohne \ Databases funktioniert Mr_LinDowsMac vor 8 Jahren 0
Nein, tut mir leid, es funktioniert nicht wirklich. Es werden nur die installierten Instanzen aufgelistet. Ich kann jedoch immer noch keine Datenbanken auflisten. Mr_LinDowsMac vor 8 Jahren 0
Das SQLCMD -L listet meine Instanz in UPPERCASE auf, aber es funktioniert trotzdem nicht. Jetzt versuche ich mit diesem Problem umzugehen: `DIR SQLSERVER: \\ SQL \ serverr2 | SELECT-Datenbanken -ExpandProperty-Datenbanken | SELECT Name, Owner, Urn`, aber es werden Datenbanken von einer anderen Instanz aufgelistet, die ich nicht möchte. Ich kann es nicht filtern Mr_LinDowsMac vor 8 Jahren 0
Ich gehe folgendermaßen um: $ database = (DIR SQLSERVER: \\ SQL \ serverr2 | SELECT-Datenbanken -ExpandProperty-Datenbanken | SELECT-Name, Eigentümer, Urn) `. Da ich WHERE nicht verwenden kann, verwende ich nur $ database = $ Datenbanken -match "SERVERR2 \\ SERVERR2" `zum Filtern auf diese bestimmte Instanz. Mr_LinDowsMac vor 8 Jahren 0