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.mzph.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…