Использование эмулятора хранения Azure для разработки и тестированияUse the Azure storage emulator for development and testing

Эмулятор хранения Microsoft Azure — это средство, которое эмулирует службы BLOB-объектов, очередей и таблиц Azure для локальных целей разработки.The Microsoft Azure storage emulator is a tool that emulates the Azure Blob, Queue, and Table services for local development purposes. Вы можете протестировать приложение в локальной среде служб хранилища, не создавая подписку Azure или не тратя никаких затрат.You can test your application against the storage services locally without creating an Azure subscription or incurring any costs. Если вы удовлетворены работой приложения в эмуляторе, переключитесь на использование учетной записи хранения Azure в облаке.When you're satisfied with how your application is working in the emulator, switch to using an Azure storage account in the cloud.

Получение эмулятора храненияGet the storage emulator

Эмулятор хранения входит в пакет SDK для Microsoft Azure.The storage emulator is available as part of the Microsoft Azure SDK. Его также можно установить с помощью автономного установщика (скачиваемого напрямую).You can also install the storage emulator by using the standalone installer (direct download). Чтобы установить эмулятор хранения, нужно обладать правами администратора на компьютере.To install the storage emulator, you must have administrative privileges on your computer.

В настоящее время эмулятор хранилища работает только в Windows.The storage emulator currently runs only on Windows. Если вам нужен эмулятор хранения для Linux, то один из вариантов — это сообщество с открытым исходным кодом, азуритев эмуляторе хранилища.If you need a storage emulator for Linux, one option is the community maintained, open-source storage emulator Azurite.

Примечание

Данные, созданные в одной версии эмулятора хранения, могут быть недоступны при использовании другой версии.Data created in one version of the storage emulator is not guaranteed to be accessible when using a different version. Если нужно сохранить данные на длительный срок, рекомендуется хранить их в учетной записи хранения Azure, а не в эмуляторе хранения.If you need to persist your data for the long term, we recommended that you store that data in an Azure storage account, rather than in the storage emulator.

Эмулятор хранения зависит от определенных версий библиотек OData.The storage emulator depends on specific versions of the OData libraries. Замена библиотек DLL OData, используемых эмулятором хранения, не поддерживается другими версиями и может привести к непредвиденному поведению.Replacing the OData DLLs used by the storage emulator with other versions is unsupported, and may cause unexpected behavior. Тем не менее для отправки запросов к эмулятору может использоваться любая версия OData, поддерживаемая службой хранилища.However, any version of OData supported by the storage service may be used to send requests to the emulator.

Принцип работы эмулятора храненияHow the storage emulator works

Эмулятор хранения использует локальный экземпляр Microsoft SQL Server 2012 Express LocalDB для эмуляции служб хранилища Azure.The storage emulator uses a local Microsoft SQL Server 2012 Express LocalDB instance to emulate Azure storage services. Вы можете настроить эмулятор хранения для доступа к локальному экземпляру SQL Server вместо LocalDB.You can choose to configure the storage emulator to access a local instance of SQL Server instead of the LocalDB instance. Дополнительные сведения см. в разделе Запуск и Инициализация эмулятора хранения далее в этой статье.See the Start and initialize the storage emulator section later in this article to learn more.

Эмулятор хранения подключается к SQL Server или LocalDB с использованием аутентификации Windows.The storage emulator connects to SQL Server or LocalDB using Windows authentication.

Между эмулятором хранения и службой хранилища Azure есть несколько различий.Some differences in functionality exist between the storage emulator and Azure storage services. Дополнительные сведения об этих различиях см. в разделе Различия между эмулятором хранения и службами хранилища Azure ниже.For more information about these differences, see the Differences between the storage emulator and Azure Storage section later in this article.

Запуск и инициализация эмулятора храненияStart and initialize the storage emulator

Чтобы запустить эмулятор хранения Azure, сделайте следующее:To start the Azure storage emulator:

  1. Нажмите кнопку Пуск или клавишу Windows.Select the Start button or press the Windows key.
  2. Начните вводить текст Azure Storage Emulator.Begin typing Azure Storage Emulator.
  3. Выберите эмулятор в списке отображенных приложений.Select the emulator from the list of displayed applications.

При запуске эмулятора хранения отображается окно командной строки.When the storage emulator starts, a Command Prompt window will appear. Это окно консоли можно использовать для запуска и завершения работы эмулятора хранения.You can use this console window to start and stop the storage emulator. Можно также очистить данные, получить состояние и инициализировать эмулятор из командной строки.You can also clear data, get status, and initialize the emulator from the command prompt. Дополнительные сведения см. ниже в разделе Справочник по программе командной строки эмулятора хранения.For more information, see the Storage emulator command-line tool reference section later in this article.

Примечание

Эмулятор хранения Azure может запускаться неправильно, если в системе работает другой эмулятор хранения, например Азурите.The Azure storage emulator may not start correctly if another storage emulator, such as Azurite, is running on the system.

При запуске эмулятора в области уведомлений панели задач Windows появится соответствующий значок.When the emulator is running, you'll see an icon in the Windows taskbar notification area.

При закрытии окна командной строки эмулятора хранения эмулятор продолжит работу.When you close the storage emulator Command Prompt window, the storage emulator will continue to run. Чтобы снова вызвать окно консоли, повторите приведенные выше действия, как если бы снова запускали эмулятор хранения.To bring up the Storage Emulator console window again, follow the preceding steps as if starting the storage emulator.

При первом запуске эмулятора хранения инициализируется локальная среда хранения.The first time you run the storage emulator, the local storage environment is initialized for you. В процессе инициализации создается база данных в LocalDB и резервируются порты HTTP для каждой локальной службы хранилища.The initialization process creates a database in LocalDB and reserves HTTP ports for each local storage service.

Эмулятор хранения по умолчанию устанавливается в C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator.The storage emulator is installed by default to C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator.

Совет

Для работы с локальными ресурсами эмулятора можно использовать обозреватель хранилищ Microsoft Azure.You can use the Microsoft Azure Storage Explorer to work with local storage emulator resources. Найдите "(порты эмуляции по умолчанию) (ключ)" в разделе "Локальные & подключены" в дереве ресурсов Обозреватель службы хранилища после установки и запуска эмулятора хранения.Look for "(Emulator - Default Ports) (Key)" under "Local & Attached" in the Storage Explorer resources tree after you've installed and started the storage emulator.

Инициализация эмулятора хранения для использования другой базы данных SQLInitialize the storage emulator to use a different SQL database

Вы можете использовать программу командной строки эмулятора хранения, чтобы инициализировать эмулятор хранения для указания экземпляра базы данных SQL, отличного от экземпляра LocalDB по умолчанию.You can use the storage emulator command-line tool to initialize the storage emulator to point to a SQL database instance other than the default LocalDB instance:

  1. Откройте окно консоли эмулятора хранения, как описано в разделе Запуск и инициализация эмулятора хранения.Open the Storage Emulator console window as described in the Start and initialize the storage emulator section.

  2. В окне консоли введите следующую команду, где <SQLServerInstance> — имя экземпляра SQL Server.In the console window, type the following command, where <SQLServerInstance> is the name of the SQL Server instance. Чтобы использовать LocalDB, укажите (localdb)\MSSQLLocalDb в качестве экземпляра SQL Server.To use LocalDB, specify (localdb)\MSSQLLocalDb as the SQL Server instance.

    AzureStorageEmulator.exe init /server <SQLServerInstance>

    Можно использовать следующую команду, которая указывает эмулятору использовать экземпляр SQL Server по умолчанию:You can also use the following command, which directs the emulator to use the default SQL Server instance:

    AzureStorageEmulator.exe init /server .

    Кроме этого, вы можете также использовать следующую команду, которая повторно инициализирует базу данных до экземпляра LocalDB по умолчанию.Or, you can use the following command, which reinitializes the database to the default LocalDB instance:

    AzureStorageEmulator.exe init /forceCreate

Дополнительные сведения об этих командах см. в разделе Справочник по программе командной строки эмулятора хранения.For more information about these commands, see Storage emulator command-line tool reference.

Совет

Для управления экземплярами SQL Server, включая установку LocalDB, можно использовать Microsoft SQL Server Management Studio (SSMS).You can use the Microsoft SQL Server Management Studio (SSMS) to manage your SQL Server instances, including the LocalDB installation. В диалоговом окне Подключение к серверу SMSS укажите (localdb)\MSSQLLocalDb в поле Имя сервера: , чтобы подключиться к экземпляру LocalDB.In the SMSS Connect to Server dialog, specify (localdb)\MSSQLLocalDb in the Server name: field to connect to the LocalDB instance.

Проверка подлинности запросов на эмулятор храненияAuthenticating requests against the storage emulator

После установки и запуска эмулятора хранения можно проверить в нем свой код.Once you've installed and started the storage emulator, you can test your code against it. Каждый запрос к эмулятору хранения должен быть разрешен, если только это не анонимный запрос.Every request you make against the storage emulator must be authorized, unless it's an anonymous request. Авторизовать запросы для эмулятора хранения можно с помощью проверки подлинности по общему ключу или с помощью подписанного URL-адреса (SAS).You can authorize requests against the storage emulator using Shared Key authentication or with a shared access signature (SAS).

Авторизация с помощью учетных данных общего ключаAuthorize with Shared Key credentials

Эмулятор хранения поддерживает одну предопределенную учетную запись и известный ключ аутентификации для аутентификации с помощью общего ключа.The storage emulator supports a single fixed account and a well-known authentication key for Shared Key authentication. Эти учетная запись и ключ — единственные разрешенные учетные данные общего ключа для использования с эмулятором хранения.This account and key are the only Shared Key credentials permitted for use with the storage emulator. К ним относятся:They are:

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

Примечание

Ключ аутентификации, поддерживаемый эмулятором хранения, предназначен только для тестирования работы клиентского кода.The authentication key supported by the storage emulator is intended only for testing the functionality of your client authentication code. Его использование не гарантирует защиту.It does not serve any security purpose. Нельзя использовать рабочую учетную запись хранения и ключ для эмулятора хранения.You cannot use your production storage account and key with the storage emulator. Не следует использовать учетную запись для разработки с рабочими данными.You should not use the development account with production data.

Эмулятор хранения поддерживает подключения только по протоколу HTTP.The storage emulator supports connection via HTTP only. Тем не менее для доступа к ресурсам в рабочей учетной записи хранения Azure рекомендуется использовать протокол HTTPS.However, HTTPS is the recommended protocol for accessing resources in a production Azure storage account.

Подключение к учетной записи эмулятора с помощью ярлыкаConnect to the emulator account using a shortcut

Самый простой способ подключиться к эмулятору хранения из приложения — настроить строку подключения в файле конфигурации приложения, на которое ссылается ярлык: UseDevelopmentStorage=true.The easiest way to connect to the storage emulator from your application is to configure a connection string in your application's configuration file that references the shortcut UseDevelopmentStorage=true. Ниже приведен пример строки подключения к эмулятору хранения в файле app.config:Here's an example of a connection string to the storage emulator in an app.config file:

<appSettings>
  <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

Подключение к учетной записи эмулятора с помощью известного имени и ключа учетной записиConnect to the emulator account using the well-known account name and key

Для создания строки подключения, которая содержит ссылку на имя учетной записи и ключ эмулятора, в строке подключения следует указать конечные точки для каждой службы, которую нужно использовать из эмулятора.To create a connection string that references the emulator account name and key, you must specify the endpoints for each of the services you wish to use from the emulator in the connection string. Это необходимо, чтобы строка подключения содержала ссылки на конечные точки эмулятора, которые отличаются от конечных точек рабочей учетной записи хранения.This is necessary so that the connection string will reference the emulator endpoints, which are different than those for a production storage account. Например, значение строки подключения будет выглядеть следующим образом:For example, the value of your connection string will look like this:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

Это значение идентично показанному выше ярлыку ( UseDevelopmentStorage=true).This value is identical to the shortcut shown above, UseDevelopmentStorage=true.

Указание прокси-сервера HTTPSpecify an HTTP proxy

Если вы тестируете службу на эмуляторе хранения, можно также указать прокси-сервер HTTP.You can also specify an HTTP proxy to use when you're testing your service against the storage emulator. Это может быть полезно для отслеживания HTTP-запросов и ответов при отладке операций со службами хранилища.This can be useful for observing HTTP requests and responses while you're debugging operations against the storage services. Чтобы указать прокси-сервер, добавьте параметр DevelopmentStorageProxyUri в строку подключения и присвойте ему значение URI прокси-сервера.To specify a proxy, add the DevelopmentStorageProxyUri option to the connection string, and set its value to the proxy URI. В качестве примера приведена строка подключения, которая указывает эмулятор хранения и задает прокси-сервер HTTP:For example, here is a connection string that points to the storage emulator and configures an HTTP proxy:

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri

Дополнительные сведения о строках подключения см. в разделе Настройка строк подключения службы хранилища Azure.For more information on connection strings, see Configure Azure Storage connection strings.

Авторизация с помощью подписанного URL-адресаAuthorize with a shared access signature

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Некоторые клиентские библиотеки хранилища Azure, такие как библиотека Xamarin, поддерживают только проверку подлинности с помощью маркера подписанного URL-адреса (SAS).Some Azure storage client libraries, such as the Xamarin library, only support authentication with a shared access signature (SAS) token. Маркер SAS можно создать с помощью Обозреватель службы хранилища или другого приложения, поддерживающего проверку подлинности с использованием общего ключа.You can create the SAS token using Storage Explorer or another application that supports Shared Key authentication.

Кроме того, для этого можно использовать Azure PowerShell.You can also generate a SAS token by using Azure PowerShell. Следующий пример создает токен SAS с полными правами на контейнер BLOB-объектов:The following example generates a SAS token with full permissions to a blob container:

  1. Установите Azure PowerShell, если это еще не сделано (рекомендуется использовать последнюю версию командлетов Azure PowerShell).Install Azure PowerShell if you haven't already (using the latest version of the Azure PowerShell cmdlets is recommended). Инструкции по установке см. в статье Установка и настройка Azure PowerShell.For installation instructions, see Install and configure Azure PowerShell.
  2. Откройте Azure PowerShell и выполните приведенные ниже команды, заменив CONTAINER_NAME именем на свой выбор.Open Azure PowerShell and run the following commands, replacing CONTAINER_NAME with a name of your choosing:
$context = New-AzStorageContext -Local

New-AzStorageContainer CONTAINER_NAME -Permission Off -Context $context

$now = Get-Date

New-AzStorageContainerSASToken -Name CONTAINER_NAME -Permission rwdl -ExpiryTime $now.AddDays(1.0) -Context $context -FullUri

Полученный универсальный код ресурса (URI) для подписанного URL-адреса нового контейнера должен быть аналогичен следующему:The resulting shared access signature URI for the new container should be similar to:

http://127.0.0.1:10000/devstoreaccount1/sascontainer?sv=2012-02-12&se=2015-07-08T00%3A12%3A08Z&sr=c&sp=wl&sig=t%2BbzU9%2B7ry4okULN9S0wst%2F8MCUhTjrHyV9rDNLSe8g%3Dsss

Подписанный URL-адрес, созданный с помощью этого примера, действителен один день.The shared access signature created with this example is valid for one day. Подписанный URL-адрес предоставляет полные права (чтение, запись, удаление и создание списка) для BLOB-объектов в контейнере.The signature grants full access (read, write, delete, list) to blobs within the container.

Дополнительные сведения о подписанных URL-адресах см. в статье предоставление ограниченного доступа к ресурсам службы хранилища Azure с помощью подписанных URL (SAS).For more information on shared access signatures, see Grant limited access to Azure Storage resources using shared access signatures (SAS).

Обращение к ресурсам в эмуляторе храненияAddressing resources in the storage emulator

Конечные точки службы для эмулятора хранения отличаются от конечных точек для учетной записи хранения Azure.The service endpoints for the storage emulator are different from the endpoints for an Azure storage account. Локальный компьютер не выполняет разрешение имен доменов, поэтому конечные точки эмулятора хранения должны быть локальными адресами.The local computer doesn't do domain name resolution, requiring the storage emulator endpoints to be local addresses.

При обращении к ресурсу в учетной записи хранения Azure используйте приведенную ниже схему.When you address a resource in an Azure storage account, you use the following scheme. Имя учетной записи представляет собой часть имени узла в универсальном коде ресурса (URI), а ресурс, к которому выполняется обращение, — часть пути в универсальном коде ресурса (URI).The account name is part of the URI host name, and the resource being addressed is part of the URI path:

<http|https>://<account-name>.<service-name>.core.windows.net/<resource-path>

Например, допустимым адресом для большого двоичного объекта в учетной записи хранения Azure можно считать такой URI:For example, the following URI is a valid address for a blob in an Azure storage account:

https://myaccount.blob.core.windows.net/mycontainer/myblob.txt

Так как локальный компьютер не выполняет разрешение доменных имен, имя учетной записи является частью пути URI, а не имени узла.Because the local computer doesn't do domain name resolution, the account name is part of the URI path instead of the host name. Используйте для ресурса в эмуляторе хранения следующий формат URI:Use the following URI format for a resource in the storage emulator:

http://<local-machine-address>:<port>/<account-name>/<resource-path>

Например, следующий адрес можно использовать для получения доступа к большому двоичному объекту в эмуляторе службы хранилища:For example, the following address might be used for accessing a blob in the storage emulator:

http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt

Ниже перечислены конечные точки службы для эмулятора хранения:The service endpoints for the storage emulator are:

  • Служба BLOB-объектов: http://127.0.0.1:10000/<account-name>/<resource-path>Blob service: http://127.0.0.1:10000/<account-name>/<resource-path>
  • Служба очередей: http://127.0.0.1:10001/<account-name>/<resource-path>Queue service: http://127.0.0.1:10001/<account-name>/<resource-path>
  • Служба таблиц: http://127.0.0.1:10002/<account-name>/<resource-path>Table service: http://127.0.0.1:10002/<account-name>/<resource-path>

Обращение к вторичному расположению учетной записи с помощью RA-GRSAddressing the account secondary with RA-GRS

Начиная с версии 3.1, эмулятор хранения поддерживает геоизбыточную репликацию с доступом только для чтения (RA-GRS).Beginning with version 3.1, the storage emulator supports read-access geo-redundant replication (RA-GRS). Доступ к дополнительному расположению можно получить, добавив-Secondary в имя учетной записи.You can access the secondary location by appending -secondary to the account name. Например, следующий адрес можно использовать для получения доступа к большому двоичному объекту с помощью вторичного только для чтения в эмуляторе службы хранилища:For example, the following address might be used for accessing a blob using the read-only secondary in the storage emulator:

http://127.0.0.1:10000/myaccount-secondary/mycontainer/myblob.txt

Примечание

Для программного доступа к вторичному расположению с помощью эмулятора хранения используйте клиентскую библиотеку хранилища для .NET 3.2 или более поздней версии.For programmatic access to the secondary with the storage emulator, use the Storage Client Library for .NET version 3.2 or later. Дополнительные сведения см. в разделе Клиентская библиотека хранилища Microsoft Azure для .NET.See the Microsoft Azure Storage Client Library for .NET for details.

Справочник по программе командной строки эмулятора храненияStorage emulator command-line tool reference

Начиная с версии 3.0, при запуске эмулятора хранения отображается окно консоли.Starting in version 3.0, a console window is displayed when you start the Storage Emulator. Используйте командную строку в окне консоли для запуска и завершения работы эмулятора.Use the command line in the console window to start and stop the emulator. Кроме того, можно запрашивать состояние и выполнять другие операции из командной строки.You can also query for status and do other operations from the command line.

Примечание

Если у вас уже установлен эмулятор вычислений Microsoft Azure, то при запуске эмулятора хранения в области уведомлений появится соответствующий значок.If you have the Microsoft Azure compute emulator installed, a system tray icon appears when you launch the Storage Emulator. Щелкните этот значок правой кнопкой мыши, чтобы вызвать меню, которое позволяет запустить и остановить работу эмулятора хранения графическим путем.Right-click on the icon to reveal a menu that provides a graphical way to start and stop the Storage Emulator.

Синтаксис для командной строкиCommand-line syntax

AzureStorageEmulator.exe [start] [stop] [status] [clear] [init] [help]

ПараметрыOptions

Чтобы просмотреть список параметров, в командной строке введите /help .To view the list of options, type /help at the command prompt.

ВариантOption ОписаниеDescription КомандаCommand АргументыArguments
НачалоStart Запускает эмулятор хранения.Starts up the storage emulator. AzureStorageEmulator.exe start [-inprocess] -Reprocess: Запуск эмулятора в текущем процессе вместо создания нового процесса.-Reprocess: Start the emulator in the current process instead of creating a new process.
ОстановитьStop Останавливает эмулятор хранения.Stops the storage emulator. AzureStorageEmulator.exe stop
СостояниеStatus Печатает состояние эмулятора хранения.Prints the status of the storage emulator. AzureStorageEmulator.exe status
ClearClear Очищает данные во всех службах, указанных в командной строке.Clears the data in all services specified on the command line. AzureStorageEmulator.exe clear [blob] [table] [queue] [all] blob: удаляет данные о больших двоичных объектах.blob: Clears blob data.
queue: удаляет данные об очередях.queue: Clears queue data.
table: удаляет данные о таблицах.table: Clears table data.
all: удаляет все данные во всех службах.all: Clears all data in all services.
InitInit Выполняет однократную инициализацию для настройки эмулятора.Does one-time initialization to set up the emulator. AzureStorageEmulator.exe init [-server serverName] [-sqlinstance instanceName] [-forcecreate|-skipcreate] [-reserveports|-unreserveports] [-inprocess] -server serverName\instanceName: указывает сервер для размещения экземпляра SQL.-server serverName\instanceName: Specifies the server hosting the SQL instance.
-sqlinstance имя_экземпляра: указывает имя экземпляра SQL, используемого на сервере по умолчанию.-sqlinstance instanceName: Specifies the name of the SQL instance to be used in the default server instance.
-forcecreate: принудительно создает базу данных SQL, даже если она уже существует.-forcecreate: Forces creation of the SQL database, even if it already exists.
-skipcreate: пропускает создание базы данных SQL.-skipcreate: Skips creation of the SQL database. Имеет приоритет над -forcecreate.This takes precedence over -forcecreate.
-reserveports: пытается зарезервировать порты HTTP, связанные со службами.-reserveports: Attempts to reserve the HTTP ports associated with the services.
-unreserveports: пытается отменить резервирование портов HTTP, связанных со службами.-unreserveports: Attempts to remove reservations for the HTTP ports associated with the services. Имеет приоритет над -reserveports.This takes precedence over -reserveports.
-inprocess: выполняет инициализацию в текущем процессе вместо порождения нового процесса.-inprocess: Performs initialization in the current process instead of spawning a new process. При изменении резервирований портов нужно запустить текущий процесс с повышенными привилегиями.The current process must be launched with elevated permissions if changing port reservations.

Различия между эмулятором хранения и службой хранилища AzureDifferences between the storage emulator and Azure Storage

Так как эмулятор хранения является локальной эмулированной средой, между использованием эмулятора и учетной записи хранения Azure в облаке существуют различия:Because the storage emulator is a local emulated environment, there are differences between using the emulator and an Azure storage account in the cloud:

  • Эмулятор хранения поддерживает только одну предопределенную учетную запись и известный ключ аутентификации.The storage emulator supports only a single fixed account and a well-known authentication key.
  • Эмулятор хранения не является масштабируемым службой хранилища и не поддерживает большое количество параллельных клиентов.The storage emulator isn't a scalable storage service and doesn't support a large number of concurrent clients.
  • Как описано в разделе Обращение к ресурсам в эмуляторе хранения, обращение к ресурсам в эмуляторе хранения и в учетной записи хранения Azure происходит по-разному.As described in Addressing resources in the storage emulator, resources are addressed differently in the storage emulator versus an Azure storage account. Разница заключается в том, что разрешение имен доменов доступно в облаке, но не на локальном компьютере.The difference is because domain name resolution is available in the cloud but not on the local computer.
  • Начиная с версии 3.1, учетная запись эмулятора хранения поддерживает геоизбыточную репликацию с доступом только для чтения (RA-GRS).Beginning with version 3.1, the storage emulator account supports read-access geo-redundant replication (RA-GRS). В эмуляторе все учетные записи включены в RA-GRS и никогда не задерживается между первичной и вторичной репликами.In the emulator, all accounts have RA-GRS enabled and there's never any lag between the primary and secondary replicas. Операции получения статистики службы BLOB-объектов, получения статистики службы очередей и получения статистики службы таблиц поддерживаются во вторичном расположении учетной записи и всегда будут возвращать значение элемента ответа LastSyncTime в виде текущего времени в соответствии с основной базой данных SQL.The Get Blob Service Stats, Get Queue Service Stats, and Get Table Service Stats operations are supported on the account secondary and will always return the value of the LastSyncTime response element as the current time according to the underlying SQL database.
  • Конечные точки службы файлов и протокола SMB в настоящее время не поддерживаются в эмуляторе хранения.The File service and SMB protocol service endpoints aren't currently supported in the storage emulator.
  • При использовании версии служб хранилища, которая не поддерживается эмулятором, эмулятор возвращает ошибку ошибку versionnotsupportedbyemulator (код состояния HTTP 400-недопустимый запрос).If you use a version of the storage services that is not supported by the emulator, the emulator returns a VersionNotSupportedByEmulator error (HTTP status code 400 - Bad Request).

Отличия для хранилища больших двоичных объектовDifferences for Blob storage

Хранилище больших двоичных объектов в эмуляторе отличается следующим образом:The following differences apply to Blob storage in the emulator:

  • Эмулятор хранения поддерживает только большие двоичные объекты размером до 2 ГБ.The storage emulator only supports blob sizes up to 2 GB.
  • Максимальная длина имени большого двоичного объекта в эмуляторе хранения составляет 256 символов, а максимальная длина имени большого двоичного объекта в службе хранилища Azure — 1024 символа.The maximum length of a blob name in the storage emulator is 256 characters, while the maximum length of a blob name in Azure Storage is 1024 characters.
  • Добавочное копирование позволяет копировать моментальные снимки перезаписанных больших двоичных объектов, что возвращает ошибку в службе.Incremental copy allows snapshots from overwritten blobs to be copied, which returns a failure on the service.
  • Не удается получить диапазоны страниц различие между моментальными снимками, скопированными с помощью большого двоичного объекта добавочного копирования.Get Page Ranges Diff doesn't work between snapshots copied using Incremental Copy Blob.
  • Операция размещения большого двоичного объекта может быть выполнена для большого двоичного объекта, существующего в эмуляторе хранения с активной арендой, даже если в запросе не указан идентификатор аренды.A Put Blob operation may succeed against a blob that exists in the storage emulator with an active lease even if the lease ID hasn't been specified in the request.
  • Эмулятор не поддерживает операции с добавочными большими двоичными объектами.Append Blob operations are not supported by the emulator. При попытке выполнить операцию с добавочным большим двоичным объектом возвращается ошибка FeatureNotSupportedByEmulator (код состояния HTTP «400 — Неверный запрос»).Attempting an operation on an append blob returns a FeatureNotSupportedByEmulator error (HTTP status code 400 - Bad Request).

Отличия для хранилища таблицDifferences for Table storage

Хранилище таблиц в эмуляторе отличается следующим образом:The following differences apply to Table storage in the emulator:

  • Свойства даты в службе таблиц в эмуляторе хранения поддерживают только диапазон, поддерживаемый SQL Server 2005 (они должны быть позже 1 января 1753).Date properties in the Table service in the storage emulator support only the range supported by SQL Server 2005 (they're required to be later than January 1, 1753). Все даты до 1 января 1753 г. заменяются этим значением.All dates before January 1, 1753 are changed to this value. Точность дат ограничивается точностью SQL Server 2005, т. е. 1/300 секунды.The precision of dates is limited to the precision of SQL Server 2005, meaning that dates are precise to 1/300th of a second.
  • Эмулятор хранения поддерживает значения ключа раздела и строки свойств ключа, каждое из которых не превышает 512 байт.The storage emulator supports partition key and row key property values of less than 512 bytes each. Общий размер имен учетной записи, имени таблицы и ключевых свойств не может превышать 900 байт.The total size of the account name, table name, and key property names together can't exceed 900 bytes.
  • Общий размер строки в таблице эмулятора хранения не должен превышать 1 МБ.The total size of a row in a table in the storage emulator is limited to less than 1 MB.
  • В эмуляторе хранения свойства типа данных Edm.Guid или Edm.Binary поддерживают только операторы сравнения Equal (eq) и NotEqual (ne) в строках фильтра запроса.In the storage emulator, properties of data type Edm.Guid or Edm.Binary support only the Equal (eq) and NotEqual (ne) comparison operators in query filter strings.

Отличия для хранилища очередейDifferences for Queue storage

Хранилище очередей в эмуляторе не имеет отличий.There are no differences specific to Queue storage in the emulator.

Замечания к выпуску эмулятора храненияStorage emulator release notes

Версия 5,10Version 5.10

  • Эмулятор хранения не отклоняет версию 2019-07-07 служб хранилища для конечных точек службы BLOB-объектов, очередей и таблиц.The storage emulator won't reject version 2019-07-07 of the storage services on Blob, Queue, and Table service endpoints.

Версия 5,9Version 5.9

  • Эмулятор хранения не отклоняет версию 2019-02-02 служб хранилища для конечных точек службы BLOB-объектов, очередей и таблиц.The storage emulator won't reject version 2019-02-02 of the storage services on Blob, Queue, and Table service endpoints.

Версия 5,8Version 5.8

  • Эмулятор хранения не отклоняет версию 2018-11-09 служб хранилища для конечных точек службы BLOB-объектов, очередей и таблиц.The storage emulator won't reject version 2018-11-09 of the storage services on Blob, Queue, and Table service endpoints.

Версия 5.7Version 5.7

  • Исправлена ошибка, приводившая к сбою при включении ведения журнала.Fixed a bug that would cause a crash if logging was enabled.

Версия 5.6Version 5.6

  • Теперь эмулятор хранения поддерживает версию 2018-03-28 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2018-03-28 of the storage services on Blob, Queue, and Table service endpoints.

Версия 5.5Version 5.5

  • Теперь эмулятор хранения поддерживает версию 2017-11-09 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2017-11-09 of the storage services on Blob, Queue, and Table service endpoints.
  • Добавлена поддержка свойства большого двоичного объекта Created, которое возвращает время создания большого двоичного объекта.Support has been added for the blob Created property, which returns the blob's creation time.

Версия 5.4Version 5.4

  • Чтобы повысить стабильность установки, эмулятор больше не пытается резервировать порты во время установки.To improve installation stability, the emulator no longer attempts to reserve ports at install time. Если вы хотите использовать резервирование портов, используйте параметр -reserveports команды init , чтобы указать их.If you want port reservations, use the -reserveports option of the init command to specify them.

Версия 5.3Version 5.3

  • Теперь эмулятор хранения поддерживает версию 2017-07-29 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2017-07-29 of the storage services on Blob, Queue, and Table service endpoints.

Версия 5.2Version 5.2

  • Теперь эмулятор хранения поддерживает версию 2017-04-17 служб хранения для конечных точек служб BLOB-объектов, очередей и таблиц.The storage emulator now supports version 2017-04-17 of the storage services on Blob, Queue, and Table service endpoints.
  • Исправлена ошибка, при которой значения свойств таблицы не были правильно закодированы.Fixed a bug where table property values weren't being properly encoded.

Версия 5.1Version 5.1

  • Исправлена ошибка, когда эмулятор хранения возвращал заголовок DataServiceVersion в некоторых ответах, а служба не возвращала.Fixed a bug where the storage emulator was returning the DataServiceVersion header in some responses where the service was not.

Версия 5.0Version 5.0

  • Установщик эмулятора хранения больше не проверяет наличие существующих установок MSSQL и .NET Framework.The storage emulator installer no longer checks for existing MSSQL and .NET Framework installs.
  • Установщик эмулятора хранения больше не создает базу данных в ходе установки.The storage emulator installer no longer creates the database as part of install. При необходимости база данных будет по-прежнему создаваться в процессе запуска.Database will still be created if needed as part of startup.
  • Для создания базы данных больше не требуются повышенные права.Database creation no longer requires elevation.
  • Для запуска больше не требуются резервирования портов.Port reservations are no longer needed for startup.
  • Добавлены следующие параметры для init: -reserveports (требуются повышенные права), -unreserveports (требуются повышенные права), -skipcreate.Adds the following options to init: -reserveports (requires elevation), -unreserveports (requires elevation), -skipcreate.
  • Параметр Пользовательский интерфейс эмулятора хранения на значке панели задач теперь запускает интерфейс командной строки.The Storage Emulator UI option on the system tray icon now launches the command-line interface. Старый графический интерфейс пользователя больше недоступен.The old GUI is no longer available.
  • Некоторые библиотеки DLL были удалены или переименованы.Some DLLs have been removed or renamed.

Версия 4.6Version 4.6

  • Теперь эмулятор хранения поддерживает версию 2016-05-31 служб хранилища для конечных точек служб BLOB-объектов, очередей и таблиц.The storage emulator now supports version 2016-05-31 of the storage services on Blob, Queue, and Table service endpoints.

Версия 4.5Version 4.5

  • Исправлена ошибка, которая привела к сбою установки и инициализации при переименовании резервной базы данных.Fixed a bug that caused installation and initialization to fail when the backing database is renamed.

Версия 4.4Version 4.4

  • Теперь эмулятор хранения поддерживает версию 2015-12-11 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2015-12-11 of the storage services on Blob, Queue, and Table service endpoints.
  • Выполняемая в эмуляторе хранения сборка ненужных данных больших двоичных объектов теперь оптимизирована для работы с большим количеством BLOB-объектов.The storage emulator's garbage collection of blob data is now more efficient when dealing with large numbers of blobs.
  • Исправлена ошибка, которая приводила к небольшим различиям в процедуре проверки контейнера XML ACL (в сравнении с проверкой, выполняемой службой хранилища).Fixed a bug that caused container ACL XML to be validated slightly differently from how the storage service does it.
  • Исправлена ошибка, которая иногда приводила к сообщениям о минимальном и максимальном значениях времени и даты для неправильного часового пояса.Fixed a bug that sometimes caused max and min DateTime values to be reported in the incorrect time zone.

Версия 4.3Version 4.3

  • Теперь эмулятор хранения поддерживает версии 2015-07-08 служб хранилища для конечных точек служб BLOB-объектов, очередей и таблиц.The storage emulator now supports version 2015-07-08 of the storage services on Blob, Queue, and Table service endpoints.

Версия 4.2Version 4.2

  • Теперь эмулятор хранения поддерживает версию 2015-04-05 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2015-04-05 of the storage services on Blob, Queue, and Table service endpoints.

Версия 4.1Version 4.1

  • Эмулятор хранения теперь поддерживает версию 2015-02-21 служб хранилища для конечных точек службы BLOB-объектов, очередей и таблиц.The storage emulator now supports version 2015-02-21 of the storage services on Blob, Queue, and Table service endpoints. Новые функции добавочного BLOB-объекта не поддерживаются.It doesn't support the new Append Blob features.
  • Теперь эмулятор возвращает осмысленное сообщение об ошибке для неподдерживаемых версий служб хранилища.The emulator now returns a meaningful error message for unsupported versions of storage services. Мы советуем использовать эмулятор последней версии.We recommend using the latest version of the emulator. Если возникает ошибка ошибку versionnotsupportedbyemulator (код состояния HTTP 400-недопустимый запрос), скачайте последнюю версию эмулятора.If you get a VersionNotSupportedByEmulator error (HTTP status code 400 - Bad Request), download the latest version of the emulator.
  • Исправлена ошибка состояния гонки, которая приводила к неправильным данным сущности таблицы при одновременных операциях слияния.Fixed a bug wherein a race condition caused table entity data to be incorrect during concurrent merge operations.

Версия 4.0Version 4.0

  • Исполняемый файл эмулятора хранения был переименован на AzureStorageEmulator.exe.The storage emulator executable has been renamed to AzureStorageEmulator.exe.

Версия 3.2Version 3.2

  • Теперь эмулятор хранения поддерживает версии 2014-02-14 служб хранилища для конечных точек служб больших двоичных объектов, очередей и таблиц.The storage emulator now supports version 2014-02-14 of the storage services on Blob, Queue, and Table service endpoints. Конечные точки службы файлов сейчас не поддерживаются в эмуляторе хранения.File service endpoints aren't currently supported in the storage emulator. Дополнительные сведения о версии 2014-02-14 см. в разделе Управление версиями для служб хранилища Azure.See Versioning for the Azure Storage Services for details about version 2014-02-14.

Версия 3.1Version 3.1

  • Теперь геоизбыточное хранилище с доступом для чтения (RA-GRS) поддерживается и в эмуляторе хранения.Read-access geo-redundant storage (RA-GRS) is now supported in the storage emulator. Интерфейсы API Get Blob Service Stats, Get Queue Service Stats и Get Table Service Stats поддерживаются для вторичной учетной записи и всегда будут возвращать значение элемента ответа Ластсинктиме как текущее время в соответствии с базовой базой данных SQL.The Get Blob Service Stats, Get Queue Service Stats, and Get Table Service Stats APIs are supported for the account secondary and will always return the value of the LastSyncTime response element as the current time according to the underlying SQL database. Для программного доступа к вторичному расположению с помощью эмулятора хранения используйте клиентскую библиотеку хранилища для .NET 3.2 или более поздней версии.For programmatic access to the secondary with the storage emulator, use the Storage Client Library for .NET version 3.2 or later. Подробнее см. в справочнике по клиентской библиотеке хранилища Microsoft Azure для .NET.See the Microsoft Azure Storage Client Library for .NET Reference for details.

Версия 3.0Version 3.0

  • Эмулятор хранения Azure больше не поставляется в одном пакете с эмулятором вычислений.The Azure storage emulator is no longer shipped in the same package as the compute emulator.
  • Графический пользовательский интерфейс эмулятора хранения является устаревшим.The storage emulator graphical user interface is deprecated. Он был заменен интерфейсом командной строки с поддержкой сценариев.It has been replaced by a scriptable command-line interface. Дополнительную информацию об интерфейсе командной строки см. в справочнике по программе командной строки эмулятора хранения.For details on the command-line interface, see Storage Emulator Command-Line Tool Reference. Графический интерфейс будет доступен в версии 3.0, но только после установки эмулятора вычислений щелчком правой кнопкой мыши на значке области уведомлений и при последующем выборе значения «Показать пользовательский интерфейс эмулятора хранения».The graphical interface will continue to be present in version 3.0, but it can only be accessed when the Compute Emulator is installed by right-clicking on the system tray icon and selecting Show Storage Emulator UI.
  • Версия 2013-08-15 служб хранилища Azure теперь поддерживается полностью.Version 2013-08-15 of the Azure storage services is now fully supported. (Ранее эта версия поддерживалась только в предварительной версии 2.2.1 эмулятора хранения)(Previously this version was only supported by Storage Emulator version 2.2.1 Preview.)

Дальнейшие действияNext steps