SQL 使用openquery進行跨庫操作

2022-06-10 12:42:08 字數 1615 閱讀 3293

摘自:

對給定的鏈結伺服器執行指定的傳遞查詢。該伺服器是 ole db 資料來源。openquery 可以在查詢的 from 子句中引用,就好象它是乙個表名。openquery 也可以作為 insert、update 或 delete 語句的目標表進行引用。但這要取決於 ole db 訪問介面的功能。儘管查詢可能返回多個結果集,但是 openquery 只返回第乙個。

transact-sql 語法約定

openquery(linked_server,'query')
ns = ""

linked_server

表示鏈結伺服器名稱的識別符號。

'query'在鏈結伺服器中執行的查詢字串。該字串的最大長度為 8 kb。

openquery 不接受其引數的變數。

exec seattlesales.master.dbo.xp_msver

任何使用者都可以執行 openquery。用於連線到遠端伺服器的許可權是從為鏈結伺服器定義的設定中獲取的。

a. 執行 select 傳遞查詢

以下示例將使用「用於 oracle 的 microsoft 訪問介面」針對 oracle 資料庫建立乙個名為oraclesvr的鏈結伺服器。然後,該示例針對此鏈結伺服器使用select傳遞查詢。

注意:本示例假定已經建立了乙個名為orcldb的 oracle 資料庫別名。

exec sp_addlinkedserver 'oraclesvr', 

'oracle 7.3',

'msdaora',

'orcldb'

goselect *

from openquery(oraclesvr, 'select name, id from joe.titles')

go

b. 執行 update 傳遞查詢

以下示例針對示例 a 中建立的鏈結伺服器使用update傳遞查詢。

update openquery (oraclesvr, 'select name from joe.titles where id = 101') 

set name = 'adifferentname';

c. 執行 insert 傳遞查詢

以下示例針對示例 a 中建立的鏈結伺服器使用insert傳遞查詢。

insert openquery (oraclesvr, 'select name from joe.titles')

values ('newtitle');

d. 執行 delete 傳遞查詢

以下示例使用delete傳遞查詢刪除示例 c 中插入的行。

delete openquery (oraclesvr, 'select name from joe.titles where name = ''newtitle''');

SQL 中OPENQUERY的使用

原文 sql 中openquery的使用 openquery 是sql server用來與其他server互動的一種技術,通過openquery,sql server 可以直接訪問其他資料庫資源。而其他資料庫在openquery 表示式中是以linked server 存在的。使用sp linked...

SQL 在OPENQUERY中使用引數

openquery 是sql server用來與其他server互動的一種技術,通過openquery,sql server 可以直接訪問其他資料庫資源。而其他資料庫在openquery 表示式中是以linked server 存在的。使用sp linkedservers 可以找到當前資料庫的所有l...

OPENQUERY用法以及使用需要注意的地方

對給定的鏈結伺服器執行指定的傳遞查詢。該伺服器是 ole db 資料來源。openquery 可以在查詢的 from 子句中引用,就好象它是乙個表名。openquery 也可以作為 insert update 或 delete 語句的目標表進行引用。但這要取決於 ole db 訪問介面的功能。儘管查...