You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure SQL Server中执行C#代码并创建自定义计算列?

在Azure SQL Server中执行C#代码及创建计算列方案

一、Azure SQL Server中运行C#代码的方式

Azure SQL Server支持通过CLR集成运行.NET代码(包括C#),具体步骤如下:

  • 先启用CLR集成:
    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    sp_configure 'clr enabled', 1;
    RECONFIGURE;
    
    若数据库为部分信任模式,还需设置信任级别:
    ALTER DATABASE YourDatabaseName SET TRUSTWORTHY ON;
    
  • 将C#代码编译为DLL,在SQL Server中创建程序集:
    CREATE ASSEMBLY UtilAssembly
    FROM 'C:\Path\To\Your\Util.dll'
    WITH PERMISSION_SET = SAFE; -- 可根据代码需求选择SAFE/EXTERNAL_ACCESS/UNSAFE
    
  • 基于程序集创建SQL可调用的函数、存储过程或触发器,以此调用C#逻辑。

二、用C#代码创建MaskedID计算列的具体步骤

要实现通过SELECT ID, MaskedID FROM dbo.Product查询带掩码的ID,需要先将你的C#代码适配CLR规范,再部署为SQL函数,最后用该函数定义计算列:

1. 修改C#代码适配CLR规则

要让C#方法能被SQL调用,需添加SqlFunction属性,并使用SQL兼容的数据类型:

using System;
using Microsoft.SqlServer.Server; // 必须引入此命名空间

public class Util {
    [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true)] 
    // 标记为确定性函数是持久化计算列的要求(相同输入返回相同输出)
    public static string Mask(long id) {
        // 此处替换为你的复杂掩码逻辑,示例保留原结构
        var maskedId = $"do-something-with-{id}";
        return maskedId;
    }
}

2. 编译并部署CLR函数

  • 将上述代码编译为DLL文件(比如Util.dll)。
  • 在Azure SQL Server中创建程序集和对应SQL函数:
    -- 创建程序集
    CREATE ASSEMBLY UtilAssembly
    FROM 'C:\Path\To\Util.dll'
    WITH PERMISSION_SET = SAFE;
    
    -- 创建可被SQL调用的标量函数
    CREATE FUNCTION dbo.MaskId(@id bigint)
    RETURNS nvarchar(100) -- 根据实际返回值长度调整
    AS EXTERNAL NAME UtilAssembly.Util.Mask;
    
    若使用Azure SQL Database,无法直接读取本地文件,需将DLL转为十六进制字节流后创建程序集,可通过PowerShell命令转换:[System.BitConverter]::ToString([System.IO.File]::ReadAllBytes("Util.dll")).Replace("-", ""),再将生成的十六进制字符串填入FROM后。

3. 创建持久化计算列

完成函数部署后,即可用它定义计算列:

ALTER TABLE dbo.Product
ADD MaskedID AS dbo.MaskId(ID) PERSISTED;

此时执行SELECT ID, MaskedID FROM dbo.Product就能得到带掩码的ID列了。

注意事项

  • 若你的掩码逻辑包含随机数、当前时间等非确定性操作,需去掉PERSISTED关键字,使用非持久化计算列。
  • 部分Azure SQL Database层级对CLR集成有限制,需确认你的数据库层级支持该功能。

内容的提问来源于stack exchange,提问作者Mario Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:01:09