Sql server 是否可以将sql clr函数重写为sql存储过程?

Sql server 是否可以将sql clr函数重写为sql存储过程?,sql-server,stored-procedures,azure-sql-database,user-defined-functions,sqlclr,Sql Server,Stored Procedures,Azure Sql Database,User Defined Functions,Sqlclr,我在项目中使用sql clr程序集和sql clr用户定义函数。例如: [SqlFunction] public static SqlString InsertCampaignRecipients(SqlString url) { var rowData = string.Empty; using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new S

我在项目中使用sql clr程序集和sql clr用户定义函数。例如:

[SqlFunction]
public static SqlString InsertCampaignRecipients(SqlString url) 
{
    var rowData = string.Empty;
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
        var response = client.GetAsync(new Uri(url.Value)).Result;

        if (response.IsSuccessStatusCode)
        {
            var result = response.Content.ReadAsStringAsync().Result;

            if (result.IndexOf(@"""Exception"":null}") > 0) //success
            {
                rowData = "success";
            }
            else
            {
                rowData = string.Empty;
            }
        }
        else
        {
            rowData = string.Empty;
        }
    }
    return rowData;
}
但我想在clr不支持的Azure上迁移。
解决办法是什么?是否可以将sql clr函数重写为sql存储过程或其他内容?

因此您希望直接从T-sql执行HTTP请求。那是不行的,对不起

目前,Azure SQL数据库不支持SQLCLR(甚至不支持
SAFE
程序集)。假设您在适当的上下文中使用SQLCLR来执行T-SQL中无法执行的操作,那么不,在Azure SQL数据库中没有等效项。然而,即使Azure SQL数据库再次支持SQLCLR(从2014年底到2016年4月中旬,它支持SQLCLR的时间刚刚超过18个月),它也不太可能支持执行网络或文件系统等外部请求。因此,即使在Azure SQL数据库允许SQLCLR程序集的期间,问题中的web请求仍然不受支持


这种方法在新版本上很可能不起作用,但我不能肯定。

一种打开http客户端的方法?不,我认为在存储过程中能够做到这一点将是一件可怕的事情。。。。但是,在SQL CLR函数中也做了一件可怕的事情:)这听起来像是你的应用程序服务器应该做的事情……为什么你把代码标记为[SqlFunction]。代码与访问数据库无关。代码正在对正在访问数据库的服务器执行Http请求。@jdweng OP将代码作为SQLCLR程序集(.SQL server内部的NET代码)运行,并使用
SqlFunction
对该方法进行赋值,因此该方法被创建为SQL UDF。SQL server是否有Http请求方法?不那么为什么要标记该方法呢?在迁移到Windows Azure SQL数据库时,对于具有用户定义的CLR类型的数据库,是否有其他选择?