1

Azureのローカル開発ストレージにアクセスするためのコードを記述しようとしています。私は自分のために新しいストレージを作成することから始めました:

dsInit /forceCreate

これで、dbo.TableContainer、dbo.TableRowなどの事前に作成されたテーブルを使用してSSMSでDevelopmentStorageDb20090919を確認できます。

  1. ここで、SSMSを介してこのデータベースにテーブル(例:従業員テーブル)を追加し、コードを介してそれらにアクセスを開始できますか?これは何かをする正しい方法ですか?

例えば:

    var svc = CloudStorageAccount.DevelopmentStorageAccount
.CreateCloudTableClient().GetDataServiceContext();

                //"Employees" is the name of the table                
                svc.AddObject("Employees", new Employees("John Doe"));    
                svc.SaveChangesWithRetries();

2。さらに、すべて完了したら、テーブルとデータを実際のクラウドアカウントに移植するにはどうすればよいですか?そこでスクリプトを実行することによって?

4

3 に答える 3

1

Azure TableStorageをSQLServerまたはSQLAzureと混同していると思いますが、これらは完全に異なります。SSMSを使用してAzureStorageテーブルにアクセスすることはできません。提供したコードサンプルは、Azure SDKを使用しています(下にあるStorage REST APIを使用しています)。これが、AzureStorageにアクセスする唯一の方法です。

よりグラフィカルな方法でテーブルを作成/表示する場合は、CerebrataのCloud Storage Studio、ClumsyLeafのAzureXplorer、 DavidPallmanのAzureStorage Explorer、またはその他の同様のツールを試してください。これらのツールはすべて、SDKまたは直接API呼び出しに依存しています。

ここで、コードについて:オブジェクトを挿入する前にテーブルを作成する必要があります。CreateTablesFromModel()およびCreateTableIfNotExist()を参照してください。Azureプラットフォームトレーニングキットには、テーブルを作成および使用するための優れたイントロ/ラボがあり、CreateTablesFromModel()の使用方法を示しています。

于 2010-12-08T02:16:15.417 に答える
0

APIを使用してDevStorageと通信するのが最善ですが、データベースへの直接アクセスが有益であることが判明するシナリオがあるかもしれません。具体的には、DevStorageに固有のSDKの問題を回避するために使用できます。

私はかつて大きなblobの名前変更で問題に遭遇しました-操作は単にタイムアウトします(blobの名前は変更できないことに注意してください-最初にCopyFromBlob()を使用してコピーしてから削除する必要があります)。Azure Storage Explorerと、コードを記述してすべてのタイムアウトを増やすことの両方を試しました。解決?SQLが救いの手を差し伸べます!

コンテナ内のBLOBの名前を変更したり、別のBLOBに移動したりするSQLの例を次に示します。

begin tran

alter table CommittedBlock nocheck constraint BlockBlob_CommittedBlock

update CommittedBlock set BlobName = @TargetBlobName, ContainerName = @TargetContainerName where BlobName = @SourceBlobName and ContainerName = @SourceContainerName
update BlockData set BlobName = @TargetBlobName, ContainerName = @TargetContainerName where BlobName = @SourceBlobName and ContainerName = @SourceContainerName
update Blob set BlobName = @TargetBlobName, ContainerName = @TargetContainerName where BlobName = @SourceBlobName and ContainerName = @SourceContainerName

alter table CommittedBlock with check check constraint BlockBlob_CommittedBlock

rollback tran

もちろん、自己責任で使用してください。これは、開発ストレージを操作するための完全にサポートされていない方法です。

于 2012-01-24T22:08:10.173 に答える
0

そのテーブルが存在する限り、そうです、あなたが書いたコードは「JohnDoe」をemployeesテーブルに追加します。SSMSを介してデータを確認することは興味深い場合があり、その方法でデータを変更してみることができますが、試してみることはお勧めしません。開発用ストレージは、スティックで突かなくても十分面白いです。開発ストレージと実際のクラウドストレージには違いがあるため、開発ストレージの使用をやめるのは早ければ早いほどよいことがわかりました。

現時点では、Azureテーブル間(開発ストレージ内またはクラウド内)でデータを転送するための優れた方法はありません。つまり、ソーステーブルからすべてを選択し、個々のアイテムを宛先テーブルに書き込むクエリを実行することになります。データがどのように分割されているかに応じて、書き込みをバッチ処理できる場合と、並行して実行できる場合があります。REST APIを直接使用する場合は、ストレージライブラリが書き込まれる前に各アイテムを逆シリアル化する必要がないようにすることができます。

于 2010-12-07T23:21:03.503 に答える