SQLServer鏈結伺服器傳遞變數引數

2021-05-23 08:38:05 字數 1760 閱讀 4135

本文引用微軟官網的文章。http://support.microsoft.com/kb/314520/zh-cn#top

查詢鏈結的伺服器時, 經常執行的使用 openquery、 openrowset,或 opendatasource 語句直接傳遞查詢。 您可以檢視示例 sql server 聯機叢書中看到如何執行此操作通過使用預定義的 transact-sql 字串但沒有示例,說明如何將變數傳遞給這些函式。 本文提供了三個示例,說明如何將變數傳遞給鏈結的伺服器查詢。

若要將變數傳遞給傳遞的函式之一,您必須生成乙個動態查詢。

包括引號的任何資料需要特定的處理。 有關詳細資訊請參閱 sql server 聯機叢書中的使用 char 和 varchar 資料主題,請參閱以下 microsoft 知識庫中文章:

156501  (http://support.microsoft.com/kb/156501/en-us/ ) inf: quoted_identifier 和與單一的引號的字串

傳遞基本值

直接用select * from openquery(hisqyxx,'select * from hisqyxx.dbo.qyuserinfo') //hisqyxx遠端鏈結伺服器名

在基本的 transact-sql 語句已知,但必須在乙個或多個特定的值傳遞時使用類似於下面的示例**:

declare @tsql varchar(8000), @var char(2)

select  @var = 'ca'

select  @tsql = 'select * from openquery(mylinkedserver,''select * from    pubs.dbo.authors       where state = ''''' + @var + ''''''')'

exec (@tsql)

傳遞整個查詢

declare @openquery nvarchar(4000), @tsql nvarchar(4000), @linkedserver nvarchar(4000)

set @linkedserver = 'mylinkedserver'

set @openquery = 'select * from openquery('+ @linkedserver + ','''

set @tsql = 'select au_lname, au_id from pubs..authors'')'

exec (@openquery+@tsql)

使用該 sp_executesql 儲存過程

若要避免 multi-layered 的**單,使用類似於下面的示例的**:

declare @var char(2)

select  @var = 'ca'

exec mylinkedserver.master.dbo.sp_executesql

n'select * from pubs.dbo.authors where state = @state',

n'@state char(2)',

@var

另外的方式(使用at,感覺更好用些)

1.exec('select * from table_name ') at 鏈結伺服器名稱

2.調研儲存過程 --執行oracle上儲存過程

exec('begin up_procedure(''x'',''x''); end;') at 鏈結伺服器名稱

與以上的區別在於執行update時.報「無法使用書籤從鏈結伺服器的ole db 訪問介面 "oraoledb.oracle"提取行」

SQLServer建立鏈結伺服器

use master go 新增伺服器 exec sp addlinkedserver server hang 此名字可以隨便取 srvproduct sql provider sqloledb datasrc 10.130.26.x 說明 另外一台伺服器的ip go 登陸伺服器 exec sp a...

SQLServer的鏈結伺服器

今天在研究自動化測試時,需要檢視access資料檔案的資料表,但是沒有裝access,找來找去找不到office的安裝盤,情急下突然想起在sqlserver中可以新增 鏈結伺服器 來訪問其他型別的資料庫,方法如下 1 開啟sqlserver企業管理器,選擇 安全性 鏈結伺服器 單擊右鍵,選擇 新建鏈...

SQL SERVER 鏈結伺服器Mysql

2 管理工具 odbc資料來源 系統dsn 新增 選擇 mysql odbc 5.3 unicode driver 完成 會跳出來mysql連線引數 data source name 資料來源名稱 decription 描述,隨便寫 server mysql伺服器的ip port mysql的埠,預...