C# 使用程序集从SQL DB检索表数据

C# 使用程序集从SQL DB检索表数据,c#,sqlclr,C#,Sqlclr,好的,使用C#我正在创建一个DLL,我正在SSMS中使用它并将其作为程序集附加以执行一些任务,我可以创建/使用DLL,但是我在从DLL访问数据库以拉入数据时遇到问题。如果我用C#创建一个表单来访问数据,我会这样做 public class Gaps { public static void Find_Gaps1() { SqlConnection connection = new SqlConnection("Server = DIS; Datab

好的,使用C#我正在创建一个DLL,我正在SSMS中使用它并将其作为程序集附加以执行一些任务,我可以创建/使用DLL,但是我在从DLL访问数据库以拉入数据时遇到问题。如果我用C#创建一个表单来访问数据,我会这样做

  public class Gaps
{

    public static void Find_Gaps1()
    {
        SqlConnection connection = new SqlConnection("Server = DIS; Database = dyn35;  Integrated Security = true");
        DataTable FinishDT = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter();
        String SQLstatement = "SELECT [new_cust] FROM [Dyn35].[dbo].[Account] WHERE [new_cust] IS NOT NULL AND ISNUMERIC([new_cust]) = 1 ORDER BY [new_cust]";
        connection.Open();
        SqlCommand command = new SqlCommand(SQLstatement, connection);
        command.CommandTimeout = 0;
        adapter.SelectCommand = command;
        adapter.Fill(FinishDT);
        connection.Close();
    }

}

然后我可以轻松地操作数据表中的数据。我不能作为DLL执行此操作,因为它会抛出一个错误,说明我不能。有人知道如何使用t-sql将查询中的数据发送到DLL吗?或者给我指出正确的方向?我正在创建的存储过程位于我试图访问的同一个数据库中。

是的,我相信这是一个凭据问题,jdweng,一旦我将sql连接上下文连接设置为true,它就能够正常运行了

SqlConnection connection = new SqlConnection("context connection = true");

您很可能有凭证问题。dll是否在生成代码的同一台机器和同一个用户帐户上使用?两件事中的任何一件都是错误的1)用户不同,没有访问数据库的权限2)您使用不同版本的Net在不同的计算机上安装了代码。当网络应用程序安装在另一台计算机上时,部署计算机上必须安装相同版本的网络,或者需要使用setup.exe发布和安装。Net库使用Windows dll,setup.exe在部署计算机中更新Windows dll,以便Net应用程序运行。这根本不是凭据问题<代码>“context connection=true”仅适用于SQLCLR程序集,用于连接到部署程序集的服务器。你没有说你有一个SQLCLR程序集。您发布的代码也不应在SQLCLR程序集中使用。在SQLServer的内存中加载一些数据会浪费大量内存。考虑到服务器已经缓存了数据,这会导致加载数据两次而没有任何好处。您想做什么,为什么要使用SQLCLR?