您好我正在尝试创建一个azure计时器触发器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指令或程序集引用?)< / p>
2017-08-28T15:46:27.422 run.csx(13,38):错误CS0246:找不到类型或命名空间名称“SqlConnection”(您是否缺少using指令或程序集引用?)< / p>
2017-08-28T15:46:27.422 run.csx(16,13):错误CS0246:找不到类型或命名空间名称“SqlCommand”(您是否缺少using指令或程序集引用?)< / p>
2017-08-28T15:46:27.422 run.csx(16,34):错误CS0246:找不到类型或命名空间名称“SqlCommand”(您是否缺少using指令或程序集引用?)< / p>
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)
答案 0 :(得分:2)
你需要一个对System.Data.dll的程序集引用,你可以在C#Script中这样做:
#r "System.Data"
using System;
using System.Data.SqlClient;
. . .
System.Data.dll是.NET Framework基类库(BCL)的一部分(因此它保证存在),但Azure Functions环境默认不引用它。 Azure函数文档中对此进行了解释here。
您不需要导入Microsoft.SqlServer.Server命名空间。你需要的一切都在System.Data.SqlClient。