SQL Server 使用OPENROWSET訪問ORACLE遇到的各種坑總結

在SQL Server中使用OPENROWSET訪問ORACLE數據庫時,你可能會遇到各種坑,下面一一梳理一下你會遇到的一些坑。

?

1:數據庫沒有開啟"Ad Hoc Distributed Queries"選項,那么你就會遇到下面坑。

?

SELECT?TOP 10 * FROM?OPENROWSET('OraOLEDB.Oracle', 'ESCM_134';'test';'test', 'SELECT * FROM TEST.MY_SET')

Msg 15281, Level 16, State 1, Line 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' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', search for 'Ad Hoc Distributed Queries' in SQL Server Books Online.

?

?

出現這個錯誤,只需要開啟數據庫"Ad Hoc Distributed Queries"選項即可。如下所示

sp_configure? 'show advanced option',1;
GO
RECONFIGURE
sp_configure 'Ad Hoc Distributed Queries',1;
GO
RECONFIGURE

?

2:遇到“The OLE DB provider "OraOLEDB.Oracle" for linked server ....."這個坑

?

SELECT?TOP 10 * FROM?OPENROWSET('OraOLEDB.Oracle', 'ESCM_134';'test';'test', 'SELECT * FROM TEST.MY_SET')

Msg 7399, Level 16, State 1, Line 1

The OLE DB provider "OraOLEDB.Oracle" for linked server "(null)" reported an error. Access denied.

Msg 7350, Level 16, State 2, Line 1

Cannot get the column information from OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".

?

?

解決這個也比較簡單,使用SSMS連接到數據庫后,在“Server Objects”->"Linked Servers"->"OraOLEDB.Oracle"下勾選“Allow inprocess"選項。注意,如果不重啟,無法使之生效,依然會報上面錯誤。

?

?

3:遇到“OLE DB provider "OraOLEDB.Oracle" for linked server "(null)" returned message "ORA-12154: TNS: 無法解析指定的連接標識符...."這個坑

SELECT?TOP 10 * FROM?OPENROWSET('OraOLEDB.Oracle', 'ESCM_134';'test';'test', 'SELECT * FROM TEST.MY_SET')

OLE DB provider "OraOLEDB.Oracle" for linked server "(null)" returned message "ORA-12154: TNS: 無法解析指定的連接標識符".

Msg 7303, Level 16, State 1, Line 1

Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".

?

遇到這個問題有幾種情形:

1: 你沒有在TNS配置文件里面配置相關ORACLE實例信息。

2: SQL Server數據庫是64位的,你只安裝了32bit數據庫,配置了Oracle Client 32bit下的TNS,或者Oracle Client 32/64位都安裝了,但是你只配置了32位下的TNS。其實只需要配置64下的TNS即可。因為64位的SQL Server肯定調用64位的驅動程序。

?

4:普通賬號遇到“Ad hoc access to OLE DB provider 'OraOLEDB.Oracle' has been denied. You must access this provider through a linked server."錯誤, 具有sysadmin角色的賬號執行下面SQL正常,但是非常普通的賬號就一直報下面錯誤

?

?

SELECT TOP 10 * FROM OPENROWSET('OraOLEDB.Oracle', 'ESCM_134';'test';'test', 'SELECT * FROM TEST.MY_SET')

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'OraOLEDB.Oracle' has been denied. You must access this provider through a linked server.

?

解決方法,在服務器打開注冊表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\Providers\OraOLEDB.Oracle下(當然不同版本或命名實例的數據庫,這個注冊表路徑有啥不同,根據實際情況找到OraOLEDB.Oracle),新建DisallowAdHocAccess選項即可解決問題。

?

?

DisallowAdHocAccess屬性設置為 1,SQL Server 不允許特別通過 OPENROWSET 和 OPENDATASOURCE 函數根據指定的 OLE DB 提供程序訪問。如果您嘗試調用這些函數中的特殊查詢,您會收到類似于以下內容的錯誤消息

?

  • A change of the value of DisallowAdHocAscess from 1 to 0 would not require a restart of the SQL Service, whereas a change from 0 to 1 would have to have a SQL Service restart for the change that was made to become effective.
  • With the DisallowAdHocAccess property set to 1, SQL Server does not allow ad hoc access through the OPENROWSET and the OPENDATASOURCE functions against the specified OLE DB provider. If you try to call these functions in ad hoc queries, you receive an error message that resembles the following:

    Server: Msg 7415, Level 16, State 1, Line 1 Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server.

    In other words, with the DisallowAdHocAccess property set to 1 for a specific OLE DB provider, you must use a predefined linked server setup for the specific OLE DB provider. You can no longer pass in an ad hoc connection string that references that provider to the OPENROWSET or the OPENDATASOURCE function.

?

參考資料:

https://support.microsoft.com/zh-cn/kb/327489

?

轉載于:https://www.cnblogs.com/kerrycode/p/5784805.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256569.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256569.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256569.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab——FFT傅里葉快速變換

目錄 一、自身的理解與補充 二、其他參考鏈接 一、轉載:https://blog.csdn.net/u013215903/article/details/48091359 FFT是Fast Fourier Transform(快速傅里葉變換)的簡稱,這種算法可以減少計算DFT(離散傅里葉變換,關于此更詳細的說明見后文)的時間,大大提高了運算效…

win10+tensorflow import cv2 bug解決

https://blog.csdn.net/sinat_21591675/article/details/82595812

設計理念 : popup login 在前后臺

popup 意思是一個遮罩層頂在整個網頁最前方,在前臺設計是這樣的,當用戶想在那個界面登入時,就可以有一個遮罩層出現。 在employer或admin(后臺)操作界面是同個理念,在所有的界面都是有control panel為根節點…

input和raw_input

12345678910python 2#!/usr/bin/env python#coding:utf-8nameraw_input("plese input you name") print namepython3#!/usr/bin/env python#coding:utf-8nameinput("plese input you name") print name本文轉自 小小三郎1 51CTO博客,原文鏈接…

MAATLAB GUI——回調函數的設置(Callbacks)

目錄 1.回調函數創建步驟 1)命令窗口中輸入guide,創建一個新的GUI界面窗口

是什么時候開始學習gulp了

轉自:http://www.ydcss.com/archives/18 簡介: gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成&#xff1…

011——數組(十一)array_merge array_merge_recursive array_change_key_case

<?php /***/ //array_merge() 將多個數組合并&#xff0c;生成新數組。當鍵名相同時&#xff0c;后者覆蓋前者 /*$array1array(weburl>"bbs.blog.com",webname>"博客"); $array2array(db_hot>"localhost",db_user>"root&qu…

matlab GUI——按下按鈕在指定的坐標下繪制函數圖像

目錄 1.組件布局 2.回調函數設置 3.編寫回調函數 1.組件布局 2.回調函數設置 右鍵單擊plot按鈕——查看回調——call backs

【轉】【UML】使用Visual Studio 2010 Team System中的架構師工具(設計與建模)

Lab 1: 應用程序建模 實驗目標 這個實驗的目的是展示如何在Visual Studio 2010旗艦版中進行應用程序建模。團隊中的架構師會通過建模確定應用程序是否滿足客戶的需求。 你可以創建不同級別的詳細模型&#xff0c;并將它們彼此結合、測試然后發布到你的開發計劃里。 在這個實驗中…

C語言:指針的幾種形式二

一、const指針 1、const int* p和int const* p:兩者意義是相同的。指向的內容是只讀數據&#xff0c;不可以q改變&#xff1b;但是指向的地址可以改變。2、int* const p&#xff1a;必須先對指針初始化&#xff0c;而且指向的地址是只讀的&#xff0c;不可以再被改變&#xff1…

深度學習基礎(一)起源

目錄 一、DP的前世 1.perceptron 2.NN 3.DP 二、DP的基礎知識 1.convolution 2.padding 3.pooling 4.Flatten 5.fully connected 6.dropout 一、DP的前世 深度學習發展至今經歷頗為曲折&#xff0c;上世紀起源&#xff0c;火熱起來也是20世紀初的時候&#xff0c;具體時…

ANSYS經典界面中梁單元實例全解析

轉載鏈接&#xff1a;http://www.jishulink.com/content/post/361389 文中紅色部分為自己添加&#xff01;&#xff01;&#xff01; 轉載的文章中提到的梁單元截面是常用的工字形&#xff0c;那么要是不規則的截面形狀的話需要自己進行截面形狀繪制&#xff0c;具體可以參考…

ant的安裝和使用

1.ant的安裝 1.1 添加環境變量&#xff1a;ANT_HOMED:\software\ant\apache-ant-1.10.1 在path中添加&#xff1a;%ANT_HOME%\bin 1.2 測試是否安裝成功 在cmd中輸入ant&#xff0c;如果出現如下提示表示安裝成功 2.定義簡單的build.xml 2.1 創建HelloWord.java package test; …

深度學習之tensorflow (一) XORerr1 -修改

博客背景是學習《深度學習之TensorFlow》這本書籍中的作業&#xff0c;修改第七章的作業&#xff0c;把XOR-異或的錯誤代碼修改為正確的。 主要修改有三個地方&#xff1a; 隱藏層一的運算從sigmoid修改為add運算&#xff1b;輸出層的運算修改為sigmoid&#xff08;原來是什么…

可調用對象

# -*- coding: utf-8 -*- #python 27 #xiaodeng #可調用對象 #http://www.cnpythoner.com/post/306.html#定義&#xff1a; #許多python對象都是可調用的&#xff0c;即&#xff1a;任何通過函數操作符()來調用的對象。 #callable()是一個布爾函數&#xff0c;確定一個對象是否…

Ansys ——自定義不規則形狀梁截面

目錄 導讀: 1、問題描述 2.CAD繪制截面,導出.sat文件格式 (1)在三維建模工作空間下繪制截面

Language-Directed Hardware Design for Network Performance Monitoring——Marple

網絡監控困難 1、僅僅通過去增加特定的監控功能到交換機是不能滿足運營商不斷變化的需求的。&#xff08;交換機需要支持網絡性能問題的表達語言&#xff09;2、他們缺乏對網絡深處的性能問題進行本地化的可見性&#xff0c;間接推斷網絡問題的原因3、當前的交換機監控并沒有提…

深度學習基礎(四)優化函數(梯度下降函數)

梯度下降函數也就是優化函數&#xff0c;在神經網絡訓練過程最重要的函數。重要程度類似于調校對于汽車的重要性&#xff0c;搭建模型和參數設置等操作“造好了一輛汽車”&#xff0c;優化函數“調校”。因為汽車最終的操控性和加速性能等指標很大程度取決于調校&#xff0c;調…

ANSYS 簡支梁的約束

在ansys中&#xff0c;梁的定義都是通過梁截面和軸線進行定義的&#xff0c;不同的梁的區別在ansys中的體現僅在于約束的處理上不同 1.簡支梁的約束 假設簡支梁的梁軸線是x軸&#xff0c;可以繞z軸彎曲&#xff0c;則簡支梁的約束&#xff1a; 起始點&#xff1a;X、Y、Z、RO…