【问题标题】:C# Timer Azure SQL functionC# 计时器 Azure SQL 函数
【发布时间】:2017-08-28 15:47:29
【问题描述】:

您好,我正在尝试创建一个 azure timer trigger c# 函数,该函数每 5 分钟执行一次(只是为了测试 - 将更改为每天)以更新 SQL 数据库列。这是我在 TimerTriggerCSharp1 函数应用程序中的代码,如下所示

 using System;
  using System.Data.SqlClient;
 using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;




 public static void Run(TimerInfo myTimer, TraceWriter log)
 {
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
        string connStr = "someconstring";
             SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            string query = "UPDATE dbo.test_workstations SET email =         @email,     duration = @duration, status = @status, startDate = @startDate, endDate = @endDate WHERE endDate = @endDateToRemove";
        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.Parameters.AddWithValue("@email", DBNull.Value);
        cmd.Parameters.AddWithValue("@duration", DBNull.Value);
        cmd.Parameters.AddWithValue("@status", 0);
        cmd.Parameters.AddWithValue("@startDate", DBNull.Value);
        cmd.Parameters.AddWithValue("@endDate", DBNull.Value);
        cmd.Parameters.AddWithValue("@endDateToRemove", DateTime.Now.ToShortDateString());
        cmd.ExecuteNonQuery();
      }



 }

基本上我要做的是更新表以根据列是否显示今天的日期来设置空值。

任何帮助,我在 azure 中遇到了一堆错误 - 它在 Visual Studio 中有效!

2017-08-28T15:46:27.422 run.csx(4,17):错误 CS0234:命名空间“Microsoft”中不存在类型或命名空间名称“SqlServer”(您是否缺少程序集引用?)

2017-08-28T15:46:27.422 run.csx(13,13):错误 CS0246:找不到类型或命名空间名称“SqlConnection”(您是否缺少 using 指令或程序集引用?)

2017-08-28T15:46:27.422 run.csx(13,38):错误 CS0246:找不到类型或命名空间名称“SqlConnection”(您是否缺少 using 指令或程序集引用?)

2017-08-28T15:46:27.422 run.csx(16,13):错误 CS0246:找不到类型或命名空间名称“SqlCommand”(您是否缺少 using 指令或程序集引用?)

2017-08-28T15:46:27.422 run.csx(16,34):错误 CS0246:找不到类型或命名空间名称“SqlCommand”(您是否缺少 using 指令或程序集引用?)

2017-08-28T15:46:27.454 执行函数时出现异常:Functions.TimerTriggerCSharp1。 Microsoft.Azure.WebJobs.Script:脚本编译失败。

2017-08-28T15:46:27.485 功能完成(失败,Id=612e3097-849f-4816-b026-777cfb50c46a,持续时间=157ms)

【问题讨论】:

  • 使用“Microsoft.SqlServer.Server”的原因是什么?导入这个命名空间似乎是多余的。

标签: c# sql-server azure timer triggers


【解决方案1】:

您需要 System.Data.dll 的程序集引用,在 C# 脚本中您可以这样做:

#r "System.Data"

using System;
using System.Data.SqlClient;
. . . 

System.Data.dll 是 .NET Framework 基类库 (BCL) 的一部分(因此保证存在),但默认情况下 Azure Functions 环境不引用它。 Azure Functions 文档中的 here 对此进行了解释。

而且您不需要导入 Microsoft.SqlServer.Server 命名空间。您需要的一切都在 System.Data.SqlClient 中。

【讨论】:

  • 非常感谢,不知道我是怎么错过的
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多