Wie, um eine Liste aller Tabellen & Spalten-Namen von einem verknüpften server-Datenbank in SQL Server?
Wenn die reguläre Datenbank, ich kann einfach verwenden diese Abfrage, um eine Liste mit allen Tabellennamen und deren Spaltennamen der Datenbank.
use [my_database_name]
GO
SELECT sys.tables.name AS Table_Name,
sys.columns.name AS Column_Name,
sys.columns.max_length,
(schema_id) As Schema_name
FROM sys.tables
INNER JOIN sys.columns
ON sys.tables.OBJECT_ID=sys.columns.object_id
ORDER BY schema_name, sys.tables.name, sys.columns.name
aber jetzt muss ich verbinden, um einen verknüpften server-Datenbank daher die 'verwenden' kann nicht verwendet werden.
Gibt es einen anderen Weg?
- Voll qualifizieren den Tabellen in der select-Anweisung.
[linkedserver].[databasename].[dbo].[tablename]
- Aber Sie sollten die alias-Ihre Tabellen. 3 (und 4) Teil Benennung in der select-Liste ist veraltet.
- Der Zweck ist es, aus JEDER Spalte die Namen aller Tabellen einer verknüpften server-Datenbank auf einmal. WEI_DBA könnten Sie etwas konkreter über Ihre Antwort?
- Was @WEI_DBA besagt, ist, dass Sie brauchen, um vollständig zu qualifizieren, die sys-Tabellen für Ihre Verbindungsserver so gerne....
FROM [SERVER].[DATABASE].[sys].[tables] as ls
- Vielen Dank für die Unterstützung aus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Voll qualifizieren den verknüpften server in Ihrem
FROM
undJOIN
, und alias Sie.OPENQUERY
. Überprüfen Sie heraus dieses vide....youtu.werden/BtyMQsE8pvYErweitern leicht auf @scsimon Antwort...
Den
(schema_id) As Schema_name
ist nicht sehr nützlich, da es wirklich eine ID. Um die Liste aller Tabellen (und Ihre Spalten) mit schema-Namen kann man verwenden:Gibt es die Lösung in der Liste:
Und auch das öffnen eines Cursors:
Dem system gespeicherten Prozedur sp_tables wird verwendet, um die Liste der verfügbaren Tabellen in der aktuellen Datenbank auf den aktuellen server. Sie können sp_tables_ex für den Verbindungsserver. Folgendes gibt eine Liste der Tabellen verfügbar auf dem angegebenen Server: