Uso del emulador de Azure Storage para desarrollo y pruebasUse the Azure storage emulator for development and testing

Emulador de Microsoft Azure Storage proporciona un entorno local que emula los servicios Azure Blob, Queue y Table para fines de desarrollo.The Microsoft Azure storage emulator provides a local environment that emulates the Azure Blob, Queue, and Table services for development purposes. Mediante el emulador de almacenamiento, puede probar la aplicación en los servicios de almacenamiento local, sin crear una suscripción a Azure ni incurrir en ningún gasto.Using the storage emulator, you can test your application against the storage services locally, without creating an Azure subscription or incurring any costs. Cuando esté satisfecho con el funcionamiento de la aplicación en el emulador, puede cambiar al uso de una cuenta de almacenamiento de Azure en la nube.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.

Obtención del emulador de almacenamientoGet the storage emulator

El emulador de almacenamiento se encuentra disponible con el SDK de Microsoft Azure.The storage emulator is available as part of the Microsoft Azure SDK. También puede instalar el emulador de almacenamiento mediante el instalador independiente (descarga directa).You can also install the storage emulator by using the standalone installer (direct download). Para instalar el emulador de almacenamiento, debe tener privilegios de administrador en el equipo.To install the storage emulator, you must have administrative privileges on your computer.

El emulador de almacenamiento solo se ejecuta actualmente en Windows.The storage emulator currently runs only on Windows. Para quienes consideran un emulador de almacenamiento para Linux, una opción es el emulador de código abierto Azurite, mantenido por la comunidad.For those considering a storage emulator for Linux, one option is the community maintained, open source storage emulator Azurite.

Nota

No se garantiza que los datos que se crean en una versión del emulador de almacenamiento estén disponibles cuando se utilice una versión diferente.Data created in one version of the storage emulator is not guaranteed to be accessible when using a different version. Si necesita conservar los datos a largo plazo, es recomendable que almacene esos datos en una cuenta de almacenamiento de Azure y no en el mismo emulador de almacenamiento.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.

El emulador de almacenamiento depende de versiones específicas de las bibliotecas de OData.The storage emulator depends on specific versions of the OData libraries. No se admite la sustitución de las DLL de OData usadas por el emulador de almacenamiento con otras versiones y, de ser así, puede provocar un comportamiento inesperado.Replacing the OData DLLs used by the storage emulator with other versions is unsupported, and may cause unexpected behavior. Sin embargo, cualquier versión de OData admitida por el servicio de almacenamiento puede utilizarse para enviar las solicitudes al emulador.However, any version of OData supported by the storage service may be used to send requests to the emulator.

Cómo funciona el emulador de almacenamiento.How the storage emulator works

El emulador de almacenamiento usa una instancia de Microsoft SQL Server local, así como el sistema de archivos local para emular los servicios de almacenamiento de Azure.The storage emulator uses a local Microsoft SQL Server instance and the local file system to emulate Azure storage services. De manera predeterminada, el emulador de almacenamiento usa una base de datos en Microsoft SQL Server 2012 Express LocalDB.By default, the storage emulator uses a database in Microsoft SQL Server 2012 Express LocalDB. Puede configurar el emulador de almacenamiento para acceder a una instancia local de SQL Server en lugar de una de LocalDB.You can choose to configure the storage emulator to access a local instance of SQL Server instead of the LocalDB instance. Para más información, consulte la sección Iniciar e inicializar el emulador de almacenamiento más adelante en este artículo.For more information, see the Start and initialize the storage emulator section later in this article.

El emulador de almacenamiento se conecta a SQL Server o LocalDB mediante la autenticación de Windows.The storage emulator connects to SQL Server or LocalDB using Windows authentication.

Existen algunas diferencias de funcionalidad entre el emulador de almacenamiento y los servicios de almacenamiento de Azure.Some differences in functionality exist between the storage emulator and Azure storage services. Para más información sobre estas diferencias, consulte la sección Diferencias entre el emulador de almacenamiento y Azure Storage.For more information about these differences, see the Differences between the storage emulator and Azure Storage section later in this article.

Iniciar e inicializar el emulador de almacenamientoStart and initialize the storage emulator

Para iniciar el emulador de Azure Storage:To start the Azure storage emulator:

  1. Haga clic en el botón Inicio o pulse la tecla Windows.Select the Start button or press the Windows key.
  2. Comience a escribir Azure Storage Emulator.Begin typing Azure Storage Emulator.
  3. Seleccione el emulador de la lista de aplicaciones mostradas.Select the emulator from the list of displayed applications.

Cuando se inicie el emulador de almacenamiento, aparecerá una ventana de símbolo del sistema.When the storage emulator starts, a Command Prompt window will appear. Puede usar esta ventana de consola para iniciar y detener el emulador de almacenamiento, borrar datos, obtener su estado e inicializar el emulador.You can use this console window to start and stop the storage emulator, clear data, get status, and initialize the emulator. Para más información, consulte la sección Referencia de la herramienta de la línea de comandos del emulador de almacenamiento más adelante en este artículo.For more information, see the Storage emulator command-line tool reference section later in this article.

Cuando se ejecuta el emulador, verá un icono en el área de notificación de la barra de tareas de Windows.When the emulator is running, you'll see an icon in the Windows taskbar notification area.

Al cerrar la ventana de símbolo del sistema del emulador de almacenamiento, el emulador de almacenamiento continuará funcionando.When you close the storage emulator Command Prompt window, the storage emulator will continue to run. Para abrir de nuevo la ventana de consola del emulador de almacenamiento, siga los pasos anteriores como si fuera a iniciar el emulador de almacenamiento.To bring up the Storage Emulator console window again, follow the preceding steps as if starting the storage emulator.

Al ejecutar por primera vez el emulador de almacenamiento, el entorno de almacenamiento local se inicia automáticamente.The first time you run the storage emulator, the local storage environment is initialized for you. El proceso de inicialización crea una base de datos en LocalDB y se reserva puertos HTTP para cada servicio de almacenamiento local.The initialization process creates a database in LocalDB and reserves HTTP ports for each local storage service.

El emulador de almacenamiento está instalado de forma predeterminada en 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.

Sugerencia

Puede usar el Explorador de Microsoft Azure Storage para trabajar con recursos locales del emulador de almacenamiento.You can use the Microsoft Azure Storage Explorer to work with local storage emulator resources. Después de haber instalado e iniciado el emulador de almacenamiento, busque "(Desarrollo)" en "Cuentas de Storage" en el árbol de recursos del Explorador de Storage.Look for "(Development)" under "Storage Accounts" in the Storage Explorer resources tree after you've installed and started the storage emulator.

Inicializar el emulador de almacenamiento para usar otra base de datos SQLInitialize the storage emulator to use a different SQL database

La herramienta de la línea de comandos del emulador de almacenamiento se puede usar para inicializar el emulador de almacenamiento para que señale a una instancia de base de datos SQL distinta a la instancia LocalDB predeterminada: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. Abra la ventana de consola del emulador de almacenamiento como se describe en la sección Iniciar e inicializar el emulador de almacenamiento.Open the Storage Emulator console window as described in the Start and initialize the storage emulator section.

  2. En la ventana de consola, escriba el siguiente comando, donde <SQLServerInstance> es el nombre de la instancia de SQL Server.In the console window, type the following command, where <SQLServerInstance> is the name of the SQL Server instance. Para usar LocalDb, especifique (localdb)\MSSQLLocalDb como instancia de SQL Server.To use LocalDB, specify (localdb)\MSSQLLocalDb as the SQL Server instance.

    AzureStorageEmulator.exe init /server <SQLServerInstance>

    También puede usar el siguiente comando, el cual indicará al emulador que utilice la instancia predeterminada de SQL Server:You can also use the following command, which directs the emulator to use the default SQL Server instance:

    AzureStorageEmulator.exe init /server .

    O bien, puede usar el comando siguiente, que reinicializa la base de datos a la instancia de LocalDB predeterminada:Or, you can use the following command, which reinitializes the database to the default LocalDB instance:

    AzureStorageEmulator.exe init /forceCreate

Para más información sobre estos comandos, consulte la sección Referencia de la herramienta de la línea de comandos del emulador de almacenamiento.For more information about these commands, see Storage emulator command-line tool reference.

Sugerencia

Puede usar Microsoft SQL Server Management Studio (SSMS) para administrar las instancias de SQL Server, incluida la instalación de LocalDB.You can use the Microsoft SQL Server Management Studio (SSMS) to manage your SQL Server instances, including the LocalDB installation. En el cuadro de diálogo Conectar al servidor de SMSS, especifique (localdb)\MSSQLLocalDb en el campo Nombre del servidor: para conectarse a la instancia de LocalDB.In the SMSS Connect to Server dialog, specify (localdb)\MSSQLLocalDb in the Server name: field to connect to the LocalDB instance.

Autenticar solicitudes frente al emulador de almacenamientoAuthenticating requests against the storage emulator

Cuando haya instalado e iniciado el emulador de almacenamiento, puede probar el código en él.Once you've installed and started the storage emulator, you can test your code against it. De la misma manera que con Azure Storage en la nube, todas las solicitudes que realice en el emulador de almacenamiento se deben autorizar, a menos que sea una solicitud anónima.As with Azure Storage in the cloud, every request you make against the storage emulator must be authorized, unless it is an anonymous request. Puede autorizar solicitudes contra el emulador de almacenamiento mediante la autenticación de clave compartida o con una firma de acceso compartido (SAS).You can authorize requests against the storage emulator using Shared Key authentication or with a shared access signature (SAS).

Autorización con credenciales de clave compartidaAuthorize with Shared Key credentials

El emulador de almacenamiento es compatible con una sola cuenta fija y una clave de autenticación ya conocida para autenticación de clave compartida.The storage emulator supports a single fixed account and a well-known authentication key for Shared Key authentication. Esta cuenta y clave son las únicas credenciales de clave compartida que se admiten para su uso con el emulador de almacenamiento.This account and key are the only Shared Key credentials permitted for use with the storage emulator. Son las siguientes:They are:

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

Nota

La clave de autenticación admitida por el emulador de almacenamiento está pensada para comprobar únicamente la funcionalidad de su código de autenticación de cliente.The authentication key supported by the storage emulator is intended only for testing the functionality of your client authentication code. No responde a ningún propósito de seguridad.It does not serve any security purpose. A parte, no puede utilizar la cuenta de almacenamiento y la clave de producción con el emulador.You cannot use your production storage account and key with the storage emulator. Se debe tener en cuenta que no se puede utilizar la cuenta de desarrollo con datos de producción.You should not use the development account with production data.

El emulador de almacenamiento admite solo la conexión a través de HTTP.The storage emulator supports connection via HTTP only. Sin embargo, HTTPS es el protocolo recomendado para obtener acceso a recursos en una cuenta de producción de Azure Storage.However, HTTPS is the recommended protocol for accessing resources in a production Azure storage account.

Conexión a la cuenta del emulador mediante un acceso directoConnect to the emulator account using a shortcut

La manera más fácil de conectarse al emulador de almacenamiento desde su aplicación consiste en configurar, dentro del archivo de configuración de la aplicación, una cadena de conexión que haga referencia al método abreviado 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. Este es un ejemplo de una cadena de conexión al emulador de almacenamiento en un archivo 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>

Conexión a la cuenta del emulador con el nombre de cuenta y la clave conocidosConnect to the emulator account using the well-known account name and key

Para crear una cadena de conexión que hace referencia al nombre de la cuenta del emulador y la clave, debe especificar los puntos de conexión para cada uno de los servicios que desea usar desde el emulador en la cadena de conexión.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. Esto es necesario para que la cadena de conexión haga referencia a los extremos del emulador, que son diferentes de los de una cuenta de almacenamiento de producción.This is necessary so that the connection string will reference the emulator endpoints, which are different than those for a production storage account. Por ejemplo, el valor de la cadena de conexión será similar al siguiente: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;

Este valor es idéntico al acceso directo mostrado anteriormente, UseDevelopmentStorage=true.This value is identical to the shortcut shown above, UseDevelopmentStorage=true.

Especificación de un servidor proxy HTTPSpecify an HTTP proxy

También puede especificar que se use un proxy HTTP cuando se está probando el servicio con el emulador de almacenamiento.You can also specify an HTTP proxy to use when you're testing your service against the storage emulator. Esto puede ser útil para observar solicitudes y respuestas HTTP mientras está depurando operaciones con los servicios de almacenamiento.This can be useful for observing HTTP requests and responses while you're debugging operations against the storage services. Para especificar un proxy, agregue la opción DevelopmentStorageProxyUri a la cadena de conexión y establezca su valor en el URI del proxy.To specify a proxy, add the DevelopmentStorageProxyUri option to the connection string, and set its value to the proxy URI. Por ejemplo, esta es una cadena de conexión que apunta al emulador de almacenamiento y configura un proxy HTTP:For example, here is a connection string that points to the storage emulator and configures an HTTP proxy:

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri

Para más información sobre las cadenas de conexión, consulte Configuración de las cadenas de conexión de Azure Storage.For more information on connection strings, see Configure Azure Storage connection strings.

Autorización con una firma de acceso compartidoAuthorize with a shared access signature

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Algunas bibliotecas de cliente de almacenamiento de Azure, como la biblioteca Xamarin, solo admiten la autenticación con un token de firma de acceso compartido (SAS).Some Azure storage client libraries, such as the Xamarin library, only support authentication with a shared access signature (SAS) token. Puede crear el token de SAS mediante una herramienta como el Explorador de Storage u otra aplicación que admita la autenticación de clave compartida.You can create the SAS token using a tool like the Storage Explorer or another application that supports Shared Key authentication.

También puede generar un token de SAS mediante Azure PowerShell.You can also generate a SAS token by using Azure PowerShell. En el ejemplo siguiente se genera un token de SAS con permisos completos a un contenedor de blobs:The following example generates a SAS token with full permissions to a blob container:

  1. Instale Azure PowerShell si no lo ha hecho ya (se recomienda el uso de la versión más reciente de los cmdlets de Azure PowerShell).Install Azure PowerShell if you haven't already (using the latest version of the Azure PowerShell cmdlets is recommended). Para ver las instrucciones de instalación, consulte Instalación y configuración de Azure PowerShell.For installation instructions, see Install and configure Azure PowerShell.
  2. Abra Azure PowerShell y ejecute los siguientes comandos, sustituyendo CONTAINER_NAME por un nombre de su elección: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

El identificador URI de la firma de acceso compartido resultante para el nuevo contenedor debe ser similar a: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

La firma de acceso compartido creada con este ejemplo es válida durante un día.The shared access signature created with this example is valid for one day. La firma concede acceso completo (lectura, escritura, eliminación, enumeración) a blobs situados dentro del contenedor.The signature grants full access (read, write, delete, list) to blobs within the container.

Para obtener más información sobre las firmas de acceso compartido, consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS).For more information on shared access signatures, see Grant limited access to Azure Storage resources using shared access signatures (SAS).

Direccionar los recursos en el emulador de almacenamientoAddressing resources in the storage emulator

Los extremos de servicio para el emulador de almacenamiento son diferentes de los de una cuenta de almacenamiento de Azure.The service endpoints for the storage emulator are different from those of an Azure storage account. La diferencia se debe al hecho de que el equipo local no realiza la resolución de nombres de dominio, por lo que los puntos de conexión del emulador de almacenamiento requieren una dirección local.The difference is because the local computer does not perform domain name resolution, requiring the storage emulator endpoints to be local addresses.

Al direccionar un recurso en una cuenta de Azure Storage, usará el siguiente esquema.When you address a resource in an Azure storage account, you use the following scheme. El nombre de cuenta forma parte del nombre de host del identificador URI y el recurso que se redirige forma parte de la ruta de acceso del identificador 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>

Por ejemplo, el siguiente URI es una dirección válida para un blob en una cuenta de almacenamiento de Azure: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

Sin embargo, en el emulador de almacenamiento, dado que el equipo local no lleva a cabo la resolución de nombres de dominio, el nombre de la cuenta forma parte de la ruta de acceso del URI en lugar del nombre de host.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. Use el siguiente formato de URI para un recurso en el emulador de almacenamiento:Use the following URI format for a resource in the storage emulator:

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

Por ejemplo, la siguiente dirección se puede usar para obtener acceso a un blob en el emulador de almacenamiento: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

Los extremos de servicio para el emulador de almacenamiento son:The service endpoints for the storage emulator are:

  • Blob service: http://127.0.0.1:10000/<account-name>/<resource-path>Blob service: http://127.0.0.1:10000/<account-name>/<resource-path>
  • Queue service: http://127.0.0.1:10001/<account-name>/<resource-path>Queue service: http://127.0.0.1:10001/<account-name>/<resource-path>
  • Table service: http://127.0.0.1:10002/<account-name>/<resource-path>Table service: http://127.0.0.1:10002/<account-name>/<resource-path>

Direccionar la cuenta secundaria con RA-GRSAddressing the account secondary with RA-GRS

A partir de la versión 3.1, el emulador de almacenamiento admite la replicación con redundancia geográfica con acceso de lectura (RA-GRS).Beginning with version 3.1, the storage emulator supports read-access geo-redundant replication (RA-GRS). Para los recursos de almacenamiento en la nube y en el emulador local, puedes obtener acceso a la ubicación de la cuenta secundaria si anexa -secondary al nombre de la cuenta.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. Por ejemplo, la siguiente dirección se puede usar para obtener acceso a un blob usando la cuenta secundaria de solo lectura en el emulador de almacenamiento: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

Nota

Para el acceso mediante programación a la cuenta secundaria con el emulador de almacenamiento, usa la biblioteca de cliente de almacenamiento para la versión 3.2 de .NET o una versión posterior.For programmatic access to the secondary with the storage emulator, use the Storage Client Library for .NET version 3.2 or later. Consulte la biblioteca del cliente de Microsoft Azure Storage para .NET si desea obtener más información.See the Microsoft Azure Storage Client Library for .NET for details.

Referencia de la herramienta de la línea de comandos del emulador de almacenamientoStorage emulator command-line tool reference

A partir de la versión 3.0, se muestra una ventana de consola cuando se inicia el emulador de almacenamiento.Starting in version 3.0, a console window is displayed when you start the Storage Emulator. Use la línea de comandos de la ventana de consola para iniciar y detener el emulador, así como para consultar el estado y realizar otras operaciones.Use the command line in the console window to start and stop the emulator as well as query for status and perform other operations.

Nota

Si tiene instalado el emulador de proceso de Microsoft Azure, aparece un icono de la bandeja del sistema al iniciar el emulador de almacenamiento.If you have the Microsoft Azure compute emulator installed, a system tray icon appears when you launch the Storage Emulator. Haga clic con el botón derecho en el icono para abrir un menú que ofrece en forma de gráficos las opciones de iniciar y detener el emulador de almacenamiento.Right-click on the icon to reveal a menu that provides a graphical way to start and stop the Storage Emulator.

Sintaxis de la línea de comandosCommand line syntax

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

OpcionesOptions

Para ver la lista de opciones, escriba /help en el símbolo del sistema.To view the list of options, type /help at the command prompt.

OpciónOption DESCRIPCIÓNDescription Get-HelpCommand ArgumentosArguments
IniciarStart Inicia el emulador de almacenamiento.Starts up the storage emulator. AzureStorageEmulator.exe start [-inprocess] -inprocess: inicia el emulador en el proceso actual en lugar de crear un nuevo proceso.-inprocess: Start the emulator in the current process instead of creating a new process.
DetenciónStop Detiene el emulador de almacenamiento.Stops the storage emulator. AzureStorageEmulator.exe stop
EstadoStatus Imprime el estado del emulador de almacenamiento.Prints the status of the storage emulator. AzureStorageEmulator.exe status
BorrarClear Borra los datos de todos los servicios especificados en la línea de comandos.Clears the data in all services specified on the command line. AzureStorageEmulator.exe clear [blob] [table] [queue] [all] blob: borra datos del blob.blob: Clears blob data.
queue: borra datos de la cola.queue: Clears queue data.
table: borra datos de la tabla.table: Clears table data.
all: borra todos los datos de todos los servicios.all: Clears all data in all services.
InitInit Realiza una inicialización única para configurar el emulador.Performs one-time initialization to set up the emulator. AzureStorageEmulator.exe init [-server serverName] [-sqlinstance instanceName] [-forcecreate|-skipcreate] [-reserveports|-unreserveports] [-inprocess] -server serverName\instanceName: especifica el servidor que hospeda la instancia de SQL.-server serverName\instanceName: Specifies the server hosting the SQL instance.
-sqlinstance instanceName: especifica el nombre de la instancia de SQL que se usará en la instancia de servidor predeterminada.-sqlinstance instanceName: Specifies the name of the SQL instance to be used in the default server instance.
-forcecreate: fuerza la creación de la instancia de SQL Database, aunque ya exista.-forcecreate: Forces creation of the SQL database, even if it already exists.
-skipcreate: mite la creación de la instancia de SQL Database.-skipcreate: Skips creation of the SQL database. Esto tiene prioridad sobre -forcecreate.This takes precedence over -forcecreate.
-reserveports: intenta reservar los puertos HTTP asociados con los servicios.-reserveports: Attempts to reserve the HTTP ports associated with the services.
-unreserveports: intenta quitar las reservas de los puertos HTTP asociados con los servicios.-unreserveports: Attempts to remove reservations for the HTTP ports associated with the services. Esto tiene prioridad sobre -reserveports.This takes precedence over -reserveports.
-inprocess: realiza la inicialización en el proceso actual, en lugar de generar un proceso nuevo.-inprocess: Performs initialization in the current process instead of spawning a new process. Tiene que iniciar el proceso actual con permisos elevados si se cambian las reservas de puerto.The current process must be launched with elevated permissions if changing port reservations.

Diferencias entre el emulador de almacenamiento y Azure StorageDifferences between the storage emulator and Azure Storage

Dado que el emulador de almacenamiento es un entorno emulado que se ejecuta en una instancia de SQL local, hay diferencias de funcionalidad entre el emulador y una cuenta de Azure Storage en la nube: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:

  • El emulador de almacenamiento es compatible con una sola cuenta fija y una clave de autenticación ya conocida.The storage emulator supports only a single fixed account and a well-known authentication key.
  • El emulador de almacenamiento no es un servicio de almacenamiento escalable y no es compatible con un gran número de clientes simultáneos.The storage emulator is not a scalable storage service and does not support a large number of concurrent clients.
  • Como se describe en Direccionar los recursos en el emulador de almacenamiento, los recursos se tratan de forma diferente en el emulador de almacenamiento frente a una cuenta de almacenamiento de Azure.As described in Addressing resources in the storage emulator, resources are addressed differently in the storage emulator versus an Azure storage account. Esta diferencia se debe a que la resolución de nombres de dominio está disponible en la nube, pero no en el equipo local.This difference is because domain name resolution is available in the cloud but not on the local computer.
  • A partir de la versión 3.1, la cuenta del emulador de almacenamiento admite la replicación con redundancia geográfica con acceso de lectura (RA-GRS).Beginning with version 3.1, the storage emulator account supports read-access geo-redundant replication (RA-GRS). En el emulador, todas las cuentas tienen RA-GRS habilitado y no hay ningún retraso entre las réplicas principal y secundaria.In the emulator, all accounts have RA-GRS enabled, and there is never any lag between the primary and secondary replicas. Las operaciones Get Blob Service Stats, Get Queue Service Stats y Get Table Service Stats son compatibles con la cuenta secundaria y siempre devolverán el valor del elemento de respuesta LastSyncTime como la hora actual según la base de datos SQL subyacente.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.
  • El servicio de archivo y los extremos de servicio de protocolo SMB no se admiten actualmente en el emulador de almacenamiento.The File service and SMB protocol service endpoints are not currently supported in the storage emulator.
  • Si usa una versión de los servicios de almacenamiento que no es compatible aún con el emulador, este devuelve un error VersionNotSupportedByEmulator (código de estado HTTP 400 - Solicitud incorrecta).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).

Diferencias en el almacenamiento de blobsDifferences for Blob storage

Las siguientes diferencias se aplican al almacenamiento de blobs en el emulador:The following differences apply to Blob storage in the emulator:

  • El emulador de almacenamiento solo admite tamaños de blobs de hasta 2 GB.The storage emulator only supports blob sizes up to 2 GB.
  • La longitud máxima de un nombre de blob en el emulador de almacenamiento es de 256 caracteres, mientras que en Azure Storage es de 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.
  • La copia incremental permite copiar instantáneas desde los blobs sobrescritos, lo que devuelve un error en el servicio.Incremental copy allows snapshots from overwritten blobs to be copied, which returns a failure on the service.
  • Get Page Ranges Diff no funciona entre instantáneas copiadas con el blob de copia incremental.Get Page Ranges Diff does not work between snapshots copied using Incremental Copy Blob.
  • Una operación Put Blob puede ser correcta con un blob que existe en el emulador de almacenamiento con una concesión activa, incluso si el identificador de concesión no se ha especificado en la solicitud.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.
  • El emulador no admite operaciones de blob en anexos.Append Blob operations are not supported by the emulator. Intentando realizar una operación en un blob en anexos, devuelve un error FeatureNotSupportedByEmulator (código de estado HTTP 400 - Solicitud incorrecta).Attempting an operation on an append blob returns a FeatureNotSupportedByEmulator error (HTTP status code 400 - Bad Request).

Diferencias en el almacenamiento de tablaDifferences for Table storage

Las siguientes diferencias se aplican al almacenamiento de tablas en el emulador:The following differences apply to Table storage in the emulator:

  • Las propiedades de fecha en Table service del emulador de almacenamiento solo admiten el intervalo admitido por SQL Server 2005 (es decir, tienen que ser posteriores al 1 de enero de 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). Todas las fechas anteriores al 1 de enero de 1753 se cambiarán a este valor.All dates before January 1, 1753 are changed to this value. La precisión de las fechas se limita a la precisión de SQL Server 2005, lo que significa que las fechas son precisas hasta 1/300 de un segundo.The precision of dates is limited to the precision of SQL Server 2005, meaning that dates are precise to 1/300th of a second.
  • El emulador de almacenamiento admite valores de propiedad de clave de fila y de clave de partición de menos de 512 bytes.The storage emulator supports partition key and row key property values of less than 512 bytes each. Además, el tamaño total del nombre de la cuenta, el nombre de la tabla y los nombres de las propiedades de clave juntos no pueden superar los 900 bytes.Additionally, the total size of the account name, table name, and key property names together cannot exceed 900 bytes.
  • El tamaño total de una fila de una tabla en el emulador de almacenamiento se limita a menos de 1 MB.The total size of a row in a table in the storage emulator is limited to less than 1 MB.
  • En el emulador de almacenamiento, las propiedades de tipo de datos Edm.Guid o Edm.Binary solo admiten los operadores de comparación Equal (eq) y NotEqual (ne) en las cadenas de filtro de consultas.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.

Diferencias en el almacenamiento de colaDifferences for Queue storage

No hay ninguna diferencia específica del almacenamiento en cola en el emulador.There are no differences specific to Queue storage in the emulator.

Notas de la versión del emulador de almacenamientoStorage emulator release notes

Versión 5.7Version 5.7

Se ha corregido un error que podría ocasionar un bloqueo si el registro estaba habilitado.Fixed a bug that would cause a crash if logging was enabled.

Versión 5.6Version 5.6

  • El emulador de almacenamiento admite ahora la versión 2018-03-28 de los servicios de almacenamiento en los puntos de conexión de Blob, Queue y Table.The storage emulator now supports version 2018-03-28 of the storage services on Blob, Queue, and Table service endpoints.

Versión 5.5Version 5.5

  • El emulador de almacenamiento admite ahora la versión 2017-11-09 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2017-11-09 of the storage services on Blob, Queue, and Table service endpoints.
  • Se ha agregado compatibilidad para la propiedad Created del blob, que devuelve la hora de creación de este.Support has been added for the blob Created property, which returns the blob's creation time.

Versión 5.4Version 5.4

Para mejorar la estabilidad de la instalación, el emulador ya no intenta reservar puertos en el momento de la instalación.To improve installation stability, the emulator no longer attempts to reserve ports at install time. Si desea realizar la reserva de puertos, use la opción -reserveports del comando init para especificarlos.If port reservations are desired, use the -reserveports option of the init command to specify them.

Versión 5.3Version 5.3

El emulador de almacenamiento admite ahora la versión 2017-07-29 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2017-07-29 of the storage services on Blob, Queue, and Table service endpoints.

Versión 5.2Version 5.2

  • El emulador de almacenamiento admite ahora la versión 2017-04-17 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2017-04-17 of the storage services on Blob, Queue, and Table service endpoints.
  • Se ha corregido un error por el que no se codificaban correctamente los valores de propiedad de tabla.Fixed a bug where table property values were not being properly encoded.

Versión 5.1Version 5.1

Se ha corregido un error en el que el emulador de almacenamiento devolvía el encabezado DataServiceVersion en algunas respuestas en las que el servicio no lo hacía.Fixed a bug where the storage emulator was returning the DataServiceVersion header in some responses where the service was not.

Versión 5.0Version 5.0

  • El programa de instalación del emulador de almacenamiento ya no comprueba instalaciones existentes de MSSQL y .NET Framework.The storage emulator installer no longer checks for existing MSSQL and .NET Framework installs.
  • El programa de instalación del emulador de almacenamiento ya no crea la base de datos como parte de la instalación.The storage emulator installer no longer creates the database as part of install. Se seguirá creando la base de datos si se necesita como parte del proceso de inicio.Database will still be created if needed as part of startup.
  • La creación de la base de datos ya no requiere elevación.Database creation no longer requires elevation.
  • Las reservas de puertos ya no son necesarias para el inicio.Port reservations are no longer needed for startup.
  • Agrega las siguientes opciones a init: -reserveports (requiere elevación), -unreserveports (requiere elevación), -skipcreate.Adds the following options to init: -reserveports (requires elevation), -unreserveports (requires elevation), -skipcreate.
  • La opción de interfaz de usuario Emulador de almacenamiento en el icono de la bandeja del sistema ahora inicia la interfaz de línea de comandos.The Storage Emulator UI option on the system tray icon now launches the command line interface. La interfaz gráfica de usuario anterior ya no está disponible.The old GUI is no longer available.
  • Algunos archivos DLL se han quitado o se han cambiado de nombre.Some DLLs have been removed or renamed.

Versión 4.6Version 4.6

  • El emulador de almacenamiento admite ahora la versión 2016-05-31 de los servicios de almacenamiento en los puntos de conexión de Blob, Queue y Table service.The storage emulator now supports version 2016-05-31 of the storage services on Blob, Queue, and Table service endpoints.

Versión 4.5Version 4.5

  • Se ha corregido un error que provocó la inicialización e instalación del emulador de almacenamiento cuando se cambia el nombre de la base de datos de copia de seguridad.Fixed a bug that caused initialization and installation of the storage emulator to fail when the backing database was renamed.

Version 4.4Version 4.4

  • El emulador de almacenamiento admite ahora la versión 2015-12-11 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2015-12-11 of the storage services on Blob, Queue, and Table service endpoints.
  • La recolección de elementos no utilizados de datos del blobs del emulador de almacenamiento ahora es más eficaz cuando se trabaja con grandes cantidades de blobs.The storage emulator's garbage collection of blob data is now more efficient when dealing with large numbers of blobs.
  • Se ha corregido un error que provocaba que el XML de ACL del contenedor se validara de forma algo diferente de cómo lo hace el servicio de almacenamiento.Fixed a bug that caused container ACL XML to be validated slightly differently from how the storage service does it.
  • Se ha corregido un error que a veces causaba que los valores máx. y mín. de DateTime se notificarán en una zona horaria incorrecta.Fixed a bug that sometimes caused max and min DateTime values to be reported in the incorrect time zone.

Versión 4.3Version 4.3

  • El emulador de almacenamiento admite ahora la versión 2015-07-08 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2015-07-08 of the storage services on Blob, Queue, and Table service endpoints.

Versión 4.2Version 4.2

  • El emulador de almacenamiento admite ahora la versión 2015-04-05 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2015-04-05 of the storage services on Blob, Queue, and Table service endpoints.

Versión 4.1Version 4.1

  • El emulador de almacenamiento admite ahora la versión 2015-02-21 de los servicios de almacenamiento en los puntos de conexión de Blob, Queue y Table service, con la excepción de las nuevas características de blob en anexos.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.
  • Si usa una versión de los servicios de almacenamiento que no es compatible aún con el emulador de almacenamiento, este devuelve un mensaje de error descriptivo.If you use a version of the storage services that is not yet supported by the emulator, the emulator returns a meaningful error message. Se recomienda usar la versión más reciente del emulador.We recommend using the latest version of the emulator. Si se produce un error VersionNotSupportedByEmulator (código de estado HTTP 400 - Solicitud incorrecta), descargue la última versión del emulador de almacenamiento.If you encounter a VersionNotSupportedByEmulator error (HTTP status code 400 - Bad Request), please download the latest version of the storage emulator.
  • Se ha corregido un error en el que una condición de carrera hacía que los datos de entidad de tabla fuesen incorrectos durante las operaciones de mezcla simultáneas.Fixed a bug wherein a race condition caused table entity data to be incorrect during concurrent merge operations.

Versión 4.0Version 4.0

  • Se ha cambiado el nombre de ejecutable del emulador de almacenamiento a AzureStorageEmulator.exe.The storage emulator executable has been renamed to AzureStorageEmulator.exe.

Versión 3.2Version 3.2

  • El emulador de almacenamiento admite ahora la versión 2014-02-14 de los servicios de almacenamiento en los puntos de conexión de Blob service, Queue service y Table service.The storage emulator now supports version 2014-02-14 of the storage services on Blob, Queue, and Table service endpoints. Los puntos de conexión de servicio de archivos no se admiten actualmente en el emulador de almacenamiento.File service endpoints are not currently supported in the storage emulator. Consulte Versiones de los servicios de Azure Storage para obtener información acerca de la versión 2014-02-14.See Versioning for the Azure Storage Services for details about version 2014-02-14.

Versión 3.1Version 3.1

  • Ahora se admite el almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS) en el emulador de almacenamiento.Read-access geo-redundant storage (RA-GRS) is now supported in the storage emulator. Las API de las operaciones Get Blob Service Stats, Get Queue Service Stats y Get Table Service Stats son compatibles con la cuenta secundaria y siempre devolverán el valor del elemento de respuesta LastSyncTime como la hora actual según la base de datos SQL subyacente.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. Para el acceso mediante programación a la cuenta secundaria con el emulador de almacenamiento, usa la biblioteca de cliente de almacenamiento para la versión 3.2 de .NET o una versión posterior.For programmatic access to the secondary with the storage emulator, use the Storage Client Library for .NET version 3.2 or later. Consulte la Documentación de referencia de la biblioteca cliente de Microsoft Azure Storage para .NET para obtener más información.See the Microsoft Azure Storage Client Library for .NET Reference for details.

Versión 3.0Version 3.0

  • El emulador de almacenamiento de Azure ya no se incluye en el mismo paquete que el emulador de proceso.The Azure storage emulator is no longer shipped in the same package as the compute emulator.
  • La interfaz gráfica de usuario del emulador de almacenamiento se ha sustituido por una interfaz de la línea de comandos que permite ejecutar scripts.The storage emulator graphical user interface is deprecated in favor of a scriptable command-line interface. Para obtener más información sobre la interfaz de la línea de comandos, vea Referencia de la herramienta de la línea de comandos del emulador de almacenamiento.For details on the command-line interface, see Storage Emulator Command-Line Tool Reference. La interfaz gráfica seguirá estando presente en la versión 3.0, pero solo se puede acceder a ella cuando se instala el emulador de proceso con el botón secundario en el icono de la bandeja del sistema y se selecciona la opción de mostrar IU del emulador de almacenamiento.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.
  • La versión 2013-08-15 de los servicios de almacenamiento de Azure ahora es totalmente compatible.Version 2013-08-15 of the Azure storage services is now fully supported. (Anteriormente esta versión solo era compatible con versión la versión 2.2.1 Preview del emulador de almacenamiento.)(Previously this version was only supported by Storage Emulator version 2.2.1 Preview.)

Pasos siguientesNext steps