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

如何将SSIS中CSV下载的C#代码移至SQL Server 2017存储过程执行?

将SSIS中的C#下载CSV代码嵌入SQL Server 2017存储过程的方法

要把你的C#下载逻辑搬进SQL Server存储过程,核心是利用SQL CLR集成,以下是完整实操步骤:

1. 开启SQL Server CLR集成

默认情况下SQL Server禁用CLR,先执行以下语句开启:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'clr enabled', 1;
RECONFIGURE;

2. 调整C#代码为CLR兼容格式

把原SSIS中的C#代码改成类库项目,满足CLR存储过程的要求:

  • 类设为public,方法设为public static
  • 给方法添加[Microsoft.SqlServer.Server.SqlProcedure]特性
  • 保留原有的下载逻辑,确保处理网络访问和文件IO的权限需求

示例调整后的C#代码:

using System;
using System.IO;
using System.Net;
using Microsoft.SqlServer.Server;

public class FileDownloader
{
    [SqlProcedure]
    public static void DownloadCsvFromUrl(string sourceUrl, string targetFilePath)
    {
        // 替换成你原有的下载逻辑,可添加身份验证、超时等扩展
        using (WebClient client = new WebClient())
        {
            client.DownloadFile(sourceUrl, targetFilePath);
        }
    }
}

3. 编译C#代码为DLL

用Visual Studio编译成.NET Framework类库(SQL Server 2017支持.NET Framework 4.6.1及以上版本,编译时选择对应版本),得到FileDownloader.dll文件。

4. 在SQL Server中创建程序集

将编译好的DLL部署到SQL Server,根据需求选择权限集:

  • 仅需网络+本地IO:用EXTERNAL_ACCESS
  • 需要调用非托管代码等高级权限:用UNSAFE

执行以下T-SQL创建程序集:

-- 若使用EXTERNAL_ACCESS,先设置数据库为TRUSTWORTHY(生产环境建议用证书签名替代,更安全)
ALTER DATABASE YourDatabaseName SET TRUSTWORTHY ON;

CREATE ASSEMBLY FileDownloaderAssembly
FROM 'C:\Your\DLL\Path\FileDownloader.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;

5. 创建CLR存储过程

基于程序集创建存储过程,映射到C#方法:

CREATE PROCEDURE dbo.DownloadCsv
    @SourceUrl NVARCHAR(2048),
    @TargetFilePath NVARCHAR(2048)
AS EXTERNAL NAME FileDownloaderAssembly.FileDownloader.DownloadCsvFromUrl;

6. 测试存储过程

调用存储过程验证功能:

EXEC dbo.DownloadCsv 
    @SourceUrl = 'https://your-datasource-url/target.csv',
    @TargetFilePath = 'C:\Local\Save\Path\downloaded_file.csv';

7. 每日自动调度(可选)

如果需要每日执行,创建SQL Server代理作业,步骤选择“Transact-SQL脚本”,调用上述存储过程即可。

关键注意事项

  • 确保SQL Server服务账户拥有目标目录的写入权限,以及访问数据源URL的网络权限
  • TRUSTWORTHY ON会降低数据库安全性,生产环境优先用证书签名程序集替代
  • 若原C#代码依赖第三方库,需将依赖DLL一同部署为SQL Server程序集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:10:35