Pரத*_*ீப் 8 c# azure azure-sql-database azure-functions
我有 Azuretimer function将数据从我的本地数据库复制到 Azure 托管数据库。目前我已经对函数中的表名进行了硬编码。
如果对其进行硬编码,是否可以将参数作为输入传递给函数?
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log) {
string srcConnection = @"on premises connecting string";
string destConnection = @"Azure managed instance connection string";
string srcTable = "SourceTableName"; //am trying to make this as parameter
string destTable = "DestinationTableName"; //am trying to make this as parameter
string tmpTable = "select top 0 * into #DestTable from " + destTable;
using(SqlConnection
srcConn = new SqlConnection(srcConnection),
destConn = new SqlConnection(destConnection)
) {
using(SqlCommand
srcGetCmd = new SqlCommand(srcTable, srcConn)
) {
srcConn.Open();
destConn.Open();
SqlCommand cmd = new SqlCommand(tmpTable, destConn);
cmd.CommandTimeout = 180;
cmd.ExecuteNonQuery();
log.Info($"Temp table generated at: {DateTime.Now}");
SqlDataReader reader = srcGetCmd.ExecuteReader();
log.Info($"Source data loaded at: {DateTime.Now}");
using(SqlBulkCopy bulk = new SqlBulkCopy(destConn)) {
bulk.DestinationTableName = "#DestTable";
bulk.WriteToServer(reader);
}
string mergeSql = @"<sql logic to insert/Update/delete the data>";
cmd.CommandText = mergeSql;
cmd.CommandTimeout = 180;
cmd.ExecuteNonQuery();
log.Info($"Data update from temp table to destination at: {DateTime.Now}");
//Execute the command to drop temp table
cmd = new SqlCommand("drop table #DestTable", destConn);
cmd.CommandTimeout = 180;
cmd.ExecuteNonQuery();
log.Info($"Drop temp table at: {DateTime.Now}");
srcConn.Close();
destConn.Close();
}
}
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已经对表名进行了硬编码,这可以作为参数吗?
最简单的方法是使用这些名称(例如“SourceTableName”)添加应用程序设置,然后从Environment以下位置获取它们:
string srcTable = Environment.GetEnvironmentVariable("SourceTableName");
Run Code Online (Sandbox Code Playgroud)
要真正使其成为参数,您需要创建一个自定义绑定,类似于我在为 Azure 函数创作自定义绑定中所做的。可能有点矫枉过正。
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |