问题标签 [openquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3950 浏览

sql-server - 使用带参数的 OPENQUERY 执行存储过程

我有以下程序:

当我使用这一行执行时:

我收到一个错误,只是说error at line 9

我究竟做错了什么??

0 投票
3 回答
3407 浏览

tsql - SQL Server OpenQuery() 的行为与来自 TOAD 的直接查询不同

以下查询在使用 TOAD(使用本机 Oracle 驱动程序)直接针对 Oracle 11 运行时有效

如果从 SQL Server 2008 通过openquery(). SQL Server 有一个使用 Oracle Provider OLE DB 驱动程序到 Oracle 数据库的链接。

查询没有在合理的时间内返回,并且用户终止了查询。我不知道它最终是否会以正确的结果返回。

直接 TOAD 查询有效工作并且openquery()“从不”返回的版本是可重现的。

对 的小修改openquery()给出正确的有效结果:更改eff_endttrunc(eff_endt).

这很好,但似乎没有必要进行更改。

openquery()openquery()应该是通过的,那么TOAD和行为之间怎么会有区别呢?

我们关心的原因是因为我们经常使用 TOAD 直接访问 Oracle 来开发复杂的查询。一旦我们的查询功能和优化,我们将其转换为一个openquery()字符串,以便在 SQL Server 应用程序中使用。openquery()当我们知道它作为直接查询工作时,查询突然失败是非常严重的。然后我们必须通过反复试验寻找解决方法。

我想查看这两个场景的 Oracle 跟踪文件,但是 Oracle 服务器在另一个组织内,我们没有得到 Oracle DBA 的合作。

有谁知道任何驱动程序,或蟾蜍,或???可能导致差异的问题?有没有办法消除这个问题,使两种方法总是给出相同的结果?

0 投票
0 回答
1884 浏览

sql-server - SQL Server,打开查询的链接服务器错误

我无法弄清楚为什么我在打开的查询行上收到此错误:

“在 sys.servers 中找不到服务器 'Server_Name'。验证是否指定了正确的服务器名称。如有必要,请执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers。”

当我部分运行代码时,它可以工作......

0 投票
1 回答
1246 浏览

sql-server - IBM db2 是来自 MS Sql Server 的 openquery 是件坏事吗?可以完全预防吗?

我们的 IT 团队告诉我,我们不能再在 MS Sql Server 中使用 Openquery 命令了。他们声称可以减慢服务器速度,因为每个查询都需要完整的表加载,并且所有查询都会减慢它的速度,等等。

我对此感到有些困惑,因为我认为 OpenQuery 命令类似于 Access 中的“直通”查询。查询转到 IBM 服务器,该服务器执行命令并将结果发送回 SQL Server。我在 Internet 上通读了 OpenQuery,但我读过的任何内容都没有让我相信它会加载或发送整个表,然后 SQL Server 会过滤结果。

我认为他们有可能锁定 DB2 服务器并阻止链接服务器访问 SQL Server,但是对于我未来的知识,有人可以解释在连接到 IBM DB2 时使用 OpenQuery 的任何危险吗?

谢谢,

0 投票
1 回答
852 浏览

sql - ##TempTable 出错

我想##TempTable在我的 sql Server 查询中使用从 oracle db 获取值,但总是出错,错误说

这是我使用的代码##TempTable

我很困惑,我应该##TempTable像往常一样声明查询来创建类似的创建表还是通过该查询自动创建临时表?因为我总是出错

0 投票
1 回答
1641 浏览

sql - Oracle nvarchar2(4000) 列不会导入 SQL Server 2008 R2

我正在尝试在 SQL Server 2008 R2 上运行它。

这以前可以工作。当在 Oracle 端A.Column1更改为时,我们开始面临问题。nvarchar2(4000)

现在它失败并出现以下错误:

无法为“linked_oracle_server”的 OLE DB 提供程序“OraOLEDB.Oracle”创建列访问器

我玩了一下,如果我这样做的SUBSTR(A.Column1,1,2000)话!如果我将其更改为SUBSTR(A.Column1,1,2001)它会给出与上述相同的错误。这是否与NVARCHARSQL Server 端的最大限制为 4000 有关?NVARCHAR2(2000)即使NVARCHAR(MAX)能够在 SQL Server 上支持更大的数据,是否也无法导入更大的 Oracle 列?

0 投票
1 回答
4477 浏览

sql-server - 在 tsql 存储过程中使用 OPENQUERY 的原因是什么?

我目前正在审查一些在数据库上运行存储过程的作业。所有这些存储过程都连接到链接服务器。我对这个功能不太熟悉。我目前正试图确定为什么使用这些而不是普通查询,因为我正在运行的查询似乎正在提取数据。

我读了这个,这是 MSDNs 对 openquery 的解释。:

http://technet.microsoft.com/en-us/library/ms188427.aspx

我也读了这个,这是一个 stackoverflow 链接,讨论为什么不在本地服务器上使用它。:

为什么在本地服务器上使用 OPENQUERY 不好?

我的问题是,当存储过程需要链接服务器的嵌入式凭据时,您是否基本上只使用它?还是有更多我不知道的使用 OpenQuery 的原因?

0 投票
1 回答
5540 浏览

sql-server - 如何在 sp_executesql 中使用 OPENQUERY?

我正在尝试验证链接服务器上是否存在作业编号并返回一个变量(@JobExists),指示它是否存在(1 表示是,0 表示否)。

为此,我尝试将 OPENQUERY 与 sp_executesql 一起使用,因为我必须传入作业编号的参数。我已经尝试了下面的代码,但得到错误“程序需要'ntext/nchar/nvarchar'类型的参数'@statement'。出于测试目的,我声明并设置了变量@JobNumber。

我在这里阅读了 sp_executesql:http ://technet.microsoft.com/en-us/library/ms188001.aspx 我也进行了各种搜索,但没有找到任何适合我的答案。

有什么我想念的吗?

0 投票
0 回答
1082 浏览

c# - 无法查询链接服务器

我无法使用 OpenQuery 通过 C# 代码查询链接的 Oracle 服务器,但是我可以使用 4 部分名称或 OpenQuery 从 Sql Server 本身查询服务器。使用代码时出现以下错误:

System.Data.SqlClient.SqlException:链接服务器“LinkedServer”的 OLE DB 提供程序“OraOLEDB.Oracle”报告错误。提供商没有提供有关该错误的任何信息。无法为链接服务器“LinkedServer”初始化 OLE DB 提供程序“OraOLEDB.Oracle”的数据源对象。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream , BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 在 System.Data.SqlClient.SqlDataReader.get_MetaData() 在 System.Data。

我的代码如下所示:

0 投票
2 回答
961 浏览

mysql - Openquery 的特殊语句

我想将数据从 MS SQL Server 数据库传输到 MySQL 数据库。因此,我在 MS SQL 中添加了一个链接服务器,以便我可以使用 Openquery 将数据插入 MySQL 数据库。我想优化数据传输的性能,我找到了提高 MySQL 中数据加载性能的指南。

一项优化包括禁用 AUTOCOMMIT 模式,但是我无法使用 Openquery 做到这一点。

我尝试了两种方式:

我得到了:

无法处理对象“SET autocommit=0”。链接服务器“MYSQL”的 OLE DB 提供程序“MSDASQL”指示该对象没有列或当前用户对该对象没有权限。

是否可以通过openquery执行这样的语句?

谢谢,米凯尔