sqlserver 存儲過程跨庫查詢


實踐環境:SQL SERVER 2008R2

一般跨庫查詢: select  * from [遠程IP].庫名.dbo.表名/存儲過程

正常存儲過程如果在數據庫管理器的鏈接服務器地址中添加了遠程IP,是沒問題的,但是如果創建作業定時執行任務就報如下錯誤:

已以用戶 NT AUTHORITY\NETWORK SERVICE 的身份執行。 鏈接服務器 "遠程IP" 的 OLE DB 訪問接口 "SQLNCLI10" 報錯。身份驗證失敗。 [SQLSTATE 42000] (錯誤 7399)  無法初始化鏈接服務器 "遠程IP" 的 OLE DB 訪問接口 "SQLNCLI10" 的數據源對象。 [SQLSTATE 42000] (錯誤 7303)  鏈接服務器"遠程IP"的 OLE DB 訪問接口 "SQLNCLI10" 返回了消息 "無效的授權說明"。 [SQLSTATE 01000] (錯誤 7412).  該步驟失敗。

針對此報錯可以使用下面跨庫查詢方法:

select  * from OPENDATASOURCE('SQLOLEDB','Data Source=遠程IP;User ID=sa;Password=sasa').庫名.dbo.表名/存儲過程

注意:

有的服務器因為安全問題可能會關閉一些組件,會報如下錯誤:

已以用戶 NT AUTHORITY\NETWORK SERVICE 的身份執行。 SQL Server 阻止了對組件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關啟用 'Ad Hoc Distributed Queries' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。 [SQLSTATE 42000] (錯誤 15281).  該步驟失敗。

針對此報錯開啟Ad Hoc Distributed Queries組件即可,執行如下sql:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

關閉Ad Hoc Distributed Queries組件的sql如下:

exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM