Lavorare con Azure locale di sviluppo tramite SQL Server Management Studio (Management Studio sql server)

StackOverflow https://stackoverflow.com/questions/4382001

Domanda

Sto cercando di scrivere il codice per accedere alla mia Azure sviluppo locale. Ho iniziato con la creazione di un nuovo storage per me stesso:

dsInit /forceCreate

ora posso vedere il DevelopmentStorageDb20090919 in SSMS con alcuni tavoli precreated quali dbo.TableContainer, dbo.TableRow etc.

  1. Ora, posso semplicemente aggiungere tabelle a questo database tramite SQL Server Management Studio (es. Tabella dei dipendenti) e iniziare a accesso tramite codice? E 'questo il modo giusto di fare le cose?

Ad esempio:

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

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

2. E inoltre, una volta che io sono tutto fatto, come si fa porta I tabella ei dati sul conto nuvola reale? Con l'esecuzione di script lì?

È stato utile?

Soluzione

Finché esiste quel tavolo, allora sì, il codice che hai scritto aggiungerà "John Doe" al tavolo dipendenti. Anche se può essere interessante guardare i dati tramite SQL Server Management Studio e si potrebbe provare i dati alterando in questo modo, io non lo consiglio di provarlo. stoccaggio di sviluppo è abbastanza divertente, senza frugare con un bastone. Ci sono differenze tra lo stoccaggio dev e cloud storage vero e proprio, così ho scoperto che la prima si può smettere di usare lo stoccaggio dev meglio.

Al momento non v'è alcun modo elegante per il trasferimento dei dati tra le tabelle Azure (siano essi in dev stoccaggio o nel cloud). Si riduce a esecuzione di una query che seleziona tutto, dalla tabella di origine, quindi scrive ogni singola voce nella tabella di destinazione. A seconda di come i dati sono partizionati si potrebbe essere in grado di lotto le scrive o si potrebbe essere in grado di fare loro in parallelo. Se siete disposti a utilizzare l'API REST direttamente si potrebbe evitare la libreria di archiviazione dover deserialise ogni voce prima che sia scritto.

Altri suggerimenti

credo che tu stia confondendo Azure Storage Table con SQL Server o SQL Azure, che sono completamente diversi. Non è possibile accedere alle tabelle Azure a tutti con SSMS. L'esempio di codice che hai fornito utilizza l'Azure SDK (che sta utilizzando l'API REST sotto bagagli). Questo è l'unico modo per accedere Azure.

Se si desidera creare / visualizzare le tabelle in modo più grafico, prova a Cloud Storage di Cerebrata Studio , di ClumsyLeaf AzureXplorer , di David Pallman Azure Storage Explorer , o qualche altro attrezzo simile. Questi strumenti si basano su tutte le chiamate API SDK o diretta.

Ora, per quanto riguarda il codice: È necessario creare la tabella prima di inserire gli oggetti. Vedere CreateTablesFromModel () e CreateTableIfNotExist (). Il Azure Platform Training Kit ha una grande intro / laboratorio per la creazione e l'utilizzo di tabelle, e mostra come utilizzare CreateTablesFromModel ().

Anche se è meglio usare le API per parlare con il DevStorage, ci potrebbe essere scenari in cui l'accesso diretto al database potrebbe rivelarsi vantaggioso. Più in particolare, può essere utilizzato per aggirare alcuni problemi di SDK che sono specifici per DevStorage.

Una volta ho incontrato un problema con la ridenominazione di grandi blobs - l'operazione sarebbe semplicemente time out (nota che blob non possono essere rinominati - in primo luogo devono essere copiati usando CopyFromBlob () e quindi eliminato). Ho provato sia in Azure Storage Explorer e la scrittura di codice e aumentare tutti i timeout. Soluzione? SQL per il salvataggio!

Ecco un esempio di SQL che rinomina un blob all'interno di un contenitore o spostarlo in una diversa:

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

Naturalmente, usarlo a proprio rischio -. Questo è un completamente non supportato modo di lavorare con i dev stotage

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top