Работа с Azure Local Development Storage через SSMS (SQL Server Management Studio)

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

Вопрос

Я пытаюсь написать код, чтобы получить доступ к моей локальной разработке Azure. Я начал с создания нового хранилища для себя:

dsInit /forceCreate

Теперь я могу видеть разработку StoragedB20090919 в SSMS с некоторыми предварительно обработанными таблицами, такими как dbo.tablecontainer, dbo.tablerow и т. Д.

  1. Теперь могу ли я просто добавить таблицы в эту базу данных через SSMS (например, таблица сотрудников) и начать доступ к ним через код? Это правильный способ делать что -то?

Например:

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

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

2 И, кроме того, как только я все закончу, как мне перенести таблицу и данные в фактическую облачную учетную запись? Запустив там сценарии?

Это было полезно?

Решение

Пока эта таблица существует, то да, написанный вами код добавит «Джон Доу» в таблицу сотрудников. Хотя может быть интересно посмотреть данные через SSMS, и вы можете попытаться изменить данные таким образом, я бы не рекомендовал попробовать их. Хранение разработки достаточно смешное, не вытаскивая его палкой. Существуют различия между хранилищем Dev и фактическим облачным хранилищем, поэтому я обнаружил, что чем раньше вы сможете прекратить использование Dev Storage, тем лучше.

На данный момент нет причудливого способа передачи данных между таблицами Azure (будь то в хранилище Dev или в облаке). Это сводится к запуска запроса, который выбирает все из исходного таблицы, а затем записывает каждый отдельный элемент в таблицу назначения. В зависимости от того, как разделены ваши данные, вы можете отправить записи, или вы сможете сделать их параллельно. Если вы готовы использовать API REST непосредственно, вы можете избежать библиотеки хранения, необходимой для того, чтобы он был написан до его написания.

Другие советы

Я думаю, что вы сбиваете с толку хранилище таблицы Azure с SQL Server или SQL Azure, которые совершенно разные. Вы вообще не можете получить доступ к столам хранения Azure с помощью SSMS. Приведенный вами образец кода использует Azure SDK (который использует API REST внизу хранилища). Это единственный способ получить доступ к хранилищу Azure.

Если вы хотите создавать / просматривать таблицы более графическим образом, попробуйте Cerebrata's Облачная студия хранения, Cunsyleaf's Azurexplorer, Дэвид Палмман Azure Storage Explorer, или какой -то другой подобный инструмент. Все эти инструменты полагаются на вызовы SDK или прямые API.

Теперь, касающийся вашего кода: вам нужно создать свою таблицу перед вставкой объектов. См. Createletablesfrommentel () и Createbableifnotexist (). А Учебный комплект платформы Azure Имеет отличный вступление/лабораторию для создания и использования таблиц и показывает, как использовать CreateableableFrommentel ().

Несмотря на то, что лучше использовать API, чтобы поговорить с DevStorage, могут быть сценарии, когда прямой доступ к базе данных может оказаться полезным. Более конкретно, его можно использовать для обхода некоторых проблем SDK, которые специфичны для DevStorage.

Однажды я столкнулся с проблемой с переименованием больших каплей - операция просто будет просто время (обратите внимание, что капли нельзя переименовать - сначала их нужно скопировать с помощью 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top