【发布时间】:2021-07-01 20:08:03
【问题描述】:
好吧,所以我使用 C# 创建了一个我在 SSMS 中使用的 DLL 并将其作为程序集附加以执行一些任务,我可以很好地创建/使用 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 吗?或者指出我正确的方向?我正在创建的存储过程位于我尝试访问的同一个数据库中。
【问题讨论】:
-
您很可能遇到了凭据问题。 dll 是否在构建代码的同一台机器和同一用户帐户上使用?两件事之一是错误的 1) 用户不同并且无权访问数据库 2) 您在具有不同版本的 Net 的不同机器上安装了代码。当 Net 应用程序安装在另一台机器上时,相同版本的 Net 必须在部署机器上,或者您需要使用 setup.exe 发布和安装。 Net 库使用 Windows dll,setup.exe 更新部署机器中的 windows dll,因此 Net 应用程序将运行。