Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Cuidado
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Para garantir alta disponibilidade, utilize os Always On Availability Groups.
Importante
O espelhamento de banco de dados no SQL Server é uma tecnologia distinta do Espelhamento de Banco de Dados do Microsoft Fabric. O espelhamento para o Fabric oferece melhor desempenho analítico, permite unificar seu patrimônio de dados com o OneLake no Fabric e possibilita acesso aberto aos seus dados no formato Delta Parquet.
Com o Espelhamento para o Microsoft Fabric, você pode replicar continuamente seu patrimônio de dados existente diretamente no OneLake in Fabric, incluindo dados do SQL Server 2016+, banco de dados SQL do Azure, Instância Gerenciada de SQL do Azure, Cosmos DB, Oracle, Snowflake e muito mais.
Para definir uma testemunha para um banco de dados, o proprietário do banco de dados nomeia uma instância do Mecanismo de Banco de Dados para a função de servidor testemunha. A instância do servidor testemunha pode ser executada no mesmo computador que a instância do servidor principal ou do servidor espelho, mas isso reduz substancialmente a robustez do failover automático.
Recomendamos fortemente que a testemunha resida em um computador separado. Um determinado servidor pode participar de várias sessões simultâneas de espelhamento de banco de dados com os mesmos parceiros ou parceiros diferentes. Um determinado servidor pode ser um parceiro em algumas sessões e uma testemunha em outras sessões.
O witness destina-se exclusivamente ao modo de alta segurança com failover automático. Antes de você definir uma testemunha, recomendamos enfaticamente que verifique se a propriedade SAFETY está definida atualmente como FULL.
Importante
É recomendável configurar um espelhamento de banco de dados fora do horário de pico, pois a configuração pode afetar o desempenho.
Estabelecer uma testemunha
Na instância do servidor testemunha, verifique se existe um ponto de extremidade para espelhamento de banco de dados. Independentemente do número de sessões de espelhamento a serem suportadas, a instância do servidor deve ter apenas um endpoint de espelhamento de banco de dados. Se você pretende usar esta instância de servidor exclusivamente como testemunha em sessões de espelhamento de banco de dados, atribua o papel de testemunha ao endpoint (ROLE**=**WITNESS). Se você pretende usar esta instância de servidor como parceiro em uma ou mais outras sessões de espelhamento de banco de dados, atribua a função da extremidade como ALL.
Para executar uma instrução SET WITNESS, a sessão de espelhamento de banco de dados já deve ter sido iniciada (entre os parceiros), e o ESTADO do endpoint da testemunha deve ser definido como STARTED.
Para saber se uma instância de servidor testemunha possui um endpoint de espelhamento de banco de dados e determinar sua função e seu estado, nessa instância, use a seguinte instrução Transact-SQL:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpointsImportante
Se já existir um endpoint de espelhamento de banco de dados e ele já estiver sendo usado, recomendamos usar esse endpoint em cada sessão da instância do servidor. Excluir um endpoint em uso interrompe as conexões das sessões existentes. Se uma testemunha tiver sido definida para uma sessão, excluir o endpoint de espelhamento de banco de dados poderá fazer com que o servidor principal dessa sessão perca o quórum; se isso ocorrer, o banco de dados será colocado offline e seus usuários serão desconectados. Para obter mais informações, confira Quorum: como uma testemunha afeta a disponibilidade do banco de dados (Espelhamento de banco de dados).
Se a testemunha não tiver um ponto de extremidade, consulte Criar um ponto de extremidade de espelhamento de banco de dados para autenticação do Windows (Transact-SQL).
Se as instâncias do parceiro estiverem sendo executadas em contas de usuário de domínio diferentes, crie um logon para cada uma das diferentes contas no banco de dados mestre de cada instância. Para obter mais informações, consulte Permitir acesso à rede a uma extremidade de espelhamento de banco de dados usando a autenticação do Windows (SQL Server).
Conecte-se ao servidor principal e emita a seguinte instrução:
ALTER DATABASE <database_name>SET WITNESS =<server_network_address>
em que <database_name> é o nome do banco de dados a ser objeto de espelhamento (esse nome é o mesmo nos dois parceiros), e <server_network_address> é o endereço de rede do servidor da instância do servidor testemunha.
A sintaxe para um endereço de rede do servidor é a seguinte:
TCP://<system-address>:<port>
em que <system-address> é uma cadeia de caracteres que identifica sem ambiguidade o sistema de computador de destino e <port> é o número da porta usada pelo ponto de extremidade de espelhamento da instância do servidor parceiro. Para obter mais informações, confira Especificar um endereço de rede do servidor (espelhamento de banco de dados).
Por exemplo, na instância do servidor principal, a instrução a seguir ALTER DATABASE define a testemunha. O nome do banco de dados é AdventureWorks, o endereço do sistema é DBSERVER3 (o nome do sistema testemunha) e a porta usada pelo ponto de extremidade de espelhamento do banco de dados da testemunha é
7022:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://DBSERVER3:7022'
Exemplo
O exemplo a seguir estabelece uma testemunha do espelhamento de dados. Na instância do servidor testemunha (instância padrão em WITNESSHOST4):
Crie um endpoint para esta instância do servidor somente para a função WITNESS usando a porta
7022.CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GOCrie um logon para a conta de usuário de domínio das instâncias parceiras, se ela for diferente; por exemplo, suponha que a testemunha esteja em execução como
SOMEDOMAIN\witnessuser, mas as instâncias parceiras estejam em execução comoMYDOMAIN\dbousername. Crie um logon para os parceiros, como segue:--Create a login for the partner server instances, --which are both running as MYDOMAIN\dbousername: USE master ; GO CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername]; GOEm cada uma das instâncias do servidor parceiro, crie um login para a instância do servidor testemunha:
--Create a login for the witness server instance, --which is running as SOMEDOMAIN\witnessuser: USE master ; GO CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser]; GONo servidor principal, defina a testemunha (que está em
WITNESSHOST4):ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4:7022' GO
Observação
O endereço de rede do servidor indica a instância de servidor de destino pelo número da porta, que corresponde ao endpoint de espelhamento da instância.
Para obter um exemplo completo mostrando a configuração da segurança, o preparo do banco de dados espelho, a configuração de parceiros e a adição de uma testemunha, veja Configurando o espelhamento de banco de dados (SQL Server).
Consulte Também
ALTER DATABASE (Transact-SQL)
Permitir o acesso à rede a um ponto de extremidade de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server)
Criar um endpoint de espelhamento de banco de dados para autenticação do Windows (Transact-SQL)
Estabelecer uma sessão de espelhamento de banco de dados com a Autenticação do Windows (Transact-SQL)
Remover a testemunha de uma sessão de espelhamento de banco de dados (SQL Server)
Testemunha de espelhamento de banco de dados