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アプリケーションから取得しようとするとこの問題が発生してしまう様です。


Sponsored