Frage

Ich versuche, Code zu schreiben, meine azur lokale Entwicklung Speicher zuzugreifen. Ich begann durch einen neuen Speicher für mich zu erstellen:

dsInit /forceCreate

Ich kann jetzt die DevelopmentStorageDb20090919 in SSMS mit einigen precreated Tabellen sehen wie dbo.TableContainer, dbo.TableRow etc.

  1. Jetzt kann ich einfach hinzufügen Tabellen auf diese Datenbank über SSMS (ex. Employee-Tabelle) und starten sie über Code zugreifen? Ist dies der richtige Weg Dinge zu tun?

Zum Beispiel:

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

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

2. Und zusätzlich, wenn ich alles getan habe, wie kann ich Port die Tabelle und die Daten in den eigentlichen Cloud-Konto? Durch Skripte dort läuft?

War es hilfreich?

Lösung

Solange die Tabelle vorhanden ist, dann ja, der Code, den Sie geschrieben haben, „John Doe“ an die Mitarbeiter Tisch. Während es interessant sein können Daten über SSMS betrachten und könnten Sie Ändern Daten versuchen auf diese Weise, würde ich es nicht empfehlen, zu versuchen. Development Speicher ist lustig genug, ohne es mit einem Stock zu stossen. Es gibt Unterschiede zwischen dev Speicherung und tatsächlichem Cloud-Speicher, so dass ich festgestellt, dass je früher, desto besser mit dev Speicherung stoppen.

Im Moment gibt es keine andere Art von Daten zwischen Azure Tabellen übertragen (seien sie in DEV Lagerung oder in der Cloud). Es läuft darauf hinaus, eine Abfrage ausgeführt wird, dass wählt alles aus der Quelltabelle, dann jedes einzelne Element in die Zieltabelle schreibt. Je nachdem, wie Sie Ihre Daten partitioniert werden Sie vielleicht die Schreibvorgänge zu Charge der Lage sein, oder Sie könnten in der Lage sein, sie parallel zu tun. Wenn Sie bereit sind, die REST-API verwenden, um direkt könnten Sie die Speicherbibliothek vermeiden, dass jedes Element deserialise bevor es geschrieben ist.

Andere Tipps

Ich glaube, Sie Azure Table Storage mit SQL Server oder SQL Azure sind verwirrend, die völlig unterschiedlich sind. Sie können nicht Azure Storage-Tabellen überhaupt mit SSMS zugreifen. Das Codebeispiel Sie zur Verfügung gestellt wird, mit dem Azure SDK (der die Speicher-REST-API unter verwendet). Das ist der einzige Weg, um Zugang Zu Storage.

Wenn Sie erstellen möchten / View-Tabellen in einer grafischen Weise versuchen Cerebrata Cloud Storage Studio , ClumsyLeaf AzureXplorer , David Pallman der Azure Storage Explorer oder ein ähnliches Werkzeug. Diese Tools vertrauen alle auf dem SDK oder direkte API-Aufrufe.

Nun, in Bezug auf Ihrem Code: Sie benötigen eine Tabelle erstellen, bevor Einfügen von Objekten. Siehe CreateTablesFromModel () und CreateTableIfNotExist (). Das Azure Platform Training Kit hat eine große Intro / Labor für die Erstellung und Verwendung von Tabellen, und zeigt, wie CreateTablesFromModel () verwenden.

Auch wenn es am besten ist, die APIs Gespräch mit dem DevStorage zu verwenden, könnte es Szenarien, in denen der direkte Zugriff auf die Datenbank als nützlich erweisen könnte. Genauer gesagt, es kann verwendet werden, um einige SDK Probleme zu umgehen, die spezifisch für DevStorage sind.

ich einmal lief in ein Problem mit der großen Blobs Umbenennung - die Operation würde einfach abgeschalten (beachten Sie, dass Blobs können nicht umbenannt werden - sie müssen zunächst kopiert werden mit CopyFromBlob () und dann gelöscht). Ich habe versucht, sowohl in Azure Storage Explorer und durch das Schreiben von Code und alle Timeouts erhöhen. Lösung? SQL zur Rettung!

Hier ist ein Beispiel von SQL, die einen Klecks in einem Container umbenennen würde oder zu einem anderen verschieben:

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

Natürlich verwenden Sie es auf Ihr eigenes Risiko -. Dies ist ein vollständig ohne Unterstützung von mit dev stotage Arbeits

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top