C#Timer Azure SQL函数

时间:2017-08-28 15:47:29

标签: c# sql-server azure timer triggers

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

1 个答案:

答案 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。