3

古いソースからデータを取得してテーブルストレージに配置するインポートプロセスがあります。これにより、テーブルストレージを再初期化し、必要に応じて最初からやり直すことができます。10月のAzureSDKfor .NET(VS2012)に更新する前は機能していました。現在、いくつかのエンティティを挿入した後、失敗します(変更されているようで、インポートされたデータは本質的に静的ではありません)。同じタイプの最初のエンティティは、常に正常に挿入されます。パーティションキーは一意であり、それぞれのRowKeyは空の文字列です( nullではありません)。特にで失敗していSaveChangesWithRetries()ます。新しいSDKに、以前行っていたものと互換性のない変更はありますか?

アップデート

テーブルストレージデータベースにクエリを実行して、正常に挿入された行の実際のXMLを調べてきました。私が気づいたことの1つは、エンティティのnull許容int列は、nvarchar(max)nullの場合とnullでintない場合にSqlTypeを持っていることです。これは意図されたものですか?

4

3 に答える 3

8

そのため、一貫してエラーを正常に再現することができました。これは、2012年10月のSDKで導入されたかなり厄介なバグであることがわかりました。

スペースで終わる文字列があると、例外がスローされます。すべての文字列入力でTrim()を呼び出すと、この問題は解決しました。

于 2012-10-28T22:03:13.247 に答える
1

これは明らかにエミュレータの問題の1つです。ご存知かもしれませんが、SQLServerのテーブルストレージをシミュレートします。これはほとんどの場合に機能しますが、プロパティを追加するなどの特別なことをしようとしたり、プロパティにnull許容値とnull許容値ではない値を単純に混在させたりすると、状況が悪化する傾向があります。

このページでは、実際のテーブルストレージサービスとエミュレーターでの実装の違いについて説明します。しかし、あなたの問題はまだ文書化されていないようです。Table Storageエミュレーター(ここでもStackOverflow )の問題に関する多くのレポートがあります。

唯一の解決策は、エミュレーターを使用する代わりに、実ストレージアカウントを使用して開発することです。

于 2012-10-28T19:18:31.083 に答える
1

この問題は、WindowsAzureSDKの新しいバージョンで修正されています。問題を解決するには、最新バージョンをインストールしてください。http://www.windowsazure.com/en-us/downloads/

于 2013-09-26T00:32:10.267 に答える