

# Tarefas comuns de DBA no Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks"></a>

Esta seção descreve implantações específicas ao Amazon RDS de algumas tarefas comuns de DBA para instâncias de bancos de dados que executam o mecanismo de banco de dados do Microsoft SQL Server. A fim de oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados. 

**nota**  
Ao trabalhar com uma instância de banco de dados SQL Server, é possível executar scripts para modificar um banco de dados recém-criado. No entanto, não é possível modificar o banco de dados [model], pois ele é usado como o modelo para novos bancos de dados. 

**Topics**
+ [Acessar o banco de dados tempdb em instâncias de banco de dados Microsoft SQL Server no Amazon RDS](SQLServer.TempDB.md)
+ [Análise da workload do banco de dados em uma instância de banco de dados do Amazon RDS para SQL Server com o Orientador de Otimização do Mecanismo de Banco de Dados](Appendix.SQLServer.CommonDBATasks.Workload.md)
+ [Alterar `db_owner` para a conta `rdsa` do banco de dados do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ChangeDBowner.md)
+ [Gerenciar agrupamentos e conjuntos de caracteres para o Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Collation.md)
+ [Criar um usuário de banco de dados para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.CreateUser.md)
+ [Determinar um modelo de recuperação para o banco de dados do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.DatabaseRecovery.md)
+ [Determinar o horário do último failover do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md)
+ [Solução de problemas de falhas de recuperação para um ponto no tempo devido a uma descontinuidade no número de sequência de log](Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps.md)
+ [Negue ou permita a visualização de nomes de banco de dados no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ManageView.md)
+ [Desabilitar inserções rápidas durante o carregamento em massa para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.DisableFastInserts.md)
+ [Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md)
+ [Renomear um banco de dados do Amazon RDS para Microsoft SQL Server em uma implantação multi-AZ](Appendix.SQLServer.CommonDBATasks.RenamingDB.md)
+ [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md)
+ [Restaurar instâncias de banco de dados com licenças encerradas no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.RestoreLTI.md)
+ [Transição de um banco de dados do Amazon RDS para SQL Server de OFFLINE para ONLINE](Appendix.SQLServer.CommonDBATasks.TransitionOnline.md)
+ [Usar a captura de dados de alteração para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.CDC.md)
+ [Usar o agente do SQL Server para o Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md)
+ [Trabalhar com logs do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md)
+ [Trabalhar com arquivos de rastreamento e despejo do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.TraceFiles.md)

# Acessar o banco de dados tempdb em instâncias de banco de dados Microsoft SQL Server no Amazon RDS
<a name="SQLServer.TempDB"></a>

Você pode acessar o banco de dados `tempdb` nas instâncias de bancos de dados Microsoft SQL Server no Amazon RDS. É possível executar o código em `tempdb` usando Transact-SQL pelo Microsoft SQL Server Management Studio (SSMS) ou de qualquer outro aplicativo cliente SQL padrão. Para obter mais informações sobre como se conectar à sua instância de banco de dados, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

O usuário mestre para a instância de banco de dados tem acesso `CONTROL` a `tempdb` para que esse usuário possa modificar as opções do banco de dados `tempdb`. O usuário mestre não é o proprietário do banco de dados `tempdb`. Se necessário, o usuário mestre poderá conceder acesso a `CONTROL` a outros usuários, para que eles também possam modificar as opções do banco de dados `tempdb`. 

**nota**  
Não é possível executar Database Console Commands (DBCC) no banco de dados `tempdb`. 

# Modificar opções do banco de dados tempdb
<a name="SQLServer.TempDB.Modifying"></a>

Você pode modificar as opções no banco de dados `tempdb` nas instâncias de bancos de dados do Amazon RDS. Para obter mais informações sobre quais opções podem ser modificadas, consulte [Banco de dados tempdb](https://msdn.microsoft.com/en-us/library/ms190768%28v=sql.120%29.aspx) na documentação da Microsoft.

As opções do banco de dados, como as opções de tamanho máximo do arquivo, são persistentes depois que você reinicia sua instância de banco de dados. Você pode modificar as opções do banco de dados para otimizar a performance ao importar dados e para não ficar sem espaço de armazenamento.

## Otimizar a performance ao importar dados
<a name="SQLServer.TempDB.Modifying.Import"></a>

Para otimizar a performance ao importar grandes quantidades de dados na sua instância de banco de dados, defina as propriedades `SIZE` e `FILEGROWTH` do banco de dados tempdb para grandes quantidades. Para obter mais informações sobre como otimizar `tempdb`, consulte [Otimizando a performance do tempdb](https://technet.microsoft.com/en-us/library/ms175527%28v=sql.120%29.aspx) na documentação da Microsoft.

O exemplo a seguir demonstra a configuração do tamanho para 100 GB e o crescimento de arquivos para 10%. 

```
1. alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)
```

## Prevenir problemas de armazenamento
<a name="SQLServer.TempDB.Modifying.Full"></a>

Para evitar que o banco de dados `tempdb` use todo o espaço em disco disponível, defina a propriedade `MAXSIZE`. O exemplo a seguir demonstra a configuração da propriedade para 2048 MB. 

```
1. alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)
```

# Recolher o banco de dados tempdb
<a name="SQLServer.TempDB.Shrinking"></a>

Existem duas maneiras de reduzir o banco de dados `tempdb` na instância de banco de dados do Amazon RDS. Você pode usar o procedimento `rds_shrink_tempdbfile` ou pode definir a propriedade `SIZE`, 

## Usar o procedimento rds\$1shrink\$1tempdbfile
<a name="SQLServer.TempDB.Shrinking.Proc"></a>

Você pode usar o procedimento `msdb.dbo.rds_shrink_tempdbfile` do Amazon RDS para reduzir o banco de dados `tempdb`. Só será possível chamar `rds_shrink_tempdbfile` se você tiver acesso `CONTROL` a `tempdb`. Quando você chama `rds_shrink_tempdbfile`, não há tempo de inatividade para sua instância de banco de dados. 

O procedimento `rds_shrink_tempdbfile` tem os seguintes parâmetros.


****  

| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
| `@temp_filename` | SYSNAME | — | obrigatório | O nome lógico do arquivo para encolher. | 
| `@target_size` | int | nulo | opcional | O novo tamanho para o arquivo, em megabytes. | 

O exemplo a seguir obtém os nomes dos arquivos para o banco de dados `tempdb`.

```
1. use tempdb;
2. GO
3. 
4. select name, * from sys.sysfiles;
5. GO
```

O exemplo a seguir reduz um arquivo do banco de dados `tempdb` chamado `test_file` e solicita um novo tamanho de `10` megabytes: 

```
1. exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;
```

## Definir a propriedade SIZE
<a name="SQLServer.TempDB.Shrinking.Size"></a>

Você também pode reduzir o banco de dados `tempdb` definindo a propriedade `SIZE` e reiniciando a instância de banco de dados. Para obter mais informações sobre como reiniciar sua instância de banco de dados, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md).

O exemplo a seguir demonstra a configuração da propriedade `SIZE` para 1024 MB. 

```
1. alter database [tempdb] modify file (NAME = N'templog', SIZE = 1024MB)
```

# Configuração TempDB para implantações multi-AZ
<a name="SQLServer.TempDB.MAZ"></a>

Se a instância de banco de dados do RDS para o SQL Server estiver em uma implantação multi-AZ usando o Database Mirroring (DBM) ou grupos de disponibilidade (AGs) Always On, lembre-se das considerações a seguir para o uso do banco de dados `tempdb`.

Não é possível replicar dados do `tempdb` da instância de banco de dados primária para a instância de banco de dados secundária. Ao fazer failover para uma instância de banco de dados secundária, o `tempdb` nessa instância de banco de dados secundária estará vazia.

É possível sincronizar a configuração das opções do banco de dados `tempdb`, incluindo o tamanho do arquivo e as configurações de crescimento automático, da instância de banco de dados primária para a instância de banco de dados secundária. A sincronização da configuração `tempDB` é aceita em todas as versões do RDS para SQL Server. É possível ativar a sincronização automática da configuração `tempdb` usando o seguinte procedimento armazenado:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
```

**Importante**  
Antes de usar o procedimento armazenado `rds_set_system_database_sync_objects`, defina a configuração `tempdb` preferencial na instância de banco de dados primária, e não na instância de banco de dados secundária. Se você tiver feito a alteração na instância de banco de dados secundária, a configuração `tempdb` preferencial poderá ser excluída ao ativar a sincronização automática.

É possível usar a seguinte função para confirmar se a sincronização automática da configuração `tempdb` está ativada:

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

Quando a sincronização automática da configuração `tempdb` estiver ativada, haverá um valor exibido para o campo `object_class`. Quando está desativada, nenhum valor é exibido.

É possível usar a seguinte função para descobrir a última vez que os objetos foram sincronizados no horário UTC:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Por exemplo, se você modificou a configuração `tempdb` às 01:00 e depois executou a função `rds_fn_server_object_last_sync_time`, o valor exibido para `last_sync_time` deve ser posterior à 01:00, indicando que ocorreu uma sincronização automática.

Se você também estiver usando a replicação do SQL Server Agent, poderá habilitar a replicação tanto para os trabalhos do SQL Agent quanto para a configuração `tempdb` fornecendo-os no parâmetro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Para ter mais informações sobre a replicação de trabalhos do SQL Server Agent, consulte [Ativar a replicação de trabalhos do SQL Server Agent](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).

Como alternativa ao uso do procedimento armazenado `rds_set_system_database_sync_objects` para garantir que as alterações da configuração `tempdb` sejam sincronizadas automaticamente, é possível usar um dos seguintes métodos manuais:

**nota**  
Recomendamos ativar a sincronização automática da configuração `tempdb` usando o procedimento armazenado `rds_set_system_database_sync_objects`: O uso da sincronização automática evita a necessidade de realizar essas tarefas manuais sempre que você altera a configuração `tempdb`.
+ Primeiro modifique sua instância de banco de dados e desative o Multi-AZ e depois modifique tempdb e finalmente volte a ativar o Multi-AZ. Esse método não envolve qualquer tempo de inatividade.

  Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 
+ Modifique `tempdb` na instância primária original, faça failover manualmente e, por fim, modifique `tempdb` na nova instância primária. Esse método envolve tempo de inatividade. 

  Para ter mais informações, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md).

# Análise da workload do banco de dados em uma instância de banco de dados do Amazon RDS para SQL Server com o Orientador de Otimização do Mecanismo de Banco de Dados
<a name="Appendix.SQLServer.CommonDBATasks.Workload"></a>

O Orientador de Otimização do Mecanismo de Banco de Dados é uma aplicação de cliente fornecida pela Microsoft que analisa a workload do banco de dados e recomenda um conjunto ideal de índices aos bancos de dados do Microsoft SQL Server, com base nos tipos de consultas que você executa. Assim como no SQL Server Management Studio, você executa o Orientador de Otimização em um computador cliente conectado à instância de banco de dados do Amazon RDS que está executando o SQL Server. O computador cliente pode ser um computador local que você executa nas instalações dentro de sua própria rede, ou pode ser uma instância do Amazon EC2 para Windows que está sendo executada na mesma região que a sua instância de banco de dados do Amazon RDS.

Esta seção mostra como capturar uma workload para análise do Orientador de Otimização. Este é o processo ideal para capturar uma workload, pois o Amazon RDS restringe o acesso do host à instância do SQL Server. Para obter mais informações, consulte [Database Engine Tuning Advisor](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) (Orientador de Otimização do Mecanismo de Banco de dados) na documentação da Microsoft.

Para usar Orientador de Otimização, é necessário fornecer uma workload ao aplicativo. Uma workload é um conjunto de instruções Transact-SQL executadas em um banco de dados ou nos bancos de dados que você deseja ajustar. Orientador de Otimização do Mecanismo de Banco de Dados usa arquivos de rastreamento, tabelas de rastreamento, scripts Transact-SQL ou arquivos XML como entrada de workload ao ajustar bancos de dados. Ao trabalhar com o Amazon RDS, uma workload pode ser um arquivo em um computador cliente ou uma tabela de banco de dados em um banco de dados do Amazon RDS para SQL Server que pode ser acessada pelo computador cliente. O arquivo ou a tabela deve conter consultas feitas nos bancos de dados que você deseja ajustar e em um formato adequado para repetição.

Para que o Orientador de Otimização seja mais eficiente, uma workload deve ser o mais realista possível. É possível gerar um arquivo ou uma tabela de workload executando rastreamento na instância de banco de dados. Durante a execução do rastreamento, é possível simular uma carga na instância de banco de dados ou executar os aplicativos com uma carga normal.

Há dois tipos de rastreamento: no lado do cliente e no lado do servidor. A configuração de um rastreamento no lado do cliente é mais fácil e permite acompanhar a captura dos eventos de rastreamento em tempo real no SQL Server Profiler. A configuração de um rastreamento no lado do servidor é mais complexa e requer o uso de scripts Transact-SQL. Além disso, como o rastreamento é gravado em um arquivo na instância de banco de dados do Amazon RDS, o espaço de armazenamento é consumido pelo rastreamento. É importante controlar o espaço de armazenamento usado pelo rastreamento em execução no lado do servidor, pois a instância de banco de dados não ficará mais disponível se não houver espaço de armazenamento.

No caso de um rastreamento no lado do cliente, quando uma quantidade suficiente de dados de rastreamento é capturada no SQL Server Profiler, é possível gerar o arquivo de workload. Para isso, basta salvar o rastreamento em um arquivo no computador local ou em uma tabela de banco de dados em uma instância de banco de dados disponível para o seu computador cliente. A principal desvantagem de usar um rastreamento no lado do cliente é que talvez nem todas as consultas sejam capturadas quando sob cargas pesadas. Isso pode diminuir a eficácia da análise realizada pelo Orientador de Otimização do Mecanismo de Banco de Dados. Se você precisar executar um rastreamento sob cargas pesadas e desejar garantir que sejam capturadas todas as consultas durante uma sessão de rastreamento, será necessário usar um rastreamento no lado do servidor.

Para realizar um rastreamento do lado do servidor, é necessário que os arquivos de rastreamento na instância de banco de dados estejam em um arquivo de workload adequado. Também é possível salvar o rastreamento em uma tabela na instância de banco de dados após a conclusão do rastreamento. Você pode usar SQL Server Profiler para salvar o rastreamento em um arquivo no computador local ou usar Orientador de Otimização, de modo que ele faça a leitura na tabela de rastreamento na instância de banco de dados.

# Execução de um rastreamento no lado do cliente em uma instância de banco de dados SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ClientSide"></a>

 **Para executar um rastreamento no lado do cliente em uma instância de banco de dados SQL Server** 

1. Inicie SQL Server Profiler. Ele é instalado na pasta Performance Tools da instância do SQL Server. É necessário carregar ou especificar um modelo de definição de rastreamento para iniciar um rastreamento no lado do cliente.

1. No menu Arquivo do SQL Server Profiler, escolha **New Trace (Novo rastreamento)**. Na caixa de diálogo **Connect to Server (Conectar-se ao servidor)**, insira o endpoint da instância de banco de dados, a porta, o nome de usuário principal e a senha do banco de dados no qual deseja executar um rastreamento.

1. Na caixa de diálogo **Trace Properties (Propriedades de rastreamento)**, insira um nome de rastreamento e escolha um modelo de definição de rastreamento. O aplicativo vem com o modelo padrão TSQL\$1Replay. É possível editar este modelo para definir o rastreamento. Edite eventos e as informações sobre eles na guia **Events Selection (Seleção de eventos)** da caixa de diálogo **Trace Properties (Propriedades de rastreamento)**.

   Para obter mais informações sobre os modelos de definição de rastreamento e sobre o uso do SQL Server Profiler para especificar um rastreamento no lado do cliente, consulte [Database Engine Tuning Advisor ](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) (Orientador de Otimização do Mecanismo de Banco de dados) na documentação da Microsoft.

1. Inicie o rastreamento no lado do cliente e acompanhe as consultas do SQL em tempo real enquanto elas são executadas na instância de banco de dados.

1. Selecione **Stop Trace (Parar rastreamento)** no menu **File (Arquivo)** quando você tiver concluído o rastreamento. Salve os resultados como um arquivo ou como uma tabela de rastreamento na instância de banco de dados.

# Execução de rastreamentos no lado do servidor em uma instância de banco de dados SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ServerSide"></a>

A criação de scripts para fazer um rastreamento no lado do servidor pode ser uma tarefa complexa e está além do escopo deste documento. Esta seção contém amostras de scripts que é possível usar como exemplos. Assim como em um rastreamento no lado do cliente, o objetivo é criar um arquivo de workload ou uma tabela de rastreamento que você pode abrir usando o Orientador de Otimização do Mecanismo de Banco de Dados.

Veja a seguir um script de exemplo resumido iniciado no lado do servidor e que captura detalhes de rastreamento para um arquivo de workload. Inicialmente, o rastreamento é salvo no arquivo, que fica no diretório D:\$1RDSDBDATA\$1Log RDSTrace.trc, e é renovado a cada 100 MB. Assim, os arquivos de rastreamento subsequentes são chamados RDSTrace\$11.trc, RDSTrace\$12.trc etc.

```
DECLARE @file_name NVARCHAR(245) = 'D:\RDSDBDATA\Log\RDSTrace';
DECLARE @max_file_size BIGINT = 100;
DECLARE @on BIT = 1
DECLARE @rc INT
DECLARE @traceid INT

EXEC @rc = sp_trace_create @traceid OUTPUT, 2, @file_name, @max_file_size
IF (@rc = 0) BEGIN
   EXEC sp_trace_setevent @traceid, 10, 1, @on
   EXEC sp_trace_setevent @traceid, 10, 2, @on
   EXEC sp_trace_setevent @traceid, 10, 3, @on
 . . .
   EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Profiler'
   EXEC sp_trace_setstatus @traceid, 1
   END
```

O exemplo a seguir é um script que interrompe um rastreamento. Observe que um rastreamento criado pelo script anterior continuará a ser executado até que seja explicitamente interrompido ou até que o processo fique sem espaço em disco.

```
DECLARE @traceid INT
SELECT @traceid = traceid FROM ::fn_trace_getinfo(default) 
WHERE property = 5 AND value = 1 AND traceid <> 1 

IF @traceid IS NOT NULL BEGIN
   EXEC sp_trace_setstatus @traceid, 0
   EXEC sp_trace_setstatus @traceid, 2
END
```

É possível salvar os resultados do rastreamento no lado do servidor em uma tabela de banco de dados e usar essa como a workload do Orientador de Otimização com a função fn\$1trace\$1gettable. Os comandos a seguir carregam os resultados de todos os arquivos chamados RDSTrace.trc no diretório D:\$1rdsdbdata\$1Log RDSTrace.trc, inclusive todos os arquivos subsequentes como RDSTrace\$11.trc, em uma tabela chamada RDSTrace no banco de dados atual.

```
SELECT * INTO RDSTrace
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace.trc', default);
```

Para salvar um arquivo subsequente específico em uma tabela (por exemplo o RDSTrace\$11.trc), especifique o nome do arquivo e substitua default pelo número 1 como o último parâmetro para fn\$1trace\$1gettable.

```
SELECT * INTO RDSTrace_1
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace_1.trc', 1);
```

# Execução do Orientador de Otimização com um rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.Running"></a>

Após a criação de um rastreamento, seja como um arquivo local ou uma tabela de banco de dados, é possível executar Orientador de Otimização na instância de banco de dados. Usar o Orientador de Otimização com o Amazon RDS é como trabalhar com uma instância autônoma e remota do SQL Server. É possível usar a interface de usuário do Orientador de Otimização na máquina cliente ou o utilitário dta.exe na linha de comando. Em ambos os casos, ao usar o Orientador de Otimização, você deve se conectar à instância de banco de dados do Amazon RDS usando o endpoint para a instância de banco de dados e fornecer seu nome de usuário mestre e senha de usuário mestre. 

O exemplo de código a seguir demonstra como usar o utilitário de linha de comando dta.exe em uma instância de banco de dados do Amazon RDS com um endpoint de **dta.cnazcmklsdei.us-east-1.rds.amazonaws.com**. O exemplo inclui o nome de usuário mestre **admin** e a senha do usuário mestre **test**. O banco de dados de exemplo a ser ajustado é chamado de máquina **C:\$1RDSTrace.trc**. O código de linha de comando do exemplo também especifica uma sessão de rastreamento chamada **RDSTrace1** e especifica os arquivos de saída para a máquina local chamados **RDSTrace.sql** para o script de saída do SQL, **RDSTrace.txt** para um arquivo de resultado e **RDSTrace.xml** para um arquivo XML da análise. Há também uma tabela de erros especificada no banco de dados do RDSDTA chamada **RDSTraceErrors**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -if C:\RDSTrace.trc -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors 
```

Veja o mesmo exemplo de código de linha de comando, exceto que a workload de entrada é uma tabela na instância remota do Amazon RDS denominada **RDSTrace** que está no banco de dados **RDSDTA**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -it RDSDTA.dbo.RDSTrace -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors
```

Para obter uma lista completa dos parâmetros da linha de comando do utilitário dta, consulte [dta Utility](https://docs.microsoft.com/en-us/sql/tools/dta/dta-utility) (Utilitário dta) na documentação da Microsoft.

# Alterar `db_owner` para a conta `rdsa` do banco de dados do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ChangeDBowner"></a>

Quando você cria ou restaura um banco de dados em uma instância de banco de dados do RDS para SQL Server, o Amazon RDS define o proprietário do banco de dados como. `rdsa`. Se você tiver uma implantação multi-AZ usando o espelhamento de banco de dados (DBM) ou grupos de disponibilidade AlwaysOn (AGs) do SQL Server, o Amazon RDS definirá o proprietário do banco de dados na instância de banco de dados secundária como `NT AUTHORITY\SYSTEM`. O proprietário do banco de dados secundário não poderá ser alterado enquanto a instância de banco de dados secundária não for promovida à função principal. Na maioria dos casos, definir o proprietário do banco de dados como `NT AUTHORITY\SYSTEM` não é um problema ao executar consultas, mas pode gerar erros ao executar procedimentos armazenados no sistema, como `sys.sp_updatestats` que exigem permissões elevadas para execução.

Você pode usar a seguinte consulta para identificar o proprietário dos bancos de dados de propriedade de `NT AUTHORITY\SYSTEM`:

```
SELECT name FROM sys.databases WHERE SUSER_SNAME(owner_sid) = 'NT AUTHORITY\SYSTEM';
```

É possível usar o procedimento armazenado `rds_changedbowner_to_rdsa` do Amazon RDS para alterar o proprietário do banco de dados para `rdsa`. Os seguintes bancos de dados não podem ser usados com `rds_changedbowner_to_rdsa`: `master, model, msdb, rdsadmin, rdsadmin_ReportServer, rdsadmin_ReportServerTempDB, SSISDB`.

Para alterar o proprietário do banco de dados para `rdsa`, chame o procedimento armazenado `rds_changedbowner_to_rdsa` e forneça o nome do banco de dados.

**Example uso:**  

```
exec msdb.dbo.rds_changedbowner_to_rdsa 'TestDB1';
```

O seguinte parâmetro é obrigatório:
+ `@db_name`: o nome do banco de dados para o qual alterar o proprietário do banco de dados `rdsa`.

**Importante**  
Não é possível usar `rds_changedbowner_to_rdsa` para alterar a propriedade de um banco de dados para um login diferente de `rdsa`. Por exemplo, não é possível alterar a propriedade do login com o qual você criou o banco de dados. Para restaurar a associação perdida no perfil `db_owner` de seu usuário mestre quando nenhum outro usuário do banco de dados puder ser usado para conceder a associação, redefina a senha do usuário mestre para ter a associação ao perfil `db_owner`. Para obter mais informações, consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).

# Gerenciar agrupamentos e conjuntos de caracteres para o Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation"></a>

Este tópico fornece orientações sobre como gerenciar agrupamentos e conjuntos de caracteres do Microsoft SQL Server no Amazon RDS. Ele explica como configurar agrupamentos durante a criação do banco de dados e modificá-los posteriormente, garantindo o tratamento adequado dos dados de texto com base nos requisitos de idioma e localidade. Além disso, ele aborda as práticas recomendadas para manter a compatibilidade e o desempenho em ambientes do SQL Server no Amazon RDS.

O SQL Server é compatível com agrupamentos em vários níveis. Você define o agrupamento de servidores padrão quando cria a instância de banco de dados. É possível substituir o agrupamento no nível de banco de dados, tabela ou coluna.

**Topics**
+ [Agrupamento no nível do servidor para o Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Server)
+ [Agrupamento no nível do banco de dados para o Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column)

## Agrupamento no nível do servidor para o Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Server"></a>

Ao criar uma instância de banco de dados do Microsoft SQL Server, você pode definir o agrupamento de servidor que você deseja usar. Se você não escolher um agrupamento diferente, o agrupamento no nível do servidor será padronizado como SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS. O agrupamento do servidor é aplicado por padrão a todos os bancos de dados e objetos de banco de dados.

**nota**  
Não é possível alterar o agrupamento ao fazer a restauração a partir de um snapshot de banco de dados.

Atualmente, o Amazon RDS é compatível com os seguintes agrupamentos de servidores:


| Collation (Agrupamento) | Descrição | 
| --- | --- | 
|  Árabe\$1CI\$1AS  |  Arabic, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Chinese\$1PRC\$1BIN2  |  Chinese-PRC, ordem de classificação por pontos de código binário  | 
|  Chinese\$1PRC\$1CI\$1AS  |  Chinese-PRC, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Chinese\$1Taiwan\$1Stroke\$1CI\$1AS  |  Chinese-Taiwan-Stroke, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS\$1WS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1WS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, diferencia a largura  | 
|  Danish\$1Norwegian\$1CS\$1AI  |  Danish-Norwegian, diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CS\$1AI\$1KS  |  Danish-Norwegian, diferencia letras maiúsculas de minúsculas, não diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1100\$1BIN  |  Finnish-Swedish-100, classificação binária  | 
|  Finnish\$1Swedish\$1100\$1BIN2  |  Finnish-Swedish-100, classificação binária de comparação de ponto de código  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AI  |  Finnish-Swedish 100, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AS  |  Finnish-Swedish 100, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1CI\$1AS  |  Finlandês, sueco e sueco (Finlândia) – não diferenciam maiúsculas de minúsculas, diferenciação de acentos, indiferentes ao tipo de kana, indiferentes à largura  | 
|  French\$1CI\$1AS  |  French, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Greek\$1CI\$1AS  |  Grego, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Greek\$1CS\$1AS  |  Grego, diferencia maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Hebrew\$1BIN  |  Hebraico, classificação binária  | 
|  Hebrew\$1CI\$1AS  |  Hebrew, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1BIN  | Japonês, tipo binário | 
|  Japanese\$1CI\$1AS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1CS\$1AS  |  Japanese, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura, caracteres complementares, não diferencia o seletor de variação  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura, caracteres complementares, diferencia o seletor de variação  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura, caracteres complementares, diferencia o seletor de variação  | 
|  japonês\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS  |  Japanese, diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, diferencia a largura, caracteres complementares, não diferencia o seletor de variação  | 
|  Korean\$1Wansung\$1CI\$1AS  |  Korean-Wansung, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1100\$1BIN  |  Latin1-General-100, tipo binário  | 
|  Latin1\$1General\$1100\$1BIN2  |  Latin1-General-100, ordem de classificação por pontos de código binário  | 
|  Latin1\$1General\$1100\$1BIN2\$1UTF8  |  Latin1-General-100, ordem de classificação por pontos de código binário, codificado em UTF-8  | 
|  Latin1\$1General\$1100\$1CI\$1AS  |  Latin1-General-100, não diferencia maiúsculas de minúsculas, diferenciação de acentos, indiferente ao tipo de kana, indiferente à largura  | 
|  Latin1\$1General\$1100\$1CI\$1AS\$1SC\$1UTF8  |  Latin1-General-100, não diferencia letras maiúsculas de minúsculas, diferencia acentos, caracteres complementares, codificação em UTF-8  | 
|  Latin1\$1General\$1BIN  |  Latin1-General, tipo binário  | 
|  Latin1\$1General\$1BIN2  |  Latin1-General, ordem de classificação por pontos de código binário  | 
|  Latin1\$1General\$1CI\$1AI  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CI\$1AS  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CI\$1AS\$1KS  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CS\$1AS  |  Latin1-Geral, diferencia maiúsculas de minúsculas, diferenciação de acentos, indiferente ao tipo de kana, indiferente à largura  | 
|  Modern\$1Spanish\$1CI\$1AS  |  Modern-Spanish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  polish\$1ci\$1as  |  Polish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  SQL\$11xCompat\$1CP850\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 49 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 54 na página de código 1252 para dados que não são do Unicode  | 
|  **SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS (padrão)**  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 52 na página de código 1252 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CS\$1AS  |  Latin1-Geral, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 51 na página de código 1252 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP437\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 34 na página de código 437 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1bin  |  Latin1-General, ordem de classificação por pontos de código binário para dados do Unicode, ordem de classificação do SQL Server 40 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1BIN2  |  Latin1-General, ordem de classificação por pontos de código binário para dados do Unicode, ordem de classificação do SQL Server 40 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 44 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 42 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1Pref\$1CP850\$1CI\$1AS  |  Latin1-General-Pref, não diferencia maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 183 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1256\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 146 na página de código 1256 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1255\$1CS\$1AS  |  Latin1-Geral, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 137 na página de código 1255 para dados que não são do Unicode  | 
|  Thai\$1CI\$1AS  |  Thai, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  turkish\$1ci\$1as  |  Turkish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 

Você também pode recuperar a lista de agrupamentos aceitos programaticamente usando a AWS CLI.

```
aws rds describe-db-engine-versions --engine sqlserver-ee --list-supported-character-sets --query 'DBEngineVersions[].SupportedCharacterSets[].CharacterSetName' | sort -u
```

Para escolher o agrupamento:
+ Se você estiver usando o console do Amazon RDS, ao criar uma instância de banco de dados, escolha **Additional configuration** (Configuração adicional) e insira o agrupamento no campo **Collation** (Agrupamento). Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md). 
+ Se você estiver usando a AWS CLI, use a opção `--character-set-name` com o comando `create-db-instance`. Para obter mais informações, consulte [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html).
+ Se você estiver usando a API do Amazon RDS, use o parâmetro `CharacterSetName` com a operação `CreateDBInstance`. Para obter mais informações, consulte [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html).

## Agrupamento no nível do banco de dados para o Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column"></a>

Para alterar o agrupamento padrão no banco de dados, na tabela ou na coluna, anule o nível do agrupamento ao criar um novo banco de dados ou um objeto de banco de dados. Por exemplo, se o agrupamento de servidores padrão for SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS, você poderá alterá-lo para Mohawk\$1100\$1CI\$1AS para suporte ao agrupamento Mohawk. Se necessário, é possível até mesmo converter o tipo de argumentos em uma consulta, de modo que eles usem um tipo de agrupamento diferente.

Por exemplo, a consulta abaixo altera o agrupamento padrão da coluna AccountName para Mohawk\$1100\$1CI\$1AS

```
CREATE TABLE [dbo].[Account]
	(
	    [AccountID] [nvarchar](10) NOT NULL,
	    [AccountName] [nvarchar](100) COLLATE Mohawk_100_CI_AS NOT NULL 
	) ON [PRIMARY];
```

O mecanismo de banco de dados Microsoft SQL Server é compatível com Unicode por meio dos tipos de dados NCHAR, NVARCHAR e NTEXT. Por exemplo, se precisar de suporte para CJK, use esses tipos de dados Unicode para armazenamento de caracteres e substitua o agrupamento padrão de servidor ao criar seus bancos de dados e tabelas. Veja a seguir alguns links da Microsoft sobre agrupamentos e compatibilidade com o Unicode do SQL Server:
+ [Trabalhando com agrupamentos](http://msdn.microsoft.com/en-us/library/ms187582%28v=sql.105%29.aspx) 
+ [Collation and international terminology](http://msdn.microsoft.com/en-us/library/ms143726%28v=sql.105%29) 
+ [Using SQL Server collations](http://msdn.microsoft.com/en-us/library/ms144260%28v=sql.105%29.aspx) 
+ [Considerações internacionais para aplicativos de banco de dados e aplicativos do Mecanismo de Banco de Dados](http://msdn.microsoft.com/en-us/library/ms190245%28v=sql.105%29.aspx)

# Criar um usuário de banco de dados para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CreateUser"></a>

Você pode criar um usuário de banco de dados para a instância de banco de dados Amazon RDS para Microsoft SQL Server executando um script T-SQL como o exemplo a seguir. Use uma aplicação como o SQL Server Management Suite (SSMS). Você faz login na instância de banco de dados como o usuário mestre que foi criado ao criar a instância de banco de dados.

```
--Initially set context to master database
USE [master];
GO
--Create a server-level login named theirname with password theirpassword
CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
GO
--Set context to msdb database
USE [msdb];
GO
--Create a database user named theirname and link it to server-level login theirname
CREATE USER [theirname] FOR LOGIN [theirname];
GO
```

Para obter um exemplo da adição de um usuário de banco de dados a uma função, consulte [Adicionar um usuário à função SQLAgentUser](SQLServerAgent.AddUser.md).

**nota**  
Se você receber erros de permissão ao adicionar um usuário, poderá restaurar privilégios modificando a senha de usuário primário da instância de banco de dados. Para ter mais informações, consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   
Não é uma prática recomendada clonar as permissões do usuário principal em suas aplicações. Para ter mais informações, consulte [How to clone master user permissions in Amazon RDS for SQL Server](https://aws.amazon.com/blogs/database/how-to-clone-master-user-permissions-in-amazon-rds-for-sql-server/).

# Determinar um modelo de recuperação para o banco de dados do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseRecovery"></a>

No Amazon RDS, o modelo de recuperação, o período de retenção e o status do banco de dados estão vinculados.

É importante entender as consequências antes de fazer uma alteração em uma dessas configurações. Cada configuração pode afetar as outras. Por exemplo:
+ Se você alterar o modelo de recuperação de um banco de dados para SIMPLE ou BULK\$1LOGGED enquanto a retenção de backup estiver habilitada, o Amazon RDS redefinirá o modelo de recuperação para FULL em cinco minutos. Isso também fará com que o RDS tire um snapshot da instância de banco de dados.
+ Se você definir a retenção de backup como `0` dias, o RDS definirá o modo de recuperação como SIMPLE.
+ Se você alterar o modelo de recuperação de um banco de dados de SIMPLE para qualquer outra opção enquanto a retenção de backup estiver definida como `0` dias, o RDS redefinirá o modelo de recuperação de volta para SIMPLE.

**Importante**  
Nunca altere o modelo de recuperação em instâncias multi-AZ, mesmo que pareça que você pode fazer isso—por exemplo, usando ALTER DATABASE. A retenção de backup e, portanto, o modo de recuperação FULL, é necessária para o multi-AZ. Se você alterar o modelo de recuperação, o RDS o alterará imediatamente para FULL.  
Esta reinicialização automática força o RDS a reconstruir completamente o espelhamento. Durante essa reconstrução, a disponibilidade do banco de dados é degradada por cerca de 30-90 a 90 minutos até que o espelhamento esteja pronto para failover. A instância de banco de dados também enfrenta a degradação da performance da mesma maneira que durante uma conversão de single-AZ para multi-AZ. O tempo durante o qual a performance é degradada depende do tamanho do armazenamento de banco de dados — quanto maior o banco de dados armazenado, mais longa será a degradação.

Para obter mais informações sobre modelos de recuperação do SQL Server, consulte [Modelos de recuperação (SQL Server)](https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server) na documentação da Microsoft.

# Determinar o horário do último failover do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.LastFailover"></a>

Para determinar o último tempo de failover, use o seguinte procedimento armazenado:

```
execute msdb.dbo.rds_failover_time;
```

Este procedimento retorna as informações a seguir.


****  

| Parâmetro de saída | Descrição | 
| --- | --- | 
|  errorlog\$1available\$1from  |  Mostra o tempo em que os logs de erro estão disponíveis no diretório de log.  | 
|  recent\$1failover\$1time  |  Mostra o último tempo de failover se estiver disponível nos logs de erro. Caso contrário, será exibido `null`.  | 

**nota**  
O procedimento armazenado pesquisa todos os logs de erro disponíveis do SQL Server no diretório de log para recuperar o tempo de failover mais recente. Se as mensagens de failover foram substituídas pelo SQL Server, o procedimento não recuperará o tempo de failover.

**Example de nenhum failover recente**  
Este exemplo mostra a saída quando não há nenhum failover recente nos logs de erros. Nenhum failover aconteceu desde 29-04-2020 23:59:00.01.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  nulo  | 

**Example de failover recente**  
Este exemplo mostra a saída quando há um failover nos logs de erros. O failover mais recente foi em 05-05-2020 18:57:51.89.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  05-05-2020 18:57:51.8900000  | 

# Solução de problemas de falhas de recuperação para um ponto no tempo devido a uma descontinuidade no número de sequência de log
<a name="Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps"></a>

Ao tentar a recuperação para um ponto no tempo (PITR) no RDS para SQL Server, você pode encontrar falhas devido a descontinuidades nos números de sequência de log (LSNs). Essas descontinuidade impedem que o RDS restaure o banco de dados no horário solicitado, e o RDS coloca a instância de restauração no estado `incompatible-restore`.

Algumas causas comuns desse problema são:
+ Alterações manuais no modelo de recuperação do banco de dados.
+ Alterações automáticas no modelo de recuperação pelo RDS devido à insuficiência de recursos para concluir o backup dos logs de transações.

Para identificar descontinuidades no LSN em seu banco de dados, execute esta consulta:

```
SELECT * FROM msdb.dbo.rds_fn_list_tlog_backup_metadata(database_name)
ORDER BY backup_file_time_utc desc;
```

Se você descobrir uma descontinuidade no LSN, você pode:
+ Escolher um ponto de restauração antes da descontinuidade do LSN.
+ Aguardar e restaurar para um ponto após a conclusão do próximo backup da instância.

Para evitar esse problema, recomendamos que você não altere manualmente o modelo de recuperação dos bancos de dados do RDS para SQL Server, pois isso interrompe a durabilidade da instância. Também recomendamos que você escolha um tipo de instância com recursos suficientes para sua workload, a fim de garantir backups regulares do log de transações.

Para ter mais informações sobre o gerenciamento de logs de transações, consulte [SQL Server transaction log architecture and management guide](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver16) na documentação do Microsoft SQL Server.

# Negue ou permita a visualização de nomes de banco de dados no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ManageView"></a>

O usuário principal não pode definir `DENY VIEW ANY DATABASE TO LOGIN` para ocultar bancos de dados de um usuário.   Para alterar essa permissão, use o seguinte procedimento armazenado:
+ Negar acesso de visualização do banco de dados ao *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission=‘DENY’, @server_principal=‘LOGIN’  
  go
  ```
+ Permitir acesso de visualização do banco de dados ao *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission='GRANT', @server_principal='LOGIN' 
   go
  ```

Pense no seguinte ao usar esse procedimento armazenado:
+ Os nomes dos bancos de dados estão ocultos do SSMS e do DMV interno (visualizações de gerenciamento dinâmico). No entanto, os nomes dos bancos de dados ainda são visíveis nas tabelas de auditoria, de logs e de metadados. Essas são permissões protegidas `VIEW ANY DATABASE` do servidor. Para ter mais informações, consulte [Permissões do servidor DENY](https://learn.microsoft.com/en-us/sql/t-sql/statements/deny-server-permissions-transact-sql?view=sql-server-ver16#permissions).
+ Depois que a permissão for revertida para `GRANT` (permitido), o *LOGIN* poderá visualizar todos os bancos de dados.
+ Se você excluir e recriar *LOGIN*, a permissão de visualização relacionada ao LOGIN será redefinida como `ALLOW`.
+ Para instâncias multi-AZ, defina a permissão `DENY` ou `GRANT` somente para o *LOGIN* no host primário. As alterações são propagadas automaticamente para o host secundário.
+ Essa permissão só altera se um login pode visualizar os nomes do banco de dados. No entanto, o acesso aos bancos de dados e objetos internos é gerenciado separadamente.

# Desabilitar inserções rápidas durante o carregamento em massa para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DisableFastInserts"></a>

A partir do SQL Server 2016, as inserções rápidas são habilitadas por padrão. As inserções rápidas aproveitam o registro em log mínimo que ocorre enquanto o banco de dados está no modelo de recuperação simples ou em massa registrada em log para otimizar a performance da inserção. Com as inserções rápidas, cada lote de carregamento em massa adquire novas extensões, ignorando a pesquisa de alocação para extensões existentes com espaço livre disponível para otimizar a performance das inserções.

No entanto, com as inserções rápidas, os carregamentos em massa com tamanhos de lote pequenos podem levar ao aumento do espaço não utilizado consumido pelos objetos. Se aumentar o tamanho do lote não for viável, habilitar o sinalizador de rastreamento 692 poderá ajudar a reduzir o espaço reservado não utilizado, mas isso afetará a performance. Habilitar esse sinalizador de rastreamento desabilitará as inserções rápidas durante o carregamento em massa de dados no heap ou índices em cluster.

O sinalizador de rastreamento 692 é habilitado como um parâmetro de inicialização usando grupos de parâmetros de banco de dados. Para obter mais informações, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Há suporte ao sinalizador de rastreamento 692 para o Amazon RDS no SQL Server 2016 e posterior. Para obter mais informações sobre sinalizadores de rastreamento, consulte [DBCC TRACEON – sinalizadores de rastreamento](https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql) na documentação da Microsoft.

# Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DropMirrorDB"></a>

É possível eliminar um banco de dados em uma instância de banco de dados do Amazon RDS que executa o Microsoft SQL Server em uma implantação single-AZ ou multi-AZ. Para ignorar o banco de dados, use o seguinte comando:

```
--replace your-database-name with the name of the database you want to drop
EXECUTE msdb.dbo.rds_drop_database  N'your-database-name'
```

**nota**  
Use aspas simples retas no comando. Aspas curvas causarão um erro.

Depois que você usa esse procedimento para ignorar o banco de dados, o Amazon RDS ignora todas as conexões existentes com o banco de dados e remove o histórico de backup do banco de dados.

Para conceder permissão de backup e restauração a outros usuários, siga este procedimento:

```
USE master
GO
CREATE LOGIN user1 WITH PASSWORD=N'changeThis', DEFAULT_DATABASE=master, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE msdb
GO
CREATE USER user1 FOR LOGIN user1
GO
use msdb
GO
GRANT EXECUTE ON msdb.dbo.rds_backup_database TO user1
GO
GRANT EXECUTE ON msdb.dbo.rds_restore_database TO user1
GO
```

# Renomear um banco de dados do Amazon RDS para Microsoft SQL Server em uma implantação multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.RenamingDB"></a>

Para renomear uma instância do banco de dados do Microsoft SQL Server que use o multi-AZ, use o seguinte procedimento:

1. Primeiramente, desative multi-AZ para a instância de banco de dados.

1. Renomeie o banco de dados executando `rdsadmin.dbo.rds_modify_db_name`.

1. Em seguida, ative o multi-AZ com Espelhamento ou os Grupos de disponibilidade AlwaysOn para a instância de banco de dados para retorná-la ao estado original.

Para obter mais informações, consulte [Adicionar Multi-AZ a uma instância de banco de dados do Microsoft SQL Server](USER_SQLServerMultiAZ.md#USER_SQLServerMultiAZ.Adding). 

**nota**  
Se a instância não usar multi-AZ, não será necessário alterar nenhuma configuração antes ou depois de executar `rdsadmin.dbo.rds_modify_db_name`.  
Não é possível renomear um banco de dados em uma instância de origem de réplica de leitura.

**Exemplo: **No exemplo a seguir, o procedimento armazenado `rdsadmin.dbo.rds_modify_db_name` renomeia um banco de dados de **MOO** para **ZAR**. É semelhante a executar a instrução `DDL ALTER DATABASE [MOO] MODIFY NAME = [ZAR]`. 

```
EXEC rdsadmin.dbo.rds_modify_db_name N'MOO', N'ZAR'
GO
```

# Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ResetPassword"></a>

Se você bloquear seu usuário mestre da associação ao perfil `db_owner` em seu banco de dados do RDS para SQL Server e nenhum outro usuário do banco de dados puder conceder a associação, você poderá restaurar a associação perdida modificando a senha do usuário mestre da instância de banco de dados. 

Ao alterar a senha do usuário mestre da instância de banco de dados, o RDS concede a associação `db_owner` aos bancos de dados na instância de banco de dados que pode ter sido revogada acidentalmente. É possível alterar a senha da instância de banco de dados usando o console do Amazon RDS, o comando da AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) ou a operação da API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html). Para ter mais informações sobre a modificação de uma instância de banco de dados , consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

# Restaurar instâncias de banco de dados com licenças encerradas no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.RestoreLTI"></a>

A Microsoft solicitou que alguns clientes do Amazon RDS que não informaram seus dados de Microsoft License Mobility encerrassem sua instância de banco de dados. O Amazon RDS faz snapshots dessas instâncias de banco de dados, e é possível restaurar do snapshot para uma nova instância de banco de dados que tenha o modelo de licença inclusa. 

É possível restaurar a partir de um snapshot da Standard Edition para a própria Standard Edition ou para a Enterprise Edition. 

É possível restaurar a partir de um snapshot da Enterprise Edition para a Standard Edition ou para a própria Enterprise Edition. 

**Como restaurar de um snapshot do SQL Server após o Amazon RDS criar um snapshot final da sua instância**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Snapshots**.

1. Escolha o snapshot da instância de banco de dados do SQL Server. O Amazon RDS cria um snapshot final da instância de banco de dados. O nome do snapshot da instância encerrada está no formato `instance_name-final-snapshot`. Por exemplo, se o nome da instância de banco de dados for **mytest.cdxgahslksma.us-east-1.rds.com**, o snapshot final se chamará ** mytest-final-snapshot** e estará na mesma região da AWS da instância de banco de dados original. 

1. Em **Actions (Ações)**, escolha **Restore Snapshot (Restaurar snapshot)**.

   A janela **Restore DB Instance (Restaurar instância de banco de dados)** é exibida.

1. Em **License Model (Modelo de licença)**, escolha **license-included (licença incluída)**. 

1. Escolha o mecanismo de banco de dados SQL Server que você deseja usar. 

1. Em **DB Instance Identifier (Identificador da instância de banco de dados)**, digite o nome da instância de banco de dados restaurada. 

1. Escolha **Restore DB Instance**.

Para obter mais informações sobre a restauração a partir de um snapshot, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md). 

# Transição de um banco de dados do Amazon RDS para SQL Server de OFFLINE para ONLINE
<a name="Appendix.SQLServer.CommonDBATasks.TransitionOnline"></a>

Você pode mudar o estado de seu banco de dados do Microsoft SQL Server em uma instância de banco de dados do Amazon RDS de `OFFLINE` para `ONLINE`. 


****  

| Método do SQL Server | Método do Amazon RDS | 
| --- | --- | 
| ALTER DATABASE *db\$1name* SET ONLINE; | EXEC rdsadmin.dbo.rds\$1set\$1database\$1online *db\$1name* | 

# Usar a captura de dados de alteração para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CDC"></a>

O Amazon RDS comporta captura de dados de alteração (CDC) em instâncias de banco de dados que estejam executando o Microsoft SQL Server. A CDC captura alterações feitas nos dados de suas tabelas. Ela armazena metadados sobre cada alteração, que podem ser acessados posteriormente. Para obter mais informações sobre como a CDC funciona, consulte [Captura de dados de alteração](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) na documentação da Microsoft. Para usar a CDC com suas instâncias de banco de dados do Amazon RDS, habilite-a no banco de dados executando `msdb.dbo.rds_cdc_enable_db`. Após a habilitação da CDC, qualquer usuário que seja um `db_owner` desse banco de dados poderá habilitar ou desabilitar a CDC em tabelas desse banco de dados.

**Importante**  
Durante restaurações, a CDC será desabilitada. Todos os metadados relacionados são removidos automaticamente do banco de dados. Isso se aplica a restaurações de snapshot e a restaurações pontuais. Após a execução desses tipos de restauração, você pode habilitar novamente a CDC e especificar tabelas novamente para acompanhamento.

Para habilitar o CDC para uma instância de banco de dados, execute o procedimento `msdb.dbo.rds_cdc_enable_db` armazenado.

```
1. exec msdb.dbo.rds_cdc_enable_db 'database_name'
```

Para desabilitar o CDC para uma instância de banco de dados, execute o procedimento `msdb.dbo.rds_cdc_disable_db` armazenado.

```
1. exec msdb.dbo.rds_cdc_disable_db 'database_name'
```

Para conceder permissões de CDC a um usuário, use o seguinte procedimento:

```
1. go
2. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_enable_db TO User1
3. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_disable_db TO User1
```

**Topics**
+ [Acompanhamento de tabelas com a Captura de dados de alteração](#Appendix.SQLServer.CommonDBATasks.CDC.tables)
+ [Trabalhos de captura de dados de alteração](#Appendix.SQLServer.CommonDBATasks.CDC.jobs)
+ [Change Data Capture para instâncias multi-AZ](#Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ)

## Acompanhamento de tabelas com a Captura de dados de alteração
<a name="Appendix.SQLServer.CommonDBATasks.CDC.tables"></a>

Após a CDC ser habilitada no banco de dados, você pode começar a acompanhar tabelas específicas. Você pode escolher as tabelas a serem acompanhadas executando [sys.sp\$1cdc\$1enable\$1table.](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql)

```
 1. --Begin tracking a table
 2. exec sys.sp_cdc_enable_table   
 3.    @source_schema           = N'source_schema'
 4. ,  @source_name             = N'source_name'
 5. ,  @role_name               = N'role_name'
 6. 
 7. --The following parameters are optional:
 8.  
 9. --, @capture_instance       = 'capture_instance'
10. --, @supports_net_changes   = supports_net_changes
11. --, @index_name             = 'index_name'
12. --, @captured_column_list   = 'captured_column_list'
13. --, @filegroup_name         = 'filegroup_name'
14. --, @allow_partition_switch = 'allow_partition_switch'
15. ;
```

Para visualizar a configuração de CDC para suas tabelas, execute [sys.sp\$1cdc\$1help\$1change\$1data\$1capture](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-help-change-data-capture-transact-sql).

```
1. --View CDC configuration
2. exec sys.sp_cdc_help_change_data_capture 
3. 
4. --The following parameters are optional and must be used together.
5. --  'schema_name', 'table_name'
6. ;
```

Para obter mais informações sobre tabelas, funções e procedimentos armazenados de CDC na documentação do SQL Server, consulte o seguinte:
+ [Procedimentos armazenados de captura de dados de alteração (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/change-data-capture-stored-procedures-transact-sql)
+ [Change data capture functions (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-data-capture-functions-transact-sql)
+ [tabelas Change Data Capture (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/change-data-capture-tables-transact-sql)

## Trabalhos de captura de dados de alteração
<a name="Appendix.SQLServer.CommonDBATasks.CDC.jobs"></a>

Quando você habilita a CDC, o SQL Server cria os trabalhos de CDC. Os proprietários de bancos de dados (`db_owner`) podem visualizar, criar, modificar e excluir trabalhos de CDC. Contudo, os trabalhos são de propriedade da conta do sistema do RDS. Portanto, os trabalhos não estão visíveis em visualizações, procedimentos nativos ou no SQL Server Management Studio.

Para controlar o comportamento de CDC em um banco de dados, use procedimentos nativos do SQL Server, como [sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql) e [sp\$1cdc\$1start\$1job ](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-start-job-transact-sql). Para alterar os parâmetros de trabalhos de CDC, como `maxtrans` e `maxscans`, use [sp\$1cdc\$1change\$1job.](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

Para obter mais informações sobre os trabalhos de CDC, você pode consultar as seguintes visualizações de gerenciamento dinâmico: 
+ sys.dm\$1cdc\$1errors
+ sys.dm\$1cdc\$1log\$1scan\$1sessions
+ sysjobs
+ sysjobhistory

## Change Data Capture para instâncias multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ"></a>

Se você usar a CDC em uma instância multi-AZ, verifique se a configuração do trabalho de CDC do espelho corresponde a do principal. Os trabalhos de CDC são mapeados para o `database_id`. Se os IDs de bancos de dados no secundário forem diferentes do principal, os trabalhos não serão associados ao banco de dados correto. Para tentar evitar erros após um failover, o RDS descarta e recria os trabalhos no novo principal. Os trabalhos recriados usam os parâmetros que o principal registrou antes do failover.

Embora esse processo seja executado rapidamente, ainda é possível que os trabalhos de CDC possam ser executados antes que o RDS possa corrigi-los. Estas são três maneiras de forçar os parâmetros para que sejam consistentes entre as réplicas primária e secundária:
+ Use os mesmos parâmetros de trabalho para todos os bancos de dados que têm a CDC habilitada. 
+ Antes de alterar a configuração do trabalho de CDC, converta a instância multi-AZ para single-AZ.
+ Transfira os parâmetros manualmente sempre que alterá-los no principal.

Para visualizar e definir os parâmetros de CDC usados para recriar os trabalhos de CDC após um failover, use `rds_show_configuration` e `rds_set_configuration`.

O exemplo a seguir retorna o valor definido para `cdc_capture_maxtrans`. Para qualquer parâmetro definido como `RDS_DEFAULT`, o RDS configura o valor automaticamente.

```
-- Show configuration for each parameter on either primary and secondary replicas. 
exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';
```

Para definir a configuração na secundária, execute `rdsadmin.dbo.rds_set_configuration`. Esse procedimento define os valores dos parâmetros para todos os bancos de dados no servidor secundário. Essas configurações são usadas somente após um failover. Os exemplo a seguir define o `maxtrans` de todos os trabalhos de captura de CDC como *1000*:

```
--To set values on secondary. These are used after failover.
exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans', 1000;
```

Para definir os parâmetros de trabalhos de CDC no principal, use [sys.sp\$1cdc\$1change\$1job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

# Usar o agente do SQL Server para o Amazon RDS
<a name="Appendix.SQLServer.CommonDBATasks.Agent"></a>

Com o Amazon RDS, você pode usar o SQL Server Agent em uma instância de banco de dados que executa o Microsoft SQL Server Enterprise Edition, Standard Edition ou Web Edition. SQL Server Agent é um serviço do Microsoft Windows que executa tarefas administrativas programadas, chamadas de trabalhos. É possível usar SQL Server Agent para executar trabalhos T-SQL para recompilar índices, executar verificações de corrupção e agregar dados em uma instância de banco de dados SQL Server.

Ao criar uma instância de banco de dados do SQL Server, o nome de usuário principal é registrado na função `SQLAgentUserRole`.

SQL Server Agent pode executar um trabalho agendado em resposta a um evento específico ou sob demanda. Para ter mais informações, consulte a página [SQL Server Agent](http://msdn.microsoft.com/en-us/library/ms189237) na documentação do SQL Server.

**nota**  
Evite programar trabalhos para execução durante as janelas de manutenção e backup da sua instância de banco de dados. Os processos de manutenção e backup que são iniciados pela AWS podem interromper um trabalho ou fazer com que ele seja cancelado.  
Em implantações multi-AZ, os trabalhos do SQL Server Agent são replicados do host primário para o host secundário quando o recurso de replicação de trabalhos é ativado. Para obter mais informações, consulte [Ativar a replicação de trabalhos do SQL Server Agent](#SQLServerAgent.Replicate).  
As implantações multi-AZ têm um limite de cem trabalhos do SQL Server Agent. Se um limite mais alto for necessário, solicite um aumento de cota entrando em contato com o Suporte. Abra a página do [AWS Support Center](https://console.aws.amazon.com/support/home#/), faça login, se necessário, e escolha **Create case** (Criar caso). Escolha **Service limit increase** (Aumento de limite do serviço). Preencha e envie o formulário.

Para visualizar o histórico de um trabalho específico do SQL Server Agent no SQL Server Management Studio (SSMS), abra o Object Explorer, clique com o botão direito no trabalho e, em seguida, escolha **View History (Visualizar histórico)**.

Como o SQL Server Agent está sendo executado em um host gerenciado em uma instância de banco de dados, algumas ações não são aceitas:
+ Não é possível executar trabalhos de replicação e de scripts da linha de comando usando o ActiveX, o shell de comando do Windows ou o Windows PowerShell.
+ Não é possível iniciar, interromper ou reiniciar manualmente o SQL Server Agent.
+ As notificações de e-mail por meio do SQL Server Agent não estão disponíveis a partir de uma instância de banco de dados.
+ Alertas e operadores do SQL Server Agent não são aceitos.
+ O uso do SQL Server Agent para criar backups não é aceito. Use o Amazon RDS para fazer backup de sua instância de banco de dados.
+ Atualmente, o RDS para SQL Server não comporta o uso de tokens do SQL Server Agent.

## Ativar a replicação de trabalhos do SQL Server Agent
<a name="SQLServerAgent.Replicate"></a>

Você pode ativar a replicação de trabalhos do SQL Server Agent usando o seguinte procedimento armazenado:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';
```

É possível executar o procedimento armazenado em todas as versões do SQL Server compatíveis com o Amazon RDS para SQL Server. Os trabalhos nas seguintes categorias são replicados:
+ [Sem categoria (local)]
+ [Sem categoria (vários servidores)]
+ [Sem categoria]
+ Coletor de dados
+ Database Engine Tuning Advisor
+ Manutenção do banco de dados
+ Texto completo

Somente trabalhos que usam etapas de trabalho T-SQL são replicados. Trabalhos com tipos de etapas, como o SQL Server Integration Services (SSIS), o SQL Server Reporting Services (SSRS), a Replicação e o PowerShell, não são replicados. Os trabalhos que usam o Database Mail e objetos no nível do servidor não são replicados.

**Importante**  
O host principal é a fonte da verdade para replicação. Antes de ativar a replicação do trabalho, verifique se os trabalhos do SQL Server Agent estão no host primário. Se você não fizer isso, poderá ocorrer a exclusão de seus trabalhos do SQL Server Agent se você ativar o recurso quando os trabalhos mais recentes estiverem no host secundário.

Você pode usar a função a seguir para confirmar se a replicação está ativada.

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

 A consulta T-SQL retornará o seguinte se os trabalhos do SQL Server Agent estiverem sendo replicados. Se eles não estiverem sendo replicados, não retornará nada para`object_class`.

![\[Os trabalhos do SQL Server Agent estão sendo replicados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLAgentJob.png)


Você pode usar a função a seguir para descobrir a última vez que os objetos foram sincronizados no horário UTC.

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Por exemplo, suponha que você modifique um trabalho do SQL Server Agent às 01:00. Você espera que o tempo de sincronização mais recente seja após a 01:00, indicando que a sincronização ocorreu.

Após a sincronização, espera-se que os valores retornados para `date_created` e `date_modified` no nó secundário coincidam.

![\[A última vez que os objetos do servidor foram sincronizados foi às 01:21:23.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLAgentJob_last_sync_time.png)


Se você também estiver usando a replicação `tempdb`, poderá habilitar a replicação tanto para os trabalhos do SQL Agent quanto para a configuração `tempdb` fornecendo-os no parâmetro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Para ter mais informações sobre a replicação `tempdb`, consulte [Configuração TempDB para implantações multi-AZ](SQLServer.TempDB.MAZ.md).

# Perfis do SQL Server Agent
<a name="SQLServerAgent.AgentRoles"></a>

O RDS para SQL Server oferece suporte aos seguintes perfis do SQL Server Agent com diferentes níveis de permissões para gerenciar trabalhos:
+ **SQLAgentUserRole**

  Permissões
  + Criar e gerenciar seus próprios trabalhos, agendamentos e operadores
  + Visualizar as propriedades de seus próprios trabalhos e agendamentos
  + Não é possível visualizar ou gerenciar trabalhos criados por outros usuários

  Essa função é adequada para usuários que precisam criar e gerenciar seus próprios trabalhos, mas não requerem acesso aos trabalhos criados por outros usuários.
+ **SQLAgentReaderRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole
  + Visualizar uma lista de todos os trabalhos e agendamentos, incluindo aqueles criados por outros
  + Visualizar as propriedades de todos os trabalhos
  + Veja o histórico de trabalhos

  Essa função é adequada para usuários que precisam monitorar o status de todos os trabalhos, mas não precisam gerenciá-los.
+ **SQLAgentOperatorRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole e SQLAgentReaderRole
  + Executar, interromper ou iniciar trabalhos
  + Gerenciar o histórico de trabalhos
  + Ativar/desativar trabalhos e agendamentos
  + Visualizar operadores e proxies

  Esse perfil fornece as permissões mais abrangentes e é adequado para usuários que precisam ter controle total sobre todos os trabalhos.

Use o comando a seguir para atribuir as funções ao seu login do SQL Server:

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## Gerenciamento do SQLAgentOperatorRole no RDS para SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Para visualizar os trabalhos atuais, você deve adicionar o SQLAgentOperatorRole ao seu login do SQL Server e removê-lo antes de se desconectar do banco de dados.

Para visualizar a árvore do SQL Server Agent no SQL Server Management Studio, siga estas instruções:

**Visualizar o SQL Server Agent no SQL Server Management Studio (SSMS)**

1. Usando as credenciais mestras do RDS, faça login na instância do SQL Server do RDS e conceda ao usuário desejado o SQLAgentUserRole.

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   Esses comandos criam o usuário no banco de dados `msdb`, caso ele não exista. Ele também adiciona o usuário ao SQLAgentUserRole, para que a árvore do SQL Server Agent no SSMS possa ser visualizada. Por fim, ele concede permissões de alteração no SQLAgentOperatorRole ao usuário. Isso permite que o usuário adicione/remova a si mesmo dessa função. 

1. Para se adicionar à função mencionada acima, conecte-se à instância do SQL Server do RDS com o usuário que precisa ver os trabalhos e execute o script a seguir.

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   Depois disso, clique com o botão direito na pasta **Jobs** (Trabalhos) e escolha **Refresh** (Atualizar).

1. Quando você executa essa ação, a guia **Jobs** (Trabalhos) exibe um botão **\$1** (mais). Clique para expandir a lista de Jobs do SQL Server Agent.

1. 
**Importante**  
Antes de se desconectar da instância do SQL Server do RDS, você precisa se remover da SQLAgentOperatorRole.

   Para remover seu login do SQLAgentOperatorRole, execute a seguinte consulta antes de desconectar ou fechar o Management Studio:

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

Para ter mais informações, consulte [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

# Adicionar um usuário à função SQLAgentUser
<a name="SQLServerAgent.AddUser"></a>

Para permitir que um usuário ou login adicional use o SQL Server Agent, faça login com o usuário principal e realize as seguintes etapas:

1. Crie outro login no nível do servidor usando o comando `CREATE LOGIN`.

1. Crie um usuário no `msdb` usando o comando `CREATE USER` e, então, vincule esse usuário ao login criado na etapa anterior.

1. Adicione o usuário ao `SQLAgentUserRole` usando o procedimento armazenado pelo sistema `sp_addrolemember`.

Por exemplo, digamos que o nome de usuário principal seja **admin** e que você deseja conceder acesso ao SQL Server Agent para um usuário chamado **theirname** com uma senha **theirpassword**. Nesse caso, é possível ignorar o procedimento a seguir.

**Para adicionar um usuário à função SQLAgentUser**

1. Faça login como usuário mestre.

1. Execute os seguintes comandos:

   ```
   --Initially set context to master database
   USE [master];
   GO
   --Create a server-level login named theirname with password theirpassword
   CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
   GO
   --Set context to msdb database
   USE [msdb];
   GO
   --Create a database user named theirname and link it to server-level login theirname
   CREATE USER [theirname] FOR LOGIN [theirname];
   GO
   --Added database user theirname in msdb to SQLAgentUserRole in msdb
   EXEC sp_addrolemember [SQLAgentUserRole], [theirname];
   ```

# Excluir um trabalho do SQL Server Agent
<a name="SQLServerAgent.DeleteJob"></a>

Você usa o procedimento armazenado `sp_delete_job` para excluir trabalhos do SQL Server Agent em Amazon RDS para Microsoft SQL Server.

Você não pode usar SSMS para excluir trabalhos do SQL Server Agent. Quando você tenta fazer isso, recebe uma mensagem de erro semelhante à seguinte:

```
The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.
```

Como um serviço gerenciado, o RDS é restrito na execução de procedimentos que acessam o Registro do Windows. Quando você usa o SSMS, ele tenta executar um processo (`xp_regread`) para o qual o RDS não está autorizado.

**nota**  
No RDS para SQL Server, somente membros da função sysadmin podem atualizar ou excluir trabalhos pertencentes a um login diferente. Para ter mais informações, consulte [ Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

**Para excluir um trabalho do SQL Server Agent**
+ Execute a seguinte instrução T-SQL:

  ```
  EXEC msdb..sp_delete_job @job_name = 'job_name';
  ```

# Trabalhar com logs do Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Logs"></a>

É possível usar o console do Amazon RDS para visualizar, monitorar e baixar os logs do SQL Server Agent e os logs de erros do Microsoft SQL Server e os logs do SQL Server Reporting Services (SSRS)

## Monitorar arquivos de log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Watch"></a>

Ao visualizar um log no console do Amazon RDS, você pode ver o conteúdo conforme ele é naquele momento. Ao observar um log no console, ele é aberto em um estado dinâmico para que você possa ver as atualizações feitas nele em tempo quase real.

Só é possível monitorar o log mais recente. Por exemplo, digamos que os seguintes logs mostrem:

![\[Uma imagem da seção Logs do console do Amazon RDS com um log de erros selecionado.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/logs_sqlserver.png)


Somente log/ERRO está sendo ativamente atualizado, por ser o log mais recente. É possível monitorar os demais, mas eles são estáticos e não serão atualizados.

## Guardar arquivos de log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Archive"></a>

O console do Amazon RDS mostra os logs da última semana até o dia atual. É possível baixar os logs e arquivá-los se você deseja mantê-los para fins de referência após esse período. Uma maneira de arquivar logs é carregá-los em uma bucket do Amazon S3. Para obter instruções sobre como configurar um bucket do Amazon S3 e fazer upload de um arquivo, consulte [Noções básicas do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AmazonS3Basics.html) no *Guia de conceitos básicos do Amazon Simple Storage Service* e clique em **Get Started (Conceitos básicos)**. 

## Visualizar logs do agente ou erros
<a name="Appendix.SQLServer.CommonDBATasks.Logs.SP"></a>

Para visualizar os logs de erro e do agente do Microsoft SQL Server, use o procedimento armazenado do Amazon RDS `rds_read_error_log` com os seguintes parâmetros: 
+ **`@index`** – a versão do log para recuperação. O valor padrão é 0, que recupera o log de erro atual. Especifique 1 para recuperar o registro anterior, especifique 2 para recuperar o anterior a ele, e assim por diante. 
+ **`@type`** – o tipo do log para recuperação. Especifique 1 para recuperar um log de erro. Especifique 2 para recuperar um log de agente. 

**Example**  
O exemplo a seguir solicita o log de erro atual.  

```
EXEC rdsadmin.dbo.rds_read_error_log @index = 0, @type = 1;
```

Para obter mais informações sobre erros do SQL Server, consulte [Erros do mecanismo de banco](https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors) de dados na documentação da Microsoft.

# Trabalhar com arquivos de rastreamento e despejo do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles"></a>

Esta seção descreve como trabalhar com arquivos de rastreamento e arquivos de despejo para as instâncias de banco de dados do Amazon RDS que executam o Microsoft SQL Server. 

## Como gerar uma consulta de SQL de rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.TraceSQLQuery"></a>

```
1. declare @rc int 
2. declare @TraceID int 
3. declare @maxfilesize bigint 
4. 
5. set @maxfilesize = 5
6. 
7. exec @rc = sp_trace_create @TraceID output,  0, N'D:\rdsdbdata\log\rdstest', @maxfilesize, NULL
```

## Como visualizar um rastreamento aberto
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewOpenTrace"></a>

```
1. select * from ::fn_trace_getinfo(default)
```

## Como visualizar o conteúdo de um rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewTraceContents"></a>

```
1. select * from ::fn_trace_gettable('D:\rdsdbdata\log\rdstest.trc', default)
```

## Como definir o período de retenção para arquivos de rastreamento e despejo
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles"></a>

Os arquivos de rastreamento e despejo podem acumular e consumir espaço em disco. Por padrão, o Amazon RDS limpa os arquivos de rastreamento e despejo com mais de sete dias. 

Para visualizar o período de retenção atual de arquivos de rastreamento e despejo, use o procedimento `rds_show_configuration`, conforme mostrado no exemplo a seguir. 

```
1. exec rdsadmin..rds_show_configuration;
```

Para modificar o período de retenção dos arquivos de rastreamento, use o procedimento `rds_set_configuration` e defina a `tracefile retention` em minutos. O exemplo a seguir define o período de retenção para arquivos de rastreamento em 24 horas. 

```
1. exec rdsadmin..rds_set_configuration 'tracefile retention', 1440; 
```

Para modificar o período de retenção dos arquivos de despejo, use o procedimento `rds_set_configuration` e defina a `dumpfile retention` em minutos. O exemplo a seguir define o período de retenção para arquivos de despejo em 3 dias. 

```
1. exec rdsadmin..rds_set_configuration 'dumpfile retention', 4320; 
```

Por motivos de segurança, não é possível excluir um arquivo específico de rastreamento ou despejo em uma instância de banco de dados do SQL Server. Para excluir todos os arquivos de rastreamento ou despejo não utilizados, defina o período de retenção dos arquivos como 0. 