2010-12-07 15 views
1

私のAzureローカル開発ストレージにアクセスするためのコードを記述しようとしています。することができ、SSMS(SQL Server管理スタジオ)経由のAzureローカル開発ストレージの使用

dsInit /forceCreate 

は、私が今などdbo.TableContainer、dbo.TableRow今

  1. など、いくつかの事前作成のテーブルでSSMSでDevelopmentStorageDb20090919を見ることができます:私は自分のために新しいストレージを作成することによって始まりましたSSMS(例:Employeeテーブル)を使用してこのデータベースにテーブルを追加し、コードでアクセスするだけですか?これはものをする正しい方法ですか?例えば

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

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

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

答えて

0

テーブルが存在する場合は、作成したコードはemployeesテーブルに "John Doe"を追加します。 SSMSを使ってデータを見るのは面白いかもしれませんが、そのようにデータを変更しようとすると、試してみることをお勧めしません。開発ストレージはスティックでそれを突き刺すことなく十分に面白いです。 devストレージと実際のクラウドストレージの間には違いがあるので、devストレージの使用を早く止めることができれば早くなることがわかりました。

現時点では、Azureテーブル間でデータを転送する幻想的な方法はありません(devストレージまたはクラウド内にある)。それは、ソーステーブルからすべてを選択し、各個別の項目を宛先テーブルに書き込むクエリを実行することに至ります。データの分割方法によっては、書き込みを一括処理することも、並行して実行することもできます。 REST APIを直接使用する場合は、ストレージライブラリが書かれる前に各アイテムを逆シリアル化する必要がありません。

+0

ちょうどもう1つの質問 - ローカルで作業するにはdsInit'edデータベースが本当に必要ですか?私はSSMSに行くことはできません - >右クリックしてデータベース - >新しいデータベースを作成し、それにすべてのコーディングを接続しますか?その後、私がすべて完了したら、単にsql-azure上でエクスポートされたSQLスクリプトを実行しますか?もしそうなら、このdsInit'ed devストレージの使用は何ですか? – DeeStackOverflow

+0

私の答えを参照してください - AzureストレージとSQLは全く異なります。 dsinitは、ローカルSQL Server(またはSQL Express)に表を作成して、表記憶域を「シミュレート」します。 Azure自体では、SQL Serverにまったく依存しません。 –

1

私はあなたがAzure Table StorageをSQL ServerまたはSQL Azureと混乱させていると思います。 SSMSを使用してAzure Storageテーブルにアクセスすることはできません。提供したサンプルコードはAzure SDK(Storage REST APIを使用しています)を使用しています。それがAzure Storageにアクセスする唯一の方法です。

あなたがよりグラフィカルな方法で/ビューテーブルを作成したい場合は、CerebrataのCloud Storage Studio、ClumsyLeafのAzureXplorer、デビッドPallmanのAzure Storage Explorer、またはいくつかの他の同様のツールを試してみてください。これらのツールはすべてSDKまたは直接API呼び出しに依存しています。

あなたのコードについて:オブジェクトを挿入する前にテーブルを作成する必要があります。 CreateTablesFromModel()およびCreateTableIfNotExist()を参照してください。 Azure Platform Training Kitには、表の作成と使用のための素晴らしいイントロ/ラボがあり、CreateTablesFromModel()の使用方法が示されています。

+0

あなたの答えをありがとう。 – DeeStackOverflow

0

DevStorageとの会話にAPIを使用するのが最善ですが、直接的なデータベースアクセスが有益であると思われるシナリオがあります。具体的には、DevStorageに固有のいくつかのSDKの問題を回避するために使用できます。

大規模なブロブの名前を変更すると問題に遭遇しました。ブロブの名前を変更することはできません(最初はCopyFromBlob()を使用してコピーしてから削除する必要があります)。私はAzure Storage Explorerとコードを書いて、すべてのタイムアウトを増やしてみました。溶液? SQLは救助に!ここで

は、コンテナ内のブロブの名前を変更するか、別のものにそれを移動する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 

、ご自身の責任でそれを使用する - これは完全にサポートされていないですdev stotageで作業する方法。

関連する問題