Question
MCC Taro on Fri, 31 Mar 2017 05:35:17
現在VS2015、C#、Azure API Appテンプレートを使用したWebアプリケーションを開発しています。
その中でMicrosoft.Azure.SqlDatabase.ElasticScale.ClientライブラリのShardMapManager.TryGetListShardMapを使用し、シャードマップを取得しようとしているのですが、
TryGetListShardMapを呼び出したところで止まってしまい、「スレッド 0x~ はコード 0 (0x0) で終了しました。」とログが出力され続けるだけで処理が進まなくなってしまいます。〈一晩おいても状況は変わらずでした。)
Webアプリでシャードマップを取得できるような改善策はないでしょうか?
以下がシャードマップ取得部分のソースです。
***************************************
SqlConnectionStringBuilder shardMapManagerConnStrBldr = new SqlConnectionStringBuilder
{
DataSource = @"(localdb)\v11.0",
InitialCatalog = "[シャードマップマネージャー用DB名]",
IntegratedSecurity = true,
MultipleActiveResultSets = true
};
ShardMapManager shardMapManager;
ShardMapManager smm;
if (!ShardMapManagerFactory.TryGetSqlShardMapManager(shardMapManagerConnStrBldr.ConnectionString, ShardMapManagerLoadPolicy.Lazy, out smm))
{
return;
}
shardMapManager = smm;
ListShardMap<int> shardMap;
ListShardMap<int> sm;
if (shardMapManager.TryGetListShardMap<int>("[シャードマップ名]", out sm)) ←ここで止まってしまいます。
{
shardMap = sm;
}
***************************************
※シャードの設定は以下のページで紹介されているサンプルプログラムを修正、使用して設定済みです。
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-elastic-scale-use-entity-framework-applications-visual-studio
※データベースはローカル、Azureのどちらを対象にしても同じ現象が発生します。
※ローカルのSQL Serverのバージョンは11.0.3000
※Azure上のSQL Serverのバージョンは12.0.2000.8
※Microsoft.Azure.SqlDatabase.ElasticScale.Clientのバージョンは1.3.3
※コンソールアプリケーションとしてプロジェクトを作成し、Mainで上記と同様の処理を行うと問題無くシャードマップが取得できます。Webアプリケーションから取得しようとするとこの問題が発生してしまう様です。