C# 计时器 Azure SQL 函数

标签 c# sql-server azure timer triggers

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

 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)

最佳答案

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

#r "System.Data"

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

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

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

关于C# 计时器 Azure SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922831/

相关文章:

c# - 将大写字母替换为小写字母 - 反之亦然

c# - Mono 3.2 中的行为与 Nancy Web 解决方案上的 DotLiquid 集合不一致

c# - 无法让 C# 中的 SslStream 接受 .net Framework 4.6 的 TLS 1.2 协议(protocol)

php - 使用 php 在下拉列表中从 MSSQL 中获取数据

sql - 根据第一个表的 ID 对第二个表中的值求和

visual-studio - 如何在 Microsoft Azure 中解压缩大小为 900mb 的文件?

Azure 容器服务无法访问

c# - 在 C# 中创建加密随机数的最快、线程安全的方法?

sql-server - sql server 无效的对象名称 - 但表列在 SSMS 表列表中

c# - 发布时将连接字符串从开发更改为生产