0

根据我在 Internet 上找到的示例,我编写了以下 C# 代码,用于在 MS SQL Server 2008 中实现 CLR 存储过程:

public class Class1
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void CountStringLength(string inputString)
    {
        SqlContext.Pipe.Send(inputString.Length.ToString());            
    }
}

此过程将字符串作为参数并输出字符串中的字符数。

我一直在编写一些从 SQL 中检索数据的代码;检索数据的方式没有什么特别之处:它与 SQL 服务器建立连接,选择数据,然后关闭连接。我想让这段代码在我的 SQL 服务器上的存储过程或触发器中运行。

我想我可以使代码运行与现有 SQL 代码完全相同:连接到 SQL 服务器,选择数据,然后关闭连接。但是,一旦代码在 SQL 服务器本身上运行,这就没有意义了!为什么我希望在 SQL 服务器上运行的代码使服务器连接到自身?!?!

我正在尝试做的事情有最佳实践吗?我可以使用用于执行存储过程的相同连接在我的代码中选择行吗?

4

1 回答 1

1

我在这里找到了答案:http ://technet.microsoft.com/en-us/library/ms131053.aspx

CLR 过程运行的连接称为“上下文连接”,它的使用如下:

using(SqlConnection connection = new SqlConnection("context connection=true")) 
{
    connection.Open();
    // Use the connection
}

我想知道为什么你必须“打开”连接?我认为连接已经打开,因为它正在执行正在运行的过程。

也密切相关: http: //msdn.microsoft.com/en-us/library/938d9dz2 (v=vs.90).aspx

于 2013-09-03T16:38:27.047 回答