c# - windows服务打不开sql连接

标签 c# visual-studio-2012 service windows-services sqlconnection

我有一个简单的 Windows 服务,在这个服务中,我试图在一个计时器 block 中连接到一个 sql server(我试图在 onStart 方法中只这样做一次 -> 相同的结果)。

目前我正在尝试使用以下代码执行选择:

using (SqlConnection sc = new SqlConnection())
        {
                var sqlConnection = new SqlConnection(_sqlConnectionString);
                string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE                                    Moneda != '' AND SimbolMoneda != ''";
                SqlCommand command = new SqlCommand(commanda, sqlConnection);
                command.CommandType = System.Data.CommandType.Text;
                IDataReader reader;
                sc.ConnectionString = _sqlConnectionString;
                sc.Open();
                reader = command.ExecuteReader(CommandBehavior.CloseConnection);

            }

我将服务附加到调试,我注意到它没有通过这行代码 sc.Open()

该服务与sql server不在同一台机器上,但我尝试将其安装在不同用户下,LocalSystem,NetworkService,与sql server同一域内的用户,但没有结果。

如有任何帮助,我们将不胜感激。

最佳答案

看起来您的代码中可能存在逻辑错误。您正在为 SqlConnection 使用 sc,但是当您创建命令对象时,您使用的是 sqlConnection,它实际上从未打开过。

这一行是问题所在:

SqlCommand command = new SqlCommand(commanda, sqlConnection);

请尝试以下操作:

SqlCommand command = new SqlCommand(commanda, sc);

在用户评论后 10:22 编辑

为了确认您已按照指示进行了更改,我重新调整了您的代码。您可以尝试以下操作吗:

using (SqlConnection sc = new SqlConnection())
{
    sc.ConnectionString = _sqlConnectionString;
    sc.Open();

    string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE Moneda != '' AND SimbolMoneda != ''";
    SqlCommand command = new SqlCommand(commanda, sc);
    command.CommandType = System.Data.CommandType.Text;

    IDataReader reader;
    reader = command.ExecuteReader();
}

关于c# - windows服务打不开sql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942443/

相关文章:

c# - 从 .net DLL 导出 native C 函数?

c++ - 在 Debug模式下运行时 VS2012 中的命令参数错误

debugging - VS 2012 调试错误

c++ - Luabind 编译时错误 Unable to deduce template argument

apache-flex - 使用 mxmlc ant 任务时如何包含额外的编译器参数?

android - 自定义 Android 下载服务 - 为每个文件提供进度通知行

c# - 为什么 TargetInvocationException 被视为未被 IDE 捕获?

c# - 如何隐藏浏览器后退按钮上的模态弹出窗口

C# 等价于 Java 的 continue <label>?

javascript - 将服务注入(inject) Angular 1.5 组件