Creación de reflejo de la base de datos ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL) Database Mirroring

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions)

Nota

Esta característica se quitará en una versión futura de Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Se usa Grupos de disponibilidad AlwaysOnAlways On availability groups en su lugar.Use Grupos de disponibilidad AlwaysOnAlways On availability groups instead.

Controla la creación de reflejo de la base de datos.Controls database mirroring for a database. Los valores especificados con las opciones de creación de reflejo de la base de datos se aplican a las dos copias de la base de datos y a la sesión de creación de reflejo de la base de datos en conjunto.Values specified with the database mirroring options apply to both copies of the database and to the database mirroring session as a whole. Solo se permite una opción <database_mirroring_option> por instrucción ALTER DATABASE.Only one <database_mirroring_option> is permitted per ALTER DATABASE statement.

Nota

Es recomendable configurar la creación de reflejo de la base de datos durante las horas de menor actividad, ya que la configuración puede afectar al rendimiento.We recommend that you configure database mirroring during off-peak hours because configuration can affect performance.

Para más información sobre las opciones de ALTER DATABASE, consulte ALTER DATABASE.For ALTER DATABASE options, see ALTER DATABASE. Para más información sobre las opciones de ALTER DATABASE SET, vea ALTER DATABASE SET Options (Opciones de ALTER DATABASE SET).For ALTER DATABASE SET options, see ALTER DATABASE SET Options.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax


ALTER DATABASE database_name
SET { <partner_option> | <witness_option> }
  <partner_option> ::=
    PARTNER { = 'partner_server'
            | FAILOVER
            | FORCE_SERVICE_ALLOW_DATA_LOSS
            | OFF
            | RESUME
            | SAFETY { FULL | OFF }
            | SUSPEND
            | TIMEOUT integer
            }
  <witness_option> ::=
    WITNESS { = 'witness_server'
            | OFF
            }
  

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentosArguments

Importante

Un comando SET PARTNER o SET WITNESS puede completarse correctamente cuando se escribe y, sin embargo, provocar un error más adelante.A SET PARTNER or SET WITNESS command can complete successfully when entered, but fail later.

Nota

Las opciones de creación de reflejo de la base de datos de ALTER DATABASE no están disponibles para una base de datos independiente.ALTER DATABASE database mirroring options are not available for a contained database.

database_name Es el nombre de la base de datos que se va a modificar.database_name Is the name of the database to be modified.

PARTNER <partner_option> Controla las propiedades de la base de datos que definen los asociados de conmutación por error de una sesión de creación de reflejo de la base de datos y su comportamiento.PARTNER <partner_option> Controls the database properties that define the failover partners of a database mirroring session and their behavior. Algunas opciones de SET PARTNER se pueden establecer en cualquier asociado; otras opciones se limitan al servidor principal o al servidor reflejado.Some SET PARTNER options can be set on either partner; others are restricted to the principal server or to the mirror server. Para obtener más información, vea las opciones de PARTNER especificadas a continuación.For more information, see the individual PARTNER options that follow. Una cláusula SET PARTNER afecta a ambas copias de la base de datos, con independencia del asociado en el que se especifica.A SET PARTNER clause affects both copies of the database, regardless of the partner on which it is specified.

Para ejecutar una instrucción SET PARTNER, el valor de STATE de los extremos de ambos asociados debe ser STARTED.To execute a SET PARTNER statement, the STATE of the endpoints of both partners must be set to STARTED. Además, debe tener en cuenta que el valor de ROLE del extremo de la creación de reflejo de la base de datos de cada instancia del servidor asociado debe establecerse en PARTNER o ALL.Note, also, that the ROLE of the database mirroring endpoint of each partner server instance must be set to either PARTNER or ALL. Para más información sobre cómo especificar un extremo, vea Crear un extremo de reflejo de la base de datos para la autenticación de Windows.For information about how to specify an endpoint, see Create a Database Mirroring Endpoint for Windows Authentication. Para conocer el rol y el estado del extremo de la creación de reflejo de la base de datos de una instancia del servidor, debe usar la siguiente instrucción de Transact-SQLTransact-SQL en dicha instancia:To learn the role and state of the database mirroring endpoint of a server instance, on that instance, use the following Transact-SQLTransact-SQL statement:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

<partner_option> ::=<partner_option> ::=

Nota

Solo se permite una opción <partner_option> por cada cláusula SET PARTNER.Only one <partner_option> is permitted per SET PARTNER clause.

' partner_server ' Especifica la dirección de red del servidor de una instancia de SQL ServerSQL Server para actuar como un asociado de conmutación por error en la nueva sesión de creación de reflejo de la base de datos.' partner_server ' Specifies the server network address of an instance of SQL ServerSQL Server to act as a failover partner in a new database mirroring session. Cada sesión requiere dos asociados: uno empieza como servidor principal y el otro como servidor reflejado.Each session requires two partners: one starts as the principal server, and the other starts as the mirror server. Se recomienda que estos asociados residan en equipos distintos.We recommend that these partners reside on different computers.

Esta opción se especifica una vez por sesión en cada asociado.This option is specified one time per session on each partner. Para iniciar una sesión de creación de reflejo de la base de datos, se necesitan dos instrucciones ALTER DATABASE database SET PARTNER =' partner_server ' .Initiating a database mirroring session requires two ALTER DATABASE database SET PARTNER ='partner_server' statements. El orden es relevante.Their order is significant. Primero, conéctese al servidor reflejado y especifique la instancia del servidor principal como partner_server (SET PARTNER =' principal_server ' ).First, connect to the mirror server, and specify the principal server instance as partner_server (SET PARTNER ='principal_server'). Después, establezca la conexión con el servidor principal y especifique la instancia del servidor reflejado como partner_server (SET PARTNER =' mirror_server ' ); de este modo, se inicia una sesión de creación de reflejo de la base de datos entre estos dos asociados.Second, connect to the principal server, and specify the mirror server instance as partner_server (SET PARTNER ='mirror_server'); this starts a database mirroring session between these two partners. Para obtener más información, vea Configurar la creación de reflejo de la base de datos.For more information, see Setting Up Database Mirroring.

El valor de partner_server es una dirección de red de servidor.The value of partner_server is a server network address. Tiene la siguiente sintaxis:This has the following syntax:

TCP :// <system-address> : <port>TCP ://<system-address>:<port>

, dondewhere

  • <system-address> es una cadena, como un nombre de sistema, un nombre de dominio completo o una dirección IP, que identifica sin ambigüedad el equipo de destino.<system-address> is a string, such as a system name, a fully qualified domain name, or an IP address, that unambiguously identifies the destination computer system.
  • <port> es un número de puerto que está asociado al punto de conexión de reflejo de la instancia del servidor asociado.<port> is a port number that is associated with the mirroring endpoint of the partner server instance.

Para obtener más información, vea Especificar una dirección de red de servidor - Creación de reflejo de la base de datos.For more information, see Specify a Server Network Address - Database Mirroring.

En el ejemplo siguiente, se muestra la cláusula SET PARTNER =' partner_server ' :The following example illustrates the SET PARTNER ='partner_server' clause:

'TCP://MYSERVER.mydomain.Adventure-Works.com:7777'

Importante

Si se configura una sesión con la instrucción ALTER DATABASE en lugar de con SQL Server Management StudioSQL Server Management Studio, se establece de forma predeterminada con la seguridad de transacciones completa (SAFETY se establece en FULL) y se ejecuta en el modo de alta seguridad sin conmutación automática por error.If a session is set up by using the ALTER DATABASE statement instead of SQL Server Management StudioSQL Server Management Studio, the session is set to full transaction safety by default (SAFETY is set to FULL) and runs in high-safety mode without automatic failover. Para permitir la conmutación automática por error, se debe configurar un testigo; para ejecutar en modo de alto rendimiento, se debe desactivar la seguridad de transacciones (SAFETY OFF).To allow automatic failover, configure a witness; to run in high-performance mode, turn off transaction safety (SAFETY OFF).

FAILOVER Conmuta manualmente el servidor principal al servidor reflejado.FAILOVER Manually fails over the principal server to the mirror server. Solo puede especificar FAILOVER en el servidor principal.You can specify FAILOVER only on the principal server. Esta opción es válida solo si la configuración de SAFETY es FULL (valor predeterminado).This option is valid only when the SAFETY setting is FULL (the default).

La opción FAILOVER requiere master como contexto de base de datos.The FAILOVER option requires master as the database context.

FORCE_SERVICE_ALLOW_DATA_LOSS Fuerza la aplicación del servicio de base de datos a la base de datos reflejada si se produce un error en el servidor principal con la base de datos en un estado no sincronizado o en un estado sincronizado cuando no se produce la conmutación automática por error.FORCE_SERVICE_ALLOW_DATA_LOSS Forces database service to the mirror database after the principal server fails with the database in an unsynchronized state or in a synchronized state when automatic failover does not occur.

Se recomienda que el servicio solo se fuerce si el servidor principal ya no se está ejecutando.We strongly recommend that you force service only if the principal server is no longer running. En caso contrario, es posible que algunos clientes sigan teniendo acceso a la base de datos principal original en lugar de a la base de datos principal nueva.Otherwise, some clients might continue to access the original principal database instead of the new principal database. FORCE_SERVICE_ALLOW_DATA_LOSS está disponible solo en el servidor reflejado y si se cumplen todas las condiciones siguientes:FORCE_SERVICE_ALLOW_DATA_LOSS is available only on the mirror server and only under all the following conditions:

  • El servidor principal está inactivo.The principal server is down.
  • WITNESS se establece en OFF o el testigo está conectado al servidor reflejado.WITNESS is set to OFF or the witness is connected to the mirror server.

Fuerce el servicio solo si es aceptable el riesgo de perder datos para restaurar el servicio en la base de datos inmediatamente.Force service only if you are willing to risk losing some data in order to restore service to the database immediately.

Al forzar el servicio, se suspende la sesión, lo que conserva temporalmente todos los datos de la base de datos principal original.Forcing service suspends the session, temporarily preserving all the data in the original principal database. Una vez que el servidor principal original esté en funcionamiento y pueda comunicarse con el nuevo servidor principal, el administrador de la base de datos podrá reanudar el servicio.Once the original principal is in service and able to communicate with the new principal server, the database administrator can resume service. Cuando se reanuda la sesión, se pierden los registros no enviados y las actualizaciones correspondientes.When the session resumes, any unsent log records and the corresponding updates are lost.

OFF Quita una sesión de creación de reflejo de la base de datos, así como los reflejos de la base de datos.OFF Removes a database mirroring session and removes mirroring from the database. Puede especificar OFF en cualquier asociado.You can specify OFF on either partner. Para más información sobre las repercusiones de quitar la creación de reflejo, vea Quitar la creación de reflejo de la base de datos.For information, see about the impact of removing mirroring, see Removing Database Mirroring.

RESUME Reanuda la sesión de creación de reflejo de la base de datos suspendida.RESUME Resumes a suspended database mirroring session. Solo puede especificar RESUME en el servidor principal.You can specify RESUME only on the principal server.

SAFETY { FULL | OFF } Establece el nivel de seguridad de las transacciones.SAFETY { FULL | OFF } Sets the level of transaction safety. Solo puede especificar SAFETY en el servidor principal.You can specify SAFETY only on the principal server.

El valor predeterminado es FULL.The default is FULL. Si se usa seguridad total, la sesión de creación de reflejo de la base de datos se ejecuta de forma sincrónica (en modo de alta seguridad).With full safety, the database mirroring session runs synchronously (in high-safety mode). Si SAFETY se establece en OFF, la sesión de creación de reflejo de la base de datos se ejecuta de forma asincrónica (en modo de alto rendimiento).If SAFETY is set to OFF, the database mirroring session runs asynchronously (in high-performance mode).

El comportamiento del modo de alta seguridad depende en parte del testigo, como se indica a continuación:The behavior of high-safety mode depends partly on the witness, as follows:

  • Si la seguridad se establece en FULL y se establece el testigo para la sesión, dicha sesión se ejecuta en el modo de alta seguridad con conmutación automática por error.When safety is set to FULL and a witness is set for the session, the session runs in high-safety mode with automatic failover. Si se pierde la conexión con el servidor principal, se produce automáticamente la conmutación por error de la sesión si la base de datos está sincronizada y la instancia del servidor reflejado y el testigo siguen conectados entre sí (es decir, tienen quórum).When the principal server is lost, the session automatically fails over if the database is synchronized and the mirror server instance and witness are still connected to each other (that is, they have quorum). Para más información, vea Cuórum: cómo un testigo afecta a la disponibilidad de la base de datos (reflejo de base de datos).For more information, see Quorum: How a Witness Affects Database Availability - Database Mirroring.

    Si se establece un testigo para la sesión, pero está desconectado actualmente, la pérdida del servidor reflejado causa el bloqueo del servidor principal.If a witness is set for the session but is currently disconnected, the loss of the mirror server causes the principal server to go down.

  • Si la seguridad se establece en FULL y el testigo en OFF, dicha sesión se ejecuta en el modo de alta seguridad sin conmutación automática por error.When safety is set to FULL and the witness is set to OFF, the session runs in high-safety mode without automatic failover. Si la instancia del servidor reflejado se bloquea, la instancia del servidor principal no se ve afectada.If the mirror server instance goes down, the principal server instance is unaffected. Si la instancia del servidor principal se bloquea, se puede forzar el servicio (con una posible pérdida de datos) en la instancia del servidor reflejado.If the principal server instance goes down, you can force service (with possible data loss) to the mirror server instance.

  • Si SAFETY se establece en OFF, la sesión se ejecuta en el modo de alto rendimiento y no se admite la conmutación automática o manual por error.If SAFETY is set to OFF, the session runs in high-performance mode, and automatic failover and manual failover are not supported. Pero los problemas del servidor reflejado no afectan al servidor principal y, si la instancia del servidor principal se bloquea, puede forzar el servicio si es necesario (con una posible pérdida de datos) en la instancia del servidor reflejado, siempre que WITNESS se establezca en OFF o el testigo esté conectado actualmente al reflejo.However, problems on the mirror do not affect the principal, and if the principal server instance goes down, you can, if necessary, force service (with possible data loss) to the mirror server instance-if WITNESS is set to OFF or the witness is currently connected to the mirror. Para obtener más información acerca de cómo forzar la aplicación del servicio, vea "FORCE_SERVICE_ALLOW_DATA_LOSS" en un apartado anterior de esta sección.For more information on forcing service, see "FORCE_SERVICE_ALLOW_DATA_LOSS" earlier in this section.

Importante

El modo de alto rendimiento no se ha diseñado para que use un testigo.High-performance mode is not intended to use a witness. Sin embargo, siempre que se establece SAFETY en OFF, es muy recomendable asegurarse de que WITNESS está establecido en OFF.However, whenever you set SAFETY to OFF, we strongly recommend that you ensure that WITNESS is set to OFF.

SUSPEND Pausa una sesión de creación de reflejo de la base de datos.SUSPEND Pauses a database mirroring session.

Puede especificar SUSPEND en cualquier asociado.You can specify SUSPEND on either partner.

TIMEOUT integer Especifica el período de espera en segundos.TIMEOUT integer Specifies the time-out period in seconds. El período de espera es el tiempo máximo durante el que una instancia de servidor espera hasta recibir un mensaje PING de otra instancia en la sesión de creación de reflejo de la base de datos, antes de considerar que la otra instancia está desconectada.The time-out period is the maximum time that a server instance waits to receive a PING message from another instance in the mirroring session before considering that other instance to be disconnected.

Solo puede especificar la opción TIMEOUT en el servidor principal.You can specify the TIMEOUT option only on the principal server. Si no especifica esta opción, el período equivale a 10 segundos de forma predeterminada.If you do not specify this option, by default, the time period is 10 seconds. Si especifica 5 o más, el tiempo de espera se establece en el número de segundos especificado.If you specify 5 or greater, the time-out period is set to the specified number of seconds. Si especifica un tiempo de espera de 0 a 4 segundos, dicho tiempo de espera se establece automáticamente en 5 segundos.If you specify a time-out value of 0 to 4 seconds, the time-out period is automatically set to 5 seconds.

Importante

Es recomendable que mantenga el período de espera en 10 segundos o más.We recommend that you keep the time-out period at 10 seconds or greater. Si establece el valor en menos de 10 segundos, existe la posibilidad de que un sistema sobrecargado no reciba los PING y declare un error falso.Setting the value to less than 10 seconds creates the possibility of a heavily loaded system missing PINGs and declaring a false failure.

Para más información, consulte Possible Failures During Database Mirroring.For more information, see Possible Failures During Database Mirroring.

WITNESS <witness_option> Controla las propiedades de base de datos que definen un testigo de creación de reflejo de la base de datos.WITNESS <witness_option> Controls the database properties that define a database mirroring witness. La cláusula SET WITNESS afecta a ambas copias de la base de datos, pero solo puede especificar SET WITNESS en el servidor principal.A SET WITNESS clause affects both copies of the database, but you can specify SET WITNESS only on the principal server. Si se establece un testigo para una sesión, se requiere quórum para servir a la base de datos, independientemente de la configuración de SAFETY; para más información, vea Quórum: cómo un testigo afecta a la disponibilidad de la base de datos (reflejo de base de datos).If a witness is set for a session, quorum is required to serve the database, regardless of the SAFETY setting; for more information, see Quorum: How a Witness Affects Database Availability - Database Mirroring.

Se recomienda que el testigo y los asociados de conmutación por error residan en equipos distintos.We recommend that the witness and failover partners reside on separate computers. Para información sobre el testigo, vea Testigo de creación de reflejo de la base de datos.For information about the witness, see Database Mirroring Witness.

Para ejecutar una instrucción SET WITNESS, el valor de STATE de los extremos de las instancias del servidor principal y del servidor testigo debe establecerse en STARTED.To execute a SET WITNESS statement, the STATE of the endpoints of both the principal and witness server instances must be set to STARTED. Además, debe tener en cuenta que el valor de ROLE del extremo de creación de reflejo de la base de datos de una instancia del servidor testigo debe establecerse en WITNESS u ALL.Note, also, that the ROLE of the database mirroring endpoint of a witness server instance must be set to either WITNESS or ALL. Para más información sobre cómo especificar un extremo, vea El extremo de creación de reflejo de la base de datos.For information about specifying an endpoint, see The Database Mirroring Endpoint.

Para conocer el rol y el estado del extremo de la creación de reflejo de la base de datos de una instancia del servidor, debe usar la siguiente instrucción de Transact-SQLTransact-SQL en dicha instancia:To learn the role and state of the database mirroring endpoint of a server instance, on that instance, use the following Transact-SQLTransact-SQL statement:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

Nota

Las propiedades de base de datos no se pueden establecer en el testigo.Database properties cannot be set on the witness.

<witness_option> ::=<witness_option> ::=

Nota

Solo se permite una opción <witness_option> por cada cláusula SET WITNESS.Only one <witness_option> is permitted per SET WITNESS clause.

' witness_server ' Especifica una instancia del Motor de base de datosDatabase Engine para que actúe como el servidor testigo para una sesión de creación de reflejo de la base de datos.' witness_server ' Specifies an instance of the Motor de base de datosDatabase Engine to act as the witness server for a database mirroring session. Solo puede especificar instrucciones SET WITNESS en el servidor principal.You can specify SET WITNESS statements only on the principal server.

En una instrucción SET WITNESS =' witness_server ' , la sintaxis de witness_server equivale a la sintaxis de partner_server.In a SET WITNESS ='witness_server' statement, the syntax of witness_server is the same as the syntax of partner_server.

OFF Quita el testigo de la sesión de creación de reflejo de la base de datos.OFF Removes the witness from a database mirroring session. Si se establece el testigo en OFF, se deshabilita la conmutación automática por error.Setting the witness to OFF disables automatic failover. Si la base de datos se establece en FULL SAFETY y el testigo se establece en OFF, un error del servidor reflejado hace que el servidor principal anule la disponibilidad de la base de datos.If the database is set to FULL SAFETY and the witness is set to OFF, a failure on the mirror server causes the principal server to make the database unavailable.

ObservacionesRemarks

EjemplosExamples

A.A. Crear una sesión de creación de reflejo de la base de datos con un testigoCreating a database mirroring session with a witness

La configuración de la creación de reflejo de la base de datos con un testigo requiere configurar la seguridad y preparar la base de datos reflejada, además de usar ALTER DATABASE para configurar los asociados.Setting up database mirroring with a witness requires configuring security and preparing the mirror database, and also using ALTER DATABASE to set the partners. Para obtener un ejemplo del proceso de configuración completo, vea Configurar la creación de reflejo de la base de datos.For an example of the complete setup process, see Setting Up Database Mirroring.

B.B. Conmutación manual por error en una sesión de creación de reflejo de la base de datosManually failing over a database mirroring session

La conmutación manual por error se puede iniciar desde cualquier asociado de creación de reflejo de la base de datos.Manual failover can be initiated from either database mirroring partner. Antes de llevar a cabo la conmutación por error, debe comprobar si el servidor principal actual es realmente el servidor principal.Before failing over, you should verify that the server you believe to be the current principal server actually is the principal server. Por ejemplo, para la base de datos AdventureWorks2012AdventureWorks2012, ejecute la siguiente consulta en la instancia del servidor que crea que es el servidor principal actual:For example, for the AdventureWorks2012AdventureWorks2012 database, on that server instance that you think is the current principal server, execute the following query:

SELECT db.name, m.mirroring_role_desc
FROM sys.database_mirroring m
JOIN sys.databases db
ON db.database_id = m.database_id
WHERE db.name = N'AdventureWorks2012';
GO

Si la instancia del servidor es la entidad de seguridad, el valor de mirroring_role_desc es Principal.If the server instance is in fact the principal, the value of mirroring_role_desc is Principal. Si esta instancia del servidor se corresponde con el servidor reflejado, la instrucción SELECT debe devolver Mirror.If this server instance were the mirror server, the SELECT statement would return Mirror.

En el siguiente ejemplo se da por supuesto que el servidor es la entidad de seguridad actual.The following example assumes that the server is the current principal.

  1. Realice una conmutación manual por error al asociado de creación de reflejo de la base de datos:Manually fail over to the database mirroring partner:

    ALTER DATABASE AdventureWorks2012 SET PARTNER FAILOVER;
    GO
    
  2. Para comprobar los resultados de la conmutación por error en el reflejo nuevo, ejecute la siguiente consulta:To verify the results of the failover on the new mirror, execute the following query:

    SELECT db.name, m.mirroring_role_desc
    FROM sys.database_mirroring m
    JOIN sys.databases db
    ON db.database_id = m.database_id
    WHERE db.name = N'AdventureWorks2012';
    GO
    

El valor actual de mirroring_role_desc es ahora Mirror.The current value of mirroring_role_desc is now Mirror.

Consulte tambiénSee Also