Sql-Server-2008-R2

通過連結伺服器獲取 DB2 數據庫和表的列表

  • May 13, 2019

有沒有辦法通過連結伺服器查詢獲取 DB2 伺服器上的數據庫列表?我嘗試使用 openquery 來執行“列表數據庫目錄”,但這沒有用。

我試圖這樣做是因為我沒有直接訪問 DB2 伺服器的權限。

請注意,我已經設置了連結伺服器。

您無法通過 ODBC 獲取數據庫列表;ODBC 需要連接到特定的數據庫,而數據庫對外部世界一無所知,特別是如果有任何其他數據庫。根據特定的 DB2 平台,甚至可能不存在“其他數據庫”的概念。

list database directory是 DB2 CLP 命令,而不是 SQL 語句,因此 SQL 引擎無法理解。

至於連接數據庫中的表列表,您可以查詢目錄視圖SYSCAT.TABLES(前提是我們討論的是 DB2 for LUW;如果不是,請參閱相應的產品手冊)。

我能夠使用 openquery() 和 QSYS2.TABLES 從 SQL Server 2008 將連結伺服器上的目錄、模式和表查詢到 AS/400 或 iSeries 上的 DB2。將 {linked_server} 替換為您的連結伺服器的名稱。

列出目錄:

select * from openquery({linked_server}, 'select distinct table_catalog from qsys2.tables')

列出模式:

select * from openquery({linked_server}, 'select distinct table_schema from qsys2.tables')

列出表格

select * from openquery({linked_server}, 'select * from qsys2.tables where table_type = ''BASE TABLE''')

搜尋特定表

select * from openquery({linked_server}, 'select * from qsys2.tables where table_catalog = ''{catalog_name}'' and table_schema = ''{schema_name}'' and table_type = ''BASE TABLE'' and table_name like ''%{name_criteria}%''')

引用自:https://dba.stackexchange.com/questions/171214