SQL Server跨資料庫呼叫儲存過程

2021-10-01 19:46:20 字數 2097 閱讀 7638

a庫儲存過程:

create

procedure

[dbo]

.[spaaafortest]

(@username nvarchar(20)

=null

,@loginpwd nvarchar(60)

=null)as

begin

select n'a'

as a

, n'b'

as b

, n'c'

as c

;end

同一臺伺服器例項,a,b兩個資料庫, 在b庫的儲存過程中,呼叫a庫的儲存過程

b庫:

alter

procedure

[dbo]

.[spaaafortest2]

(@username nvarchar(20)

=null

,@loginpwd nvarchar(60)

=null)as

begin

declare

@sql nvarchar(

500)

;set

@sql

= n' exec db_a.dbo.spaaafortest '

;exec sp_executesql @sql

end

a,b兩個資料庫,不在同一臺伺服器例項, 在b庫的儲存過程中,呼叫a庫的儲存過程

b庫:

alter

procedure

[dbo]

.[spaaafortest2]

(@username nvarchar(20)

=null

,@loginpwd nvarchar(60)

=null)as

begin

declare

@sql nvarchar(

500)

;set

@sql

= n' exec opendatasource('

'sqloledb'

',''data source=server-123\mssql2008r2;user id=sa;password=sa'

').db_a.dbo.spaaafortest '

;exec sp_executesql @sql

end

--------------- 在跨伺服器呼叫時,所使用opendatasource 遭遇如下資訊時

訊息 15281,級別 16,狀態 1,第 1 行

sql server blocked access to statement 'openrowset/opendatasource'

of component 'ad hoc distributed queries'

because this component is turned off

as part of the security configuration for this server.

a system administrator can enable the use

of'ad hoc distributed queries'

byusing sp_configure.

for more information about enabling 'ad hoc distributed queries'

,see "su***ce area configuration"

insql server books online.

通過如下方式進行設定:

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'ad hoc distributed queries',1

reconfigure

SQL Server 跨資料庫查詢

語句 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b b where a.field b.field sqlserver資料庫 這句是對映乙個...

sqlserver跨資料庫操作

1 方法一 建立鏈結伺服器 建立鏈結伺服器 exec sp addlinkedserver srv lnk sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin srv lnk false null,使用者名稱 密碼 go 查詢示例 select from s...

SQLServer 跨資料庫訪問

首先,你要知道跨資料庫訪問的語法,如下 select from openrowset sqloledb driver server 伺服器位址 uid sa pwd 密碼 資料庫名.dbo.表名 如果沒有啟用ad hoc distributed queries,查詢結果是出錯的,如下描述 exec ...