Acessar o banco de dados tempdb em instâncias de banco de dados Microsoft SQL Server no Amazon RDS
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 a uma instância de banco de dados executando o mecanismo de banco de dados Microsoft SQL Server.
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
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
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
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
O exemplo a seguir demonstra a configuração do tamanho para 100 GB e o crescimento de arquivos para 10%.
alter database[tempdb] modify file (NAME = N'
templog
', SIZE=100GB
, FILEGROWTH =10%
)
Prevenir problemas de armazenamento
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.
alter database [tempdb] modify file (NAME = N'
templog
', MAXSIZE =2048MB
)
Recolher o banco de dados tempdb
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_shrink_tempdbfile
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 |
---|---|---|---|---|
|
SYSNAME |
— |
obrigatório |
O nome lógico do arquivo para encolher. |
|
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
.
use tempdb; GO select name, * from sys.sysfiles; GO
O exemplo a seguir reduz um arquivo do banco de dados tempdb
chamado test_file
e solicita um novo tamanho de 10
megabytes:
exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'
test_file
', @target_size =10
;
Definir a propriedade SIZE
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 .
O exemplo a seguir demonstra a configuração da propriedade SIZE
para 1024 MB.
alter database [tempdb] modify file (NAME = N'
templog
', SIZE =1024MB
)
Configuração TempDB para implantações multi-AZ
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.
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.
-
Modifique
tempdb
na instância primária original, faça failover manualmente e, por fim, modifiquetempdb
na nova instância primária. Esse método envolve tempo de inatividade.Para obter mais informações, consulte Reinicializar uma instância de banco de dados .