Sql-Server-2008-R2
通過連結伺服器獲取 DB2 數據庫和表的列表
有沒有辦法通過連結伺服器查詢獲取 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}%''')