在 SQL Server 中远程调用表值函数的解决方法存在更多问题

2023-11-26

我有一个包含一组参数的查询,需要使用不同的参数多次运行,因此我将其包装在表值函数中。

该表值函数需要从远程服务器调用。不幸的是,调用在链接服务器上失败并出现错误:

Msg 4122, Level 16, State 1, Line 29
Remote table-valued function calls are not allowed.

Microsoft 承认“远程调用表值函数”是 SQL Server 2008 中未包含的功能。请参阅:http://connect.microsoft.com/SQLServer/feedback/details/276758/remote-table-valued-function-calls-are-not-allowed

我发现了一种使用 OPENQUERY 语法的解决方法,它允许查询在远程服务器上本地运行,然后返回结果集。看:http://social.msdn.microsoft.com/Forums/en/transactsql/thread/7a6e4aa1-630b-4ad5-aee5-15139987adbd

不幸的是,这个解决方法需要一个解决方法,因为它需要一个字符串作为参数,这意味着您不能使用 OPENQUERY 语法传递变量,甚至不能在其中连接字符串,就像如果您想包含您想要的变量一样想要传递给远程表值函数。解决方法是使用动态 SQL 显式构建 OPENQUERY 查询,确保将正常字符串传递给它。看:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/0847ad24-0dfe-4ae1-9788-5516c7830f40/

然而,由此产生了另一个问题。即使在确保所有引号、双引号和四引号都正确嵌入以便整个内容可以通过 exec sp_executesql 传递之后,仍然存在问题:

当查询最终调用表值函数时,我收到错误:

OLE DB provider "SQLNCLI10" for linked server "MY_REMOTE_SERVER_NAME" returned message "Deferred prepare could not be completed.".
Msg 7416, Level 16, State 1, Procedure MyTableValuedFunctionName, Line 22
Access to the remote server is denied because no login-mapping exists.

我不确定为什么会收到此错误,因为我的用户名存在映射,如果我只是将表值函数替换为实际表,它会正常返回结果。无论是否使用 sp_executesql 执行,OPENQUERY 语句都会出现问题,正如我所说,它仅在调用表值函数时出现。

有什么想法如何解决这个问题吗?


您是否尝试过这种变体 - 基本上您将调用推送到远程盒子上本地发生的函数:

EXEC REMOTE_SERVER_NAME.db_name..sp_executesql N'SELECT * 
  FROM dbo.MyTableValuedFunctionName();';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 中远程调用表值函数的解决方法存在更多问题 的相关文章

  • PostgreSQL 错误 42501:架构权限被拒绝

    我正在 ASP NET 中构建一个用户注册系统 使用 PostgreSQL 数据库来维护用户信息 作为注册过程的一部分 用户会收到一条确认消息 他们必须单击其中的链接来验证其电子邮件地址 然后 他们将进入一个可以创建密码的页面 一旦用户提供
  • 如何从代码隐藏运行存储过程(带参数 - 有返回值)?

    如何使用存储过程 带参数 具有类型的返回值int 从代码后面 我的存储过程如下所示 ALTER Procedure dbo sp Noskheh SumOfTotalPay Co ID int AS Declare Sum bigint B
  • 如何使用 SQL Server 2008 执行多个 CASE WHEN 条件?

    我想做的是对同一列使用多个 CASE WHEN 条件 这是我的查询代码 SELECT Url p ArtNo p Description p Specification CASE WHEN 1 1 or 1 1 THEN 1 ELSE 0
  • Amazon s3 – 403 禁止使用正确的存储桶策略

    我正在尝试使用以下存储桶策略 使存储在 s3 存储桶中的所有图像可供公开读取 Id Policy1380877762691 Statement Sid Stmt1380877761162 Action s3 GetObject Effect
  • 如何将 SQL Server 中同一表中的一列插入到另一列中

    我需要将一列的数据插入到同一个表中的另一列中 谁能告诉我这个怎么写 Thanks UPDATE table SET col 2 col 1
  • 如何组织和管理ACL?

    采取Zend ACL http framework zend com manual en zend acl html作为我的例子 我想知道应该如何为项目组织它 当然 这个例子非常漂亮和简洁 但真实的网站要复杂得多 acl new Zend
  • <表值函数> 不是可识别的内置函数名称

    我收到此错误 消息 195 第 15 级 状态 10 第 1 行 fnParseName 不是可识别的内置函数名称 对于这个查询 SELECT fnParseName DOCTORFIRSTNAME DOCTORLASTNAME FROM
  • 如何将表移动到 T-SQL 中的架构中

    我想使用 T SQL 将表移动到特定架构中 我正在使用 SQL Server 2008 ALTER SCHEMA TargetSchema TRANSFER SourceSchema TableName 如果你想搬家all表到一个新的模式
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • 在 SQL Server 中获取一周的第一天

    我试图按周对记录进行分组 将聚合日期存储为一周的第一天 然而 我用于四舍五入日期的标准技术似乎无法在几周内正常工作 尽管它可以在天 月 年 季度和我应用的任何其他时间范围内正常工作 这是 SQL select start of week d
  • 如何在sql server 2008R2中将单个单元格拆分为多个列?

    我想将每个名称拆分为各个列 create table split test value integer Allnames varchar 40 insert into split test values 1 Vinoth Kumar Raj
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 如何在浏览时检查客户端是否安装了 SQLNCLI10 提供程序?

    我有一个 C 网站 允许客户端从其 PC 直接连接到远程 SQL Server 数据库 通过使用第 3 方 ActiveX 控件绕过 Web 服务器 我最初使用的是SQLOLEDB提供商并且运行良好 客户端位于内部网络中 使用 Window
  • 在 nhibernate 标准中使用内置的 sql“转换”函数

    我想利用 SQL Server 2008 中的 Convert 函数 以便可以在 DateTime 列上进行搜索 建议的 SQL 看起来像这样 SELECT list of fields FROM aTable WHERE CONVERT
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • SQL Server 2008:如何使用 powershell 获取“消息”选项卡(在 Management Studio 中)输出

    我在用invoke sqlcmd管理我的数据库 它工作得很好 我将 Management Studio 中 结果 选项卡的输出保存到日志文件中 当我做一个BACKUP DATABASE 输出是在 消息 选项卡上完成的 我想将其保存在日志文件
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • 更新每组单行

    的背景 我有一个临时表 其中包含唯一的 rowID OrderNumber 和 guestCount 等信息 RowID 和 OrderNumber 已存在于该表中 并且我正在运行一个新查询来填充每个 orderNumber 缺少的 gue
  • SSRS仅显示第一行

    我在 SSRS 中有一个非常基本的报告 显示数据网格 查询正确返回多行 但报告仅显示第一行 查询就像 SELECT FROM 一样简单 我没有任何特殊的格式 并且 tablix 位于报告的详细信息部分 而不是意外的页眉或页脚 我还可以检查什
  • 当您执行“SELECT *”时,SQL Server 如何确定列的顺序?

    当您执行以下操作时 SQL Server 如何确定列的顺序SELECT 我知道 订购依据 对于订购至关重要data 但我预计列名保持一致 注意 我的代码是not取决于返回列的实际顺序 我只想知道 SQL Server 如何决定对列名进行排序

随机推荐

  • 多核使用、线程、线程池

    我有一些关于多线程编程和多核使用的问题 我特别想知道操作系统和 或框架 这是 NET 如何处理频繁使用的核心 这是我关于线程的问题 When a new thread is spawned what is the algorithm for
  • 为什么使用 DllImport 属性而不是添加引用?

    我见过几个这样的例子 DllImport user32 dll static extern bool TranslateMessage In ref Message lpMsg DllImport user32 dll static ext
  • 在 Tomcat 与 Websphere 上部署时有什么区别?

    如果我要在 Tomcat 和 Websphere 上部署应用程序 我需要考虑哪些事项 如果在一个应用程序服务器中进行开发与在另一个应用程序服务器中进行开发 我是否必须以不同的方式开发 Java 代码 Edit 我将把人们从网站引导到一个进行
  • 如何设置每月重复一次的闹钟

    目前我正在开发一个每月设置提醒的应用程序 我无法为我的警报管理器提供正确的重复间隔 请提供有关相同的信息 这是我的代码 但这不会对 2 月或有 30 天的月份发出警报 另请提供设置每年重复警报的代码 repeatTime AlarmMana
  • 我应该为compileSdkVersion、minSdkVersion和targetSdkVersion设置什么?

    我担心我应该设置什么compileSdkVersion minSdkVersion and targetSdkVersion to be 我首先担心的是 如果我设置compileSdkVersion目前最新的是23 旧设备可以运行吗 我如何
  • 将时间转换为秒

    将 24 小时时间转换为秒的最佳方法是什么 以便可以将其用于比较 if 语句 function HourMinuteToDecimal hour minute t explode hour minute return t 0 60 t 1
  • 正则表达式匹配 url 不包含给定的字符串集

    我需要匹配所有不包含其中任何一个的网址 admin or page 我将在 iirf ini 文件中使用它作为重定向规则 支持 htaccess 语法 我怎样才能做到这一点 使用负前瞻 使用正则表达式或 a b admin page 这就是
  • 如何跳出每个循环的外层

    我有以下场景 each array function each array1 function if condition 怎样才能突破外在each当我的条件在内部计算为 true 时循环each loop each array functi
  • 如何验证整数输入[重复]

    这个问题在这里已经有答案了 例如我有代码 include
  • 有哪些技术/工具可以发现文本块中的常见短语?

    假设我有 100000 封电子邮件正文 其中 2000 封包含任意常见字符串 例如 the Quick Brown Fox Jumps Over the Lazy Dog 或 Lorem ipsum Dolor Sit Amet 我可以 应
  • gcc精度错误?

    我只能假设这是一个错误 第一个断言通过 而第二个断言失败 double sum 1 4 0 6 3 assert sum 1 4 0 6 3 double t1 4 0 t2 6 3 double sum 2 t1 t2 assert su
  • 使用自定义字体时出现问题 - “无法制作原生字体”

    我正在尝试使用在互联网上找到的字体 但问题是我得到的 FC 带有 无法制作原生字体 这是我的 ListVIew 的 getView 中的代码 holder tv SuraName TextView convertView findViewB
  • 数组值之间的百分比

    我正在寻找一种简单的方法来使用 python 查找数据在特定区间内的百分比 考虑浮点值的数组 X 我想做一些类似于分位数的事情 X quantile np linspace 0 1 11 但是 例如 我想知道哪些百分比的值在 10 和 10
  • BadPaddingException 加载 p12 密钥库

    当执行以下代码时 KeyStore ks KeyStore getInstance storeType ks load new FileInputStream keyStore storePassword toCharArray KeyMa
  • 当我将鼠标悬停在 CSS 网格框上时,为什么只有部分 CSS 网格框会展开?

    我对 CSS 网格很陌生 但我想尝试一下 我有一个带有 3x3 盒子的网格 当我将鼠标悬停在一个框上时 它应该超出整行 但这不起作用 当我将鼠标悬停在1它完全填满了屏幕 当我将鼠标悬停在3我的屏幕开始闪烁并且无法工作 container d
  • 匹配美式键盘上所有字符的正则表达式

    我正在寻找一个正则表达式模式来匹配美国键盘上找到的所有字符 现在 我只匹配字母 数字和空格 所以看起来像 a zA Z0 9 s 但现在我需要它匹配键盘上找到的任何字符 如果字符串也为空 我什至希望它匹配 x00 x7F for 0 n A
  • 如何编写一个通用的可变参数 lambda 来丢弃其参数?

    我想编写一个 lambda 它通过通用引用接受任意数量的参数并完全忽略它们 显而易见的方法是使用可变参数通用参数包的语法并省略参数名称 auto my lambda auto return 42 这工作正常 使用 gcc 4 9 2 直到我
  • 什么是实物签名约束

    如果我检查kind of Maybe我明白了 gt k Maybe Maybe gt 现在 如果我检查那种Monad我明白了 gt k Monad Monad gt gt Constraint What is Constraint那里以及为
  • 如何从 Google App Engine High Replication 数据存储区导出数据?

    我正在考虑在一个项目中使用 Google App Engine 并且希望确保在我决定离开 GAE 或 GAE 关闭 时能够导出所有数据 我搜索的有关从 GAE 导出数据的所有内容都指向https developers google com
  • 在 SQL Server 中远程调用表值函数的解决方法存在更多问题

    我有一个包含一组参数的查询 需要使用不同的参数多次运行 因此我将其包装在表值函数中 该表值函数需要从远程服务器调用 不幸的是 调用在链接服务器上失败并出现错误 Msg 4122 Level 16 State 1 Line 29 Remote