您好,我正在尝试创建一个 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/