SSMS(SQL Server Management Studio)を介してAzure Local Development Storageを操作する
-
09-10-2019 - |
質問
Azureのローカル開発ストレージにアクセスするためのコードを作成しようとしています。私は自分のために新しいストレージを作成することから始めました:
dsInit /forceCreate
DBO.TABLECONTAINER、DBO.TABLEROWなどのいくつかの前処理テーブルを使用して、SSMSで開発StorageDB20090919を見ることができます。
- 次に、SSMS(Ex。EmployeeTable)を介してこのデータベースにテーブルを追加して、コードを介してそれらのアクセスを開始するだけですか?これは正しいことをするための正しい方法ですか?
例えば:
var svc = CloudStorageAccount.DevelopmentStorageAccount
.CreateCloudTableClient().GetDataServiceContext();
//"Employees" is the name of the table
svc.AddObject("Employees", new Employees("John Doe"));
svc.SaveChangesWithRetries();
2。さらに、私がすべて完了したら、テーブルとデータを実際のクラウドアカウントに移植するにはどうすればよいですか?そこでスクリプトを実行することによって?
解決
そのテーブルが存在する限り、はい、あなたが書いたコードは従業員のテーブルに「John Doe」を追加します。 SSMを介してデータを見るのは面白いかもしれませんが、データをそのように変更することを試みることはできますが、試してみることはお勧めしません。開発ストレージは、スティックでそれを突っ込むことなく、十分に面白いです。開発者のストレージと実際のクラウドストレージには違いがあるため、Devストレージの使用を早く停止できるほど、
現時点では、Azureテーブル間でデータを転送する派手な方法はありません(開発またはクラウド内にあります)。ソーステーブルからすべてを選択するクエリを実行し、個々のアイテムを宛先テーブルに書き込むクエリを実行することに要約されます。データの分割方法によっては、書き込みをバッチすることができるか、並行してそれらを実行できる場合があります。 REST APIを直接使用することをいとわない場合は、ストレージライブラリが各アイテムが書かれる前に脱却する必要があることを避けることができます。
他のヒント
Azure TableストレージをSQL ServerまたはSQL Azureと混同していると思います。これは完全に異なります。 SSMSを使用してAzureストレージテーブルにはアクセスできません。提供したコードサンプルは、Azure SDK(下のストレージREST APIを使用している)を使用しています。これがAzureストレージにアクセスする唯一の方法です。
よりグラフィカルな方法でテーブルを作成 /表示したい場合は、Cerebrataを試してください クラウドストレージスタジオ, 、不器用なリーフ azurexplorer, 、デビッド・ポールマンの Azure Storage Explorer, 、または他の同様のツール。これらのツールはすべて、SDKまたはダイレクトAPI呼び出しに依存しています。
ここで、コードについては、オブジェクトを挿入する前にテーブルを作成する必要があります。 createTablesfrommoMel()およびcreateTableifnotexist()を参照してください。 Azure Platform Training Kit テーブルを作成および使用するための優れたイントロ/ラボがあり、createTablesfrommel()の使用方法を示しています。
APIを使用してDevstorageと通信することをお勧めしますが、直接データベースアクセスが有益であることが証明できるシナリオがあるかもしれません。より具体的には、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を使用するためのサポートされていない方法。