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

Эмулятор службы хранилища Microsoft Azure предоставляет собой локальную среду, эмулирующую службы BLOB-объектов, очередей и таблиц для целей разработки.The Microsoft Azure storage emulator provides a local environment that emulates the Azure Blob, Queue, and Table services for development purposes. Используя эмулятор хранения, можно локально протестировать приложение со службами хранилища без создания подписки Azure, избежав затрат.Using the storage emulator, 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, you can 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, могут воспользоваться эмулятором хранения с открытым кодом Azurite, поддерживаемым сообществом.For those considering 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

Для эмуляции служб хранилища Azure эмулятор хранения использует локальный экземпляр Microsoft SQL Server и локальную файловую систему.The storage emulator uses a local Microsoft SQL Server instance and the local file system to emulate Azure storage services. По умолчанию эмулятор хранения использует базу данных, расположенную в Microsoft® SQL Server 2012 Express LocalDB.By default, the storage emulator uses a database in Microsoft SQL Server 2012 Express LocalDB. Вы можете настроить эмулятор хранения для доступа к локальному экземпляру SQL Server вместо LocalDB.You can choose to configure the storage emulator to access a local instance of SQL Server instead of the LocalDB instance. Дополнительные сведения см. ниже в разделе Запуск и инициализация эмулятора хранения.For more information, see the Start and initialize the storage emulator section later in this article.

Эмулятор хранения подключается к 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, clear data, get status, and initialize the emulator. Дополнительные сведения см. ниже в разделе Справочник по программе командной строки эмулятора хранения.For more information, see the Storage emulator command-line tool reference section later in this article.

При запуске эмулятора в области уведомлений панели задач 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 "(Development)" under "Storage Accounts" 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. Как и в службе хранилища Azure в облаке, каждый запрос, отправляемый в эмулятор хранения, должен быть авторизован. В противном случае такой запрос будет считаться анонимным.As with Azure Storage in the cloud, every request you make against the storage emulator must be authorized, unless it is 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 a tool like the 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-адресах см. в разделе Использование подписанных URL-адресов (SAS) в службе хранилища Azure.For more information on shared access signatures, see Using shared access signatures (SAS) in Azure Storage.

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

Конечные точки службы для эмулятора хранения отличаются от аналогичных точек учетной записи хранилища Azure.The service endpoints for the storage emulator are different from those of an Azure storage account. Различие заключается в том, что локальный компьютер не обеспечивает разрешение доменных имен, поэтому конечные точки эмулятора хранения должны иметь локальный адрес.The difference is because the local computer does not perform 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, а не именем узла, так как локальный компьютер не обеспечивает разрешение доменных имен.However, the storage emulator, because the local computer does not perform 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 к имени учетной записи.For storage resources both in the cloud and in the local emulator, 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 as well as query for status and perform other operations.

Примечание

Если у вас уже установлен эмулятор вычислений 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] -inprocess: запускает эмулятор в текущем процессе вместо создания нового процесса.-inprocess: 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 Выполняет одноразовую инициализацию для настройки эмулятора.Performs one-time initialization to set up the emulator. AzureStorageEmulator.exe init [-server serverName] [-sqlinstance instanceName] [-forcecreate|-skipcreate] [-reserveports|-unreserveports] [-inprocess] -server serverName\имя_экземпляра: указывает сервер для размещения экземпляра 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

Эмулятор хранения представляет собой эмулированную среду, выполняемую в локальном экземпляре SQL. Поэтому между эмулятором и учетной записью хранения Azure в облаке существуют функциональные различия.Because the storage emulator is an emulated environment running in a local SQL instance, there are differences in functionality between 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 is not a scalable storage service and does not 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. Основное отличие заключается в том, что разрешение доменных имен доступно в облаке, но не на локальном компьютере.This 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 is 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 are not currently supported in the storage emulator.
  • Если для используемой версии эмулятора хранения в настоящее время не поддерживается используемая версия служб хранилища, то он возвращает ошибку VersionNotSupportedByEmulator (код состояния "HTTP 400 — ошибочный запрос").If you use a version of the storage services that is not yet supported by the emulator, the storage 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 не работает для моментальных снимков, скопированных с помощью операции Incremental Copy Blob.Get Page Ranges Diff does not work between snapshots copied using Incremental Copy Blob.
  • Операция Put 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 has not 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 are 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 байт.Additionally, the total size of the account name, table name, and key property names together cannot 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.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 port reservations are desired, 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 were not 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 initialization and installation of the storage emulator to fail when the backing database was 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, except for the new Append Blob features.
  • Если вы используете службы хранилища версии, которая пока не поддерживается используемой версией эмулятора, то эмулятор хранения возвращает информативное сообщение об ошибке.If you use a version of the storage services that is not yet supported by the emulator, the emulator returns a meaningful error message. Мы советуем использовать эмулятор последней версии.We recommend using the latest version of the emulator. При возникновении ошибки VersionNotSupportedByEmulator (код состояния HTTP «400 — Неверный запрос») скачайте последнюю версию эмулятора хранения.If you encounter a VersionNotSupportedByEmulator error (HTTP status code 400 - Bad Request), please download the latest version of the storage 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 are not 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 получения статистики службы BLOB-объектов, получения статистики службы очередей и получения статистики службы таблиц поддерживаются во вторичном расположении учетной записи и всегда будут возвращать значение элемента ответа LastSyncTime в виде текущего времени в соответствии с основной базой данных 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 in favor of 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