Pregunta

Estoy tratando de escribir código para acceder a mi almacenamiento de desarrollo local azul. Empecé por la creación de un nuevo almacenamiento para mí mismo:

dsInit /forceCreate

Ahora puede ver el DevelopmentStorageDb20090919 en SSMS con algunas mesas precreated como dbo.TableContainer, dbo.TableRow etc.

  1. Ahora, puedo simplemente agregar tablas a esta base de datos a través de SSMS (ej. Tabla de empleados) y empezar a acceder a ellos a través de código? ¿Es esta la forma correcta de hacer las cosas?

Por ejemplo:

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

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

2. Y, además, una vez que esté todo hecho, ¿cómo puerto de E la tabla y los datos en la cuenta real de la nube? Mediante la ejecución de secuencias de comandos no?

¿Fue útil?

Solución

Mientras exista esa mesa, entonces sí, el código que ha escrito añadirá "John Doe" a la tabla empleados. Aunque puede ser interesante para mirar los datos a través de SSMS y usted podría intentar alterar los datos de esa manera, yo no recomendaría probar. Desarrollo de almacenamiento es lo suficientemente divertido y sin meter con un palo. Existen diferencias entre el almacenamiento dev y almacenamiento en la nube real, por lo que he encontrado que cuanto antes se puede dejar de usar el almacenamiento dev mejor.

Por el momento no hay forma elegante de transferencia de datos entre tablas de Azure (sea en dev almacenamiento o en la nube). Todo se reduce a la ejecución de una consulta que selecciona todo, desde la tabla de origen, a continuación, escribe cada elemento individual de la tabla de destino. Dependiendo de cómo se reparte sus datos, usted podría ser capaz de lotes las escrituras o es posible que pueda hacer en paralelo. Si usted está dispuesto a utilizar la API REST directamente podría evitar la biblioteca de almacenamiento que tiene a deserialise cada artículo antes de que está escrito.

Otros consejos

Creo que estás confundiendo Azure Storage Table con SQL Server o SQL Azure, que son completamente diferentes. No se puede acceder a las tablas de Azure Storage en absoluto con SSMS. El ejemplo de código que ya ha proporcionado está utilizando el SDK de Azure (que está utilizando el API de almacenamiento debajo REST). Esa es la única manera de acceder a Azure Storage.

Si desea crear / ver las tablas de una manera más gráfica, tratan almacenamiento en la nube de Cerebrata estudio , de ClumsyLeaf AzureXplorer , de David Pallman Azure Storage Explorador , o alguna otra herramienta similar. Estas herramientas todos se basan en el SDK o API directa llamadas.

Ahora, en cuanto a su código: Es necesario crear la tabla antes de insertar objetos. Ver CreateTablesFromModel () y CreateTableIfNotExist (). El Azure Training Kit tiene una gran introducción / laboratorio para la creación y el uso de tablas, y muestra cómo utilizar CreateTablesFromModel ().

A pesar de que lo mejor es utilizar las API para hablar con el DevStorage, puede haber situaciones donde el acceso a la base de datos directa podría resultar beneficiosa. Más específicamente, se puede utilizar para evitar algunos problemas SDK que son específicos de DevStorage.

Una vez se topó con un problema con el cambio de nombre de grandes manchas - la operación sería simplemente el tiempo de espera (nota que las gotas no se pueden renombrar - que primero tiene que ser copiada utilizando CopyFromBlob () y luego se borra). He intentado tanto en Azure Storage Explorer y escribiendo código y el aumento de todos los tiempos de espera. ¿Solución? SQL al rescate!

Aquí está un ejemplo de SQL que cambiar el nombre de una burbuja dentro de un contenedor o moverlo a una diferente:

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

Por supuesto, lo utilizan a su propio riesgo. - este es un completamente manera no soportada de trabajar con stotage dev

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top