UDF 在 SQL Server 中调用外部 C++ 代码

Posted

技术标签:

【中文标题】UDF 在 SQL Server 中调用外部 C++ 代码【英文标题】:UDF calling external C++ code inside SQL Server 【发布时间】:2011-06-02 15:21:23 【问题描述】:

假设我在 SQL Server 2008 中有一个 UDF:

Create function dbo.ReadXml (@xmlMatrix xml) returns table
as
return
( select
   --SOME C++ CODE
)
go
是否可以在 UDF 中添加 c++ 代码或调用 c++ 函数?

【问题讨论】:

【参考方案1】:

如果此 C++ 函数已编译并安装为 extended stored procedure,则为 Onyl。 但是扩展存储过程已被弃用,很快就会被删除。

所以你唯一可靠的选择是写一个CLR function。它可以是调用外部 C++ dll 的 C# CLR 函数,也可以是直接包含您的代码的托管 C++ CLR 函数。

【讨论】:

好的,所以步骤是: - 有一个 C# CLR 函数 - 这个 C# 函数调用外部 C++ dll.... C# 将如何调用 C++ dll?我不太明白那一步... @cMinor 通过使用DllImportAttribute。 正如您所回答的,您推荐什么,C# CLR 函数还是托管 C++ 函数? @cMinor 任何对您来说更容易使用/维护的东西。对我来说,拥有一个单独的 C++ dll 会更容易,因为我对托管 C++ 太不熟悉了。但是,拥有一个托管 C++ 程序集的优点是需要最低权限 (SAFE),因为您不会尝试从外部加载某些内容。

以上是关于UDF 在 SQL Server 中调用外部 C++ 代码的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中调用 SQL Server 用户定义函数 (UDF)

从 VB Access 调用 UDF(Sql server)“表达式中的未定义函数 <函数名>”

SQL Server用户自定义函数(UDF)

SQL Server:如何在视图中查找未使用的字段

如何在 SQL Server 中将拆分函数转换为内联表值 udf?

使用外部 UDF 库运行 BigQuery Standard SQL