请求的操作需要sql clr context

时间:2012-03-07 23:12:40

标签: c# mysql

从cs文件连接到sql时出错。我试图在c#中创建CLR函数,而不使用任何IDE。我需要访问数据库才能获得一些价值。以下是用c#连接到我的数据库的代码。

using (SqlConnection conn = new SqlConnection("context connection=true"))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand(
        "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn);
    SqlContext.Pipe.ExecuteAndSend(cmd);
    return (int)cmd.ExecuteScalar();

}

但是我收到以下错误:

“请求的操作需要SqlClr上下文,该上下文仅在Sql Server进程中运行时可用”。如果我使用管道我不知道如何将其转换为int值。任何建议请....

1 个答案:

答案 0 :(得分:1)

根据this Blog帖子,尝试这样,SQLConnection不在使用中。 SQLCommand是Disposable,应该在使用中。

SqlConnection conn = new SqlConnection("context connection=true") ;
using(SqlCommand cmd = new SqlCommand( 
        "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn))
{ 
    conn.Open(); 
    return (int)cmd.ExecuteScalar();      
} 

我先写了下面的内容,但我认为以上就是答案,如果相关,我会离开。


ContextConnection是调用CLR函数的SQL正在使用的现有开放连接的连接。 要使用带有ContextConnection的SQL CLR函数,必须从SQL语句中调用它。

<击>

e.g。 (其中CLRConvert是我的CLR函数,它连接回我的数据库并执行查询并转换内容。)

select dbo.CLRConvert(Data) from MyTables;

如果您需要在此处之外拨打电话,则需要正确的connection string

<击>