gpt4 book ai didi

sql-server - 在用户函数内动态访问来自另一个数据库的表

转载 作者:行者123 更新时间:2023-12-03 18:48:44 25 4
gpt4 key购买 nike

我在 SQL Server 中有一个用户定义的表函数,它聚合来自多个表的数据,包括另一个数据库的几个表。这是通过在查询中硬编码数据库名称完成的,但我们希望使数据库名称可配置(因为我们的数据库通常与其他应用程序的数据库共享服务器)。

我尝试使用存储在配置表中的数据库名称在函数内部构造一个动态查询字符串,但是:

  1. 当我尝试 exec(@sqlStatement) 时,SQL Server 说函数内部不允许执行字符串。
  2. 然后我尝试了 exec sp_executesql @sqlStatement 并创建了函数,但是当您执行它时,SQL Server 说在函数内部您只能运行扩展函数和过程。

所以问题是:是否可以创建一个函数或存储过程来访问另一个数据库中的表,而无需在数据库名称不同时重新创建函数?

TIA。

最佳答案

我真的建议您使用固定的数据库名称,这样您就可以避免使用动态 sql 的整个问题。您不能想出像这样的唯一数据库名称:your_company_name_XYZyour_company_name_ABC 吗?如果这不是一个选项,您将执行大量动态 SQL,您应该阅读 The Curse and Blessings of Dynamic SQL by Erland Sommarskog

您在问题中提到的所有限制都是对 SQL Server 功能的限制。您可以毫无问题地在存储过程中生成和执行动态 SQL。

关于sql-server - 在用户函数内动态访问来自另一个数据库的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com