【问题标题】:Why Azure WebJob cannot connect to Azure SQL saying "Storage account is of unsupported type 'Blob-Only/ZRS'. Supported types are 'General Purpose'?为什么 Azure WebJob 无法连接到 Azure SQL,说“存储帐户的类型不受支持‘Blob-Only/ZRS’。支持的类型是‘通用’?
【发布时间】:2018-08-25 22:45:11
【问题描述】:

所以我有一个 Azure Web 应用程序,它是一个带有实体框架的 ASP.NET MVC 应用程序。它使用 Azure SQL 数据库。我需要定期(每天一次)轮询金融市场汇率数字并将其插入数据库。我为两个市场利率调查创建了两个 WebJobs(一个需要在开市后运行,另一个在收市后运行)并安排它们。

为了进行测试,我通过 Azure 门户手动触发它们,我在日志中收到以下错误:

[08/25/2018 22:28:43 > a6e3be: ERR ] Unhandled Exception: System.InvalidOperationException: Storage account 'blabla' is of unsupported type 'Blob-Only/ZRS'. Supported types are 'General Purpose'
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.Host.Storage.StorageAccountExtensions.AssertTypeOneOf(IStorageAccount account, StorageAccountType[] types)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.Host.Executors.DefaultStorageAccountProvider.<CreateAndValidateAccountAsync>d__24.MoveNext()
[08/25/2018 22:28:43 > a6e3be: ERR ] --- End of stack trace from previous location where exception was thrown ---
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.Host.Executors.DefaultStorageAccountProvider.<TryGetAccountAsync>d__25.MoveNext()
[08/25/2018 22:28:43 > a6e3be: ERR ] --- End of stack trace from previous location where exception was thrown ---
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.Host.Executors.JobHostConfigurationExtensions.<CreateJobHostContextAsync>d__1.MoveNext()
[08/25/2018 22:28:43 > a6e3be: ERR ] --- End of stack trace from previous location where exception was thrown ---
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.JobHost.<InitializeHostAsync>d__44.MoveNext()
[08/25/2018 22:28:43 > a6e3be: ERR ] --- End of stack trace from previous location where exception was thrown ---
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.JobHost.<CallAsyncCore>d__37.MoveNext()
[08/25/2018 22:28:43 > a6e3be: ERR ] --- End of stack trace from previous location where exception was thrown ---
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at Microsoft.Azure.WebJobs.JobHost.Call(MethodInfo method)
[08/25/2018 22:28:43 > a6e3be: ERR ]    at MarketRatePreviousCloseWebJob.Program.Main() in C:\Users\Csaba\Documents\BlablaSrc\MarketRatePreviousCloseWebJob\Program.cs:line 20
[08/25/2018 22:28:43 > a6e3be: SYS INFO] Status changed to Failed
[08/25/2018 22:28:43 > a6e3be: SYS ERR ] Job failed due to exit code -532462766

我无法理解这一点。 SQL Azure 数据库有点普通,一些表有 blob 列,但没有 MarketRates 表。 尝试访问数据库的代码:

string connectionString = "Copy of the the Azure SQL connection string";
SqlConnection sqlConnection = new SqlConnection(connectionString);

string selectStatement = "SELECT MAX(Id) FROM BlaBla.dbo.MarketRates";
SqlCommand selectCmd = new SqlCommand(selectStatement, sqlConnection);
sqlConnection.Open();
var id = (int)selectCmd.ExecuteScalar();
sqlConnection.Close();

string insertStatement = "INSERT INTO BlaBla.dbo.MarketRates(Id, Type, Rate, Date) " +
    "VALUES(@Id, @Type, @Rate, @Date)";
SqlCommand insertCmd = new SqlCommand(insertStatement, sqlConnection);

var now = DateTime.Now;
insertCmd.Parameters.Add("@Id", SqlDbType.Int);
insertCmd.Parameters.Add("@Type", SqlDbType.VarChar, 64);
insertCmd.Parameters.Add("@Rate", SqlDbType.Float);
insertCmd.Parameters.Add("@Date", SqlDbType.DateTime);
insertCmd.Parameters["@Id"].Value = id + 1;
insertCmd.Parameters["@Type"].Value = rateType;
insertCmd.Parameters["@Rate"].Value = rate;
insertCmd.Parameters["@Date"].Value = now.Date;

sqlConnection.Open();
insertCmd.ExecuteNonQuery();
sqlConnection.Close();

【问题讨论】:

  • Blabla 是数据库名称吗?您能否尝试删除selectinsert 查询中的Blabla.dbo.MarketRates
  • 是的,“Blabla”是数据库名称(显然不完全是,我想保护实际应用程序的身份)。我从在该 Azure SQL 数据库上远程打开的远程 Visual Studio 执行其他代码,在这些脚本中,“Blabla.dbo.*”表符号似乎运行良好。如果错误出现在 SQL 语句中,我想知道为什么我没有更多指向该错误的本地化错误。
  • 我看到你已经在github关注这个问题。你能找到哪一行你得到了这个错误吗?另外,请分享您的网络作业的完整代码(我的意思是从初始步骤public static async Task Run
  • 您的 WebJob 似乎配置为指向非通用存储帐户。我知道这听起来很明显,但在我看来,您混淆了为 WebJob 配置的 存储帐户 与自定义 WebJob 代码连接到的 Azure SQL 数据库。在您的应用设置中查找 AzureWebJobsStorage 等,并确认它指向通用存储帐户。
  • @KirkLarkin 你是对的。我的 Web 应用程序的“主”存储帐户是 blob 类型。这就是工作抱怨的原因。我还没有对 RTFSC(阅读精细源代码)进行尽职调查,并且在 Job 的应用程序配置文件中,存储帐户的两个连接字符串(AzureWebJobsDashboardAzureWebJobsStorage)是空白的。我用相同的 conn 填充它们。字符串并解决了它。我应该写我的答案还是你愿意我可以接受?

标签: c# azure azure-sql-database azure-webjobs


【解决方案1】:

“存储帐户的类型不支持'Blob-Only/ZRS'。支持的类型是'通用'?

您似乎正在将 blob storage account 与 Azure 网络作业一起使用。请尝试将 AzureWebJobsStorageconnection 字符串更改为另一个通用storage account 连接。


另外在您的 WebJob 的 app.settings 开头使用通用存储帐户的连接字符串填充 AzureWebJobsDashboardAzureWebJobsStorage 连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2013-06-25
    • 2018-07-13
    • 2018-03-27
    • 2011-03-06
    • 2021-12-16
    相关资源
    最近更新 更多