Csaba Toth
Csaba Toth

Reputation: 10729

Why Azure WebJob cannot connect to Azure SQL saying "Storage account is of unsupported type 'Blob-Only/ZRS'. Supported types are 'General Purpose'?

So I have an Azure Web app, it's an ASP.NET MVC app with Entity Framework. It uses an Azure SQL database. I need to periodically (once a day) poll to financial market rate numbers and insert it int the database. I created two WebJobs for the two market rate polls (one needs to run after market open, the other is after market close), and scheduled them.

For testing I'm triggering them through the Azure portal manually, and I get a following error in the logs:

[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

I cannot make a sense of this. The SQL Azure database is kinda normal one, some of the tables have blob columns, but not the MarketRates table. The code which tries to access the database:

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();

Upvotes: 1

Views: 461

Answers (1)

Tom Sun
Tom Sun

Reputation: 24569

"Storage account is of unsupported type 'Blob-Only/ZRS'. Supported types are 'General Purpose'?

It seems that you are use the blob storage account with Azure webjob. Please have to try to change AzureWebJobsStorageconnection string another General Purpose storage account connection.

enter image description here


Additionally fill the AzureWebJobsDashboard and AzureWebJobsStorage connection strings with the General Purpose storage account's connection string at the beginning of your app.settings of your WebJob.

Upvotes: 1

Related Questions