Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure SDK 2.4更新“;“破产”;开发存储块_Azure_Azure Storage_Azure Storage Blobs - Fatal编程技术网

Azure SDK 2.4更新“;“破产”;开发存储块

Azure SDK 2.4更新“;“破产”;开发存储块,azure,azure-storage,azure-storage-blobs,Azure,Azure Storage,Azure Storage Blobs,安装最新的Azure SDK VS2013更新后,我丢失了所有现有的开发存储容器,无法创建新容器 任何熟悉这一点并知道如何“重新连接”它们或以其他方式修复它们的人 没有太多关于这个的信息可以找到 编辑:看来新的blob现在已经成功创建了,我只错过了更新之前的blob 这是预期的行为。基本上,当安装新版本的storage emulator时,它会创建一个新的SQL Server数据库来存储本地数据 不幸的是,没有简单的方法将数据放入较新的数据库。一种可能的解决方案是卸载最新版本,重新安装旧版本并

安装最新的Azure SDK VS2013更新后,我丢失了所有现有的开发存储容器,无法创建新容器

任何熟悉这一点并知道如何“重新连接”它们或以其他方式修复它们的人

没有太多关于这个的信息可以找到


编辑:看来新的blob现在已经成功创建了,我只错过了更新之前的blob

这是预期的行为。基本上,当安装新版本的storage emulator时,它会创建一个新的SQL Server数据库来存储本地数据


不幸的是,没有简单的方法将数据放入较新的数据库。一种可能的解决方案是卸载最新版本,重新安装旧版本并在计算机上下载blob。然后再次安装最新版本并再次上传blob(我知道这是一个非常蹩脚的解决方案)。您可能会发现这篇博文对执行此操作很有用:

不幸的是,这是预期的行为。每次更新storage emulator版本时,它都会使用不同的数据库来存储信息

我只是建议您在将来安装较新版本的storage emulator之前手动备份开发存储中的所有数据。如果您正在使用,这将简化备份过程:

  • Blob存储:只需创建一个类似容器名称的文件夹,并将所有文件下载到该文件夹中(使用Storage explorer,您只需选择all并单击download)。但请注意,因为这只是备份blob内容。不会保存Blob元数据和任何其他Blob特定属性
  • 表存储:导出表(使用storage explorer,您可以将表数据导出到cvs、json或xml文件中。但请注意,不同版本的storage explorer有时使用不同的格式。在我的例子中,当我尝试在storage explorer v.5中将数据导出到cvs并在v.6中导入时,一些数据失败。我需要再次手动更改数据格式n、 :()

但是,是的,即使是Storage Explorer也无法在一次单击中备份所有数据。希望有一个工具可以在dev Storage中只需单击一次即可备份数据。当然,我希望emulator的下一个版本不会重置数据。

我找到了一种相对简单的方法,在版本之间迁移数据,只需不到5分钟(至少从AzureStorageEmulatorDb54->AzureStorageEmulatorDb57开始),但作为免责声明,我只对图像使用blob存储

如果仿真器版本之间存在模式更改,这也肯定不起作用

启动之前,请确保所有storage emulator实例都已停止

您需要做的是为您关心的旧数据库中的数据生成插入脚本(在更新并安装新版本的storage emulator之后)

  • 打开SSM并连接到Azure Storage Emulator创建的新数据库和旧数据库(在我的示例中是AzureStorageEmulatorDb54和AzureStorageEmulatorDb57)
  • 右键单击旧数据库并选择任务->生成脚本
  • 选择您关心的表,在我的例子中是Blob、BlobContainer、BlockData和CommitteedBlock。您需要根据您关心的内容和使用模拟器的方式选择更多/其他表。我不关心日志或表数据,只关心Blob数据
  • 在“指定脚本应如何保存或发布”页面上,选择“保存到新查询窗口”,然后选择“高级”,向下滚动到“要脚本的数据类型”并选择“仅数据”
  • 接下来几次,然后完成,将打开一个新的查询窗口,其中所有数据都将作为insert语句编写脚本
  • 对于生成的脚本,将第一行-使用[AzureStorageEmulatorDbXX]更改为新版本,在我的示例中,我将使用[AzureStorageEmulatorDb54]更新为使用[AzureStorageEmulatorDb57]
  • 运行脚本
  • 在我的例子中,我能够将新版本的storage emulator与我的旧数据.YMMV一起使用。只有当实际文件的存储位置为默认位置且默认位置在版本之间没有更改时,这才有效。如果更改,您必须移动实际文件


    在撰写本文时,我的默认位置是:C:\Users\username\AppData\Local\AzureStorageEmulator\BlockBlobRoot\2

    谢谢Gaurav。是的。这是一个令人讨厌的解决方案,但至少是一个:)但是..我的开发人员存储Blob并没有那么重要,我真的不想麻烦这么做:)因升级解决方案不好而向Microsoft发出嘘声:)