No contexto de administração de bancos de dados, é essencial compreender as permissões e funções que controlam o acesso e a manipulação dos dados. No SQL Server e no Azure SQL Database, a estrutura de permissões oferece um conjunto de ferramentas que permitem ao administrador gerenciar com precisão o acesso aos recursos e objetos de banco de dados. As funções predefinidas e os comandos de permissões ajudam a garantir que as ações dos usuários sejam limitadas conforme necessário, respeitando as necessidades de segurança e controle.
No SQL Server e no SQL Managed Instance, as funções de servidor predefinidas desempenham um papel crucial no controle de acesso a nível de servidor. O sysadmin, por exemplo, concede acesso irrestrito a todas as atividades do servidor. A função serveradmin proporciona acesso às configurações de nível do servidor, enquanto funções como securityadmin permitem que os administradores gerenciem logins de servidor e suas permissões. Além disso, a função processadmin autoriza os membros a finalizar processos do SQL Server, e a setupadmin oferece permissões para adicionar ou remover servidores vinculados. A função dbcreator permite criar ou alterar bancos de dados, e a função bulkadmin concede permissões para executar o comando BULK INSERT.
No Azure SQL Database, a estrutura de funções de servidor é diferente, pois a instância de banco de dados é baseada em servidores lógicos. O dbmanager permite aos usuários criar novos bancos de dados, enquanto o loginmanager concede a capacidade de criar novos logins no nível do servidor. Ao contrário do SQL Server, o Azure SQL Database não utiliza servidores físicos, mas sim servidores lógicos, o que impacta diretamente as funções de servidor.
Porém, tanto no SQL Server quanto no Azure SQL Database, há uma função comum chamada public. Esta função é atribuída automaticamente a todos os logins de servidor e usuários de banco de dados, mas, por padrão, não possui permissões atribuídas. Embora a função public não tenha permissões inicialmente, ela pode ser personalizada pelos administradores, permitindo que permissões adicionais sejam concedidas ou removidas conforme necessário.
Além das funções predefinidas, o SQL Server e o Azure SQL Database fornecem permissões granulares sobre os elementos securáveis. As permissões básicas de manipulação de dados — SELECT, INSERT, UPDATE e DELETE — controlam o acesso e a modificação dos dados nos elementos securáveis. O SELECT permite visualizar dados, o INSERT autoriza a adição de novos dados, o UPDATE habilita a modificação de dados existentes, e o DELETE permite a exclusão de dados.
Existem também permissões mais avançadas que são específicas para plataformas como o Azure SQL Database e o SQL Server, como CONTROL, que concede ao principal todos os direitos sobre o objeto, ou REFERENCES, que permite que o principal veja as chaves estrangeiras de um objeto. Outras permissões incluem TAKE OWNERSHIP, que concede ao principal a capacidade de assumir a propriedade do objeto, e VIEW DEFINITION, que permite visualizar a definição do objeto.
Além disso, para funções e procedimentos, as permissões se estendem a comandos como ALTER (para modificar a definição do objeto), EXECUTE (para executar a função ou procedimento) e CONTROL (para conceder todos os direitos sobre o objeto). A configuração dessas permissões pode ser feita usando T-SQL ou a interface gráfica do SQL Server Management Studio (SSMS).
Ao usar T-SQL, os administradores podem conceder, revogar ou negar permissões aos logins, usuários e funções. A sintaxe básica para configurar permissões é GRANT, REVOKE ou DENY, seguidos da especificação da permissão, o tipo de objeto e o principal. Por exemplo, a seguinte instrução T-SQL concede permissões SELECT e UPDATE a um usuário chamado testuser no banco de dados testdb:
A revogação de permissões, com o comando REVOKE, remove as permissões anteriormente concedidas, mas não impede que outras permissões sejam atribuídas ao usuário. Por outro lado, o comando DENY cria uma proibição explícita, que sempre terá precedência sobre permissões concedidas. Por exemplo, a instrução a seguir proíbe explicitamente o usuário testuser de acessar o banco de dados testdb, independentemente das permissões que ele possa ter herdado de outras fontes:
Além do uso de T-SQL, o SSMS fornece uma interface gráfica que facilita o gerenciamento de permissões. No SSMS, é possível navegar até um objeto de banco de dados, como uma tabela, abrir a caixa de diálogo de Propriedades e configurar as permissões de forma intuitiva, utilizando caixas de seleção para indicar as permissões de GRANT, WITH GRANT (que permite conceder a permissão a outros) ou DENY (que proíbe o uso da permissão). Essa interface torna o processo de configuração de permissões mais acessível para administradores que preferem uma abordagem visual.
Vale ressaltar que, ao configurar permissões, é importante que os administradores compreendam a interação entre permissões concedidas, revogadas e negadas. A política de permissões no SQL Server e no Azure SQL Database é cumulativa, o que significa que, se um usuário receber permissões de várias fontes, suas permissões efetivas serão a combinação dessas fontes. No entanto, as permissões de negação sempre prevalecerão, assegurando que a segurança e o controle sobre os dados sejam mantidos de maneira robusta.
Como Monitorar e Gerenciar Desempenho de Banco de Dados em SQL e Azure SQL
A performance de um banco de dados SQL é um fator crucial para garantir a eficácia e a eficiência das operações em um sistema. Através da comparação dos valores atuais de métricas com a linha de base estabelecida de performance operacional em intervalos regulares, é possível distinguir entre anomalias temporárias e mudanças persistentes nos padrões de carga de trabalho e uso de um sistema. Um dos aspectos mais críticos da performance são as estatísticas de espera (wait statistics), que ocorrem quando o SQL Server é forçado a aguardar a disponibilidade de recursos essenciais, como CPU, memória ou armazenamento, antes de executar uma tarefa.
Essas métricas de espera desempenham um papel importante ao diagnosticar quando o sistema encontra gargalos. O SQL Insights, uma ferramenta de monitoramento remoto, é capaz de coletar informações sobre métricas de todos os recursos de SQL em uma assinatura do Azure, oferecendo uma visão detalhada sobre o comportamento do banco de dados. Por meio dessa ferramenta, os administradores podem obter dados valiosos, como o tempo de espera e os recursos que estão limitando a execução das consultas.
Além disso, o Query Store no SQL Server mantém um registro das consultas executadas, dos planos de consulta considerados e das estatísticas de tempo de execução geradas quando o servidor processa essas consultas. Isso permite que os administradores analisem o histórico de consultas e identifiquem padrões de desempenho ou problemas recorrentes. No entanto, o bloqueio (blocking) é uma outra preocupação importante. Bloqueios ocorrem quando uma transação tenta acessar dados que estão sendo usados por outra transação, criando um gargalo no processo de execução. Quando os bloqueios duram demais, os problemas de performance se intensificam, afetando a operação do banco de dados.
Outro recurso relevante, o Automatic Tuning, utiliza aprendizado de máquina para avaliar o desempenho das consultas e identificar se a criação ou remoção de índices pode melhorar a performance. A criação automática e o descarte de índices podem otimizar o desempenho do banco sem a necessidade de intervenção manual. Isso é especialmente relevante para grandes bases de dados, onde a fragmentação pode ocorrer quando as páginas de dados precisam ser divididas para acomodar novas linhas, o que prejudica a performance. Assim, ao monitorar e realizar ajustes regulares, como a reorganização ou reconstrução de índices, é possível minimizar esses impactos.
Para garantir a integridade dos dados e a consistência das informações, é fundamental realizar verificações regulares de integridade. O comando DBCC CHECKDB no SQL Server, por exemplo, permite detectar e corrigir inconsistências dentro do banco de dados, garantindo que a estrutura e os dados estejam íntegros.
Considerando esses pontos, Alice, uma administradora que implementou bancos de dados SQL na nuvem pela primeira vez com o Azure SQL Database, pode usar ferramentas específicas para monitorar o desempenho de suas instâncias. O SQL Insights, que fornece um monitoramento detalhado de métricas de performance, foi uma ferramenta importante no passado, mas foi descontinuada em dezembro de 2024. Nesse caso, Alice pode recorrer a outras opções, como o "Database Watcher" no portal Azure, que permite a criação de watchers configuráveis para monitoramento em tempo real. O uso do monitor de desempenho do Windows não é possível no Azure SQL Database, pois o acesso direto ao sistema operacional não está disponível.
Além disso, em instâncias de SQL Server, o SQL Server Agent permite a automação de tarefas de manutenção, como a execução de backups e atualizações, além de poder agendar a execução de tarefas intensivas em recursos, como a manutenção de índices, em horários que não impactem o uso do sistema. Embora o SQL Server Agent esteja disponível apenas em SQL Server on-premises ou em instâncias gerenciadas do Azure, ele é uma ferramenta essencial para a automação de operações em servidores que utilizam o SQL Server.
No contexto do Azure SQL Database, embora não seja possível utilizar o SQL Server Agent diretamente, o Azure SQL Managed Instance oferece essa funcionalidade. Ao usar essa ferramenta, os administradores podem configurar tarefas como backups automáticos e atualizações, além de gerenciar alertas e notificações relacionadas à execução de jobs. Por exemplo, ao configurar um perfil de email do Database Mail, é possível definir alertas para quando um job falha ou tem sucesso, permitindo um controle mais ágil sobre a administração do banco de dados.
Além disso, é importante que os administradores mantenham uma visão holística das operações, ajustando os processos e configurando sistemas de alerta que sinalizem de forma eficiente quando há falhas ou necessidades de intervenção. A monitorização não é apenas sobre a detecção de problemas, mas também sobre a prevenção de possíveis falhas antes que elas afetem significativamente o desempenho ou a integridade do sistema.
Como Notificações e Alertas no SQL Server Facilitam a Administração de Jobs
No SQL Server, o gerenciamento de tarefas agendadas é essencial para garantir o bom funcionamento do sistema. Uma parte importante desse gerenciamento é o uso de notificações e alertas, que permitem aos administradores monitorar a execução dos jobs e resolver problemas rapidamente. Essas ferramentas, apesar de semelhantes em muitos aspectos, têm finalidades e comportamentos distintos.
As notificações são mensagens enviadas aos operadores quando um job do SQL Server Agent termina sua execução. Cada job tem uma página de Notificações em suas propriedades, onde os administradores podem configurar o tipo de notificação desejada. As opções incluem e-mails, páginas ou entradas no log de eventos do Windows. As notificações podem ser configuradas para diferentes cenários: quando o job é concluído com sucesso, quando falha ou quando é simplesmente completado. Embora seja possível receber notificações sobre todos os três estados, muitos administradores optam por receber apenas notificações de falha, a fim de reduzir o tráfego de e-mails desnecessários.
Por outro lado, os alertas do SQL Server Agent são mensagens enviadas para operadores específicos, mas ao contrário das notificações, não estão vinculados a jobs específicos. Os alertas são configurados para notificar operadores sobre condições específicas do sistema, como eventos do SQL Server, condições de desempenho ou eventos do WMI. O agente monitora os logs de erro do servidor e gera alertas quando eventos com números de erro ou níveis de severidade específicos são registrados. Da mesma forma, é possível monitorar condições de desempenho, como o uso de CPU ou memória, e gerar alertas caso esses valores excedam limites predeterminados. Os alertas também podem ser baseados em consultas de desempenho WMI, o que amplia ainda mais as possibilidades de monitoramento.
Quando um alerta é acionado, ele pode notificar vários operadores simultaneamente ou até mesmo executar um job específico para resolver a condição que causou o alerta. Isso torna os alertas uma ferramenta valiosa para a automação de resposta a problemas.
No entanto, apesar da utilidade das notificações e alertas, a configuração e o monitoramento desses mecanismos exigem um conhecimento detalhado sobre como os jobs do SQL Server Agent são executados e como podem ser ajustados para resolver falhas. A primeira ação a ser tomada ao tentar solucionar problemas com jobs agendados é verificar se o serviço do SQL Server Agent está em execução. Para isso, os administradores podem acessar o SQL Server Configuration Manager, onde é possível visualizar o estado atual do serviço. Caso o serviço não esteja ativo, ele pode ser iniciado, parado ou reiniciado diretamente da interface.
Se o job não for executado corretamente, é crucial investigar os detalhes do próprio job, começando pelas configurações de conta e senha do agente. Cada job é composto por uma série de etapas, e cada uma delas pode ser configurada individualmente. Na página de Propriedades de cada job, é possível revisar cada etapa, especificando o que deve ocorrer caso uma etapa falhe ou tenha sucesso. O administrador pode, por exemplo, configurar uma etapa para continuar com a execução do job, mesmo que não tenha sido bem-sucedida, ou até mesmo determinar que a falha de uma etapa não interrompa o andamento de outras tarefas.
A monitorização contínua da execução de jobs pode ser feita por meio do Job Activity Monitor no SSMS (SQL Server Management Studio), que oferece uma visão geral do status atual de cada job. Este monitor fornece informações cruciais sobre o andamento do job, incluindo se ele foi bem-sucedido ou se falhou em sua última execução. Caso o administrador precise de informações mais detalhadas, é possível acessar o histórico do job, que contém registros de todas as execuções e dos resultados de cada etapa.
Além disso, a configuração correta das etapas de um job pode ser feita na página de Propriedades de Etapas, onde o administrador pode configurar regras avançadas, como o número de tentativas de reexecução de uma etapa e o comportamento em caso de falha. Esses ajustes são fundamentais para garantir que os jobs sejam executados com eficácia e que os problemas sejam tratados de maneira eficiente, sem sobrecarregar o administrador com mensagens desnecessárias.
Importante compreender que, para a administração eficaz do SQL Server, os administradores devem ter não apenas as ferramentas de monitoramento e alerta, mas também uma compreensão sólida de como cada componente do sistema interage. A configuração de jobs e alertas não é um processo isolado, mas sim parte de uma estratégia maior de automação e monitoramento. A falha de um job pode ser indicativa de problemas mais profundos no sistema, como falhas de configuração, questões de desempenho ou problemas de rede. Portanto, a capacidade de diagnosticar e reagir de maneira eficaz a essas falhas é essencial para a manutenção de um ambiente SQL Server saudável.
Como Criar e Gerenciar Tarefas de Banco de Dados no Azure
A automação de tarefas em bancos de dados, como a criação e o gerenciamento de servidores SQL, é essencial para otimizar os processos e reduzir a carga de trabalho manual dos administradores de TI. No contexto do Azure, isso pode ser feito de diferentes maneiras, seja por meio do uso de cmdlets do PowerShell, scripts em CLI ou ferramentas específicas como o Azure SQL Managed Instance e o SQL Server em máquinas virtuais. Cada abordagem tem suas características, vantagens e desafios.
Ao utilizar o módulo Az.Sql, que contém cmdlets específicos para SQL, é possível interagir com servidores SQL de forma eficiente, utilizando a sintaxe padrão de verbo-nome do PowerShell. Por exemplo, para criar um novo servidor SQL no Azure, um administrador pode utilizar o seguinte comando: New-AzSqlServer -ResourceGroupName "ResourceGroup1" -Location "East US" -ServerName "sqlserver1" -ServerVersion "12.0" -SqlAdministratorCredentials $adminCred. Esse comando permite criar o servidor, configurando sua localização, versão e credenciais do administrador SQL.
Contudo, um desafio importante ao usar PowerShell ou CLI para automatizar a criação de servidores e recursos no Azure é a necessidade de garantir que os comandos sejam executados na ordem correta. Diferente de templates ARM ou arquivos Bicep, que possuem uma estrutura declarativa e sabem como gerenciar as dependências entre os componentes, os scripts PowerShell e CLI não mantêm essa informação, o que pode resultar em falhas na execução, caso os recursos não sejam alocados na ordem necessária. Este tipo de script, portanto, exige um maior esforço de teste e depuração, sem oferecer vantagens claras em relação a outros modelos de automação, como os mencionados templates ARM.
Além disso, quando a implantação de um recurso falha, um código de erro é gerado, permitindo ao administrador diagnosticar o problema. Os erros de implantação podem ser classificados em três tipos principais: erros de validação, erros de pré-vôo e erros de implantação. Os erros de validação ocorrem antes da execução do script, quando ferramentas como o Visual Studio Code detectam problemas de sintaxe no script de implantação. Já os erros de pré-vôo surgem quando o script é executado, mas um problema, como um valor incorreto de parâmetro, impede a execução completa. Por fim, os erros de implantação acontecem quando o script já foi validado, mas ocorre uma falha durante o processo real de implantação, que pode ser identificada através dos logs de atividade do grupo de recursos.
Outro aspecto importante da administração de bancos de dados no Azure é a criação e o gerenciamento de tarefas automatizadas, especialmente em Azure SQL Database. Diferente das instalações do SQL Server no Azure VM ou do Azure SQL Managed Instance, o Azure SQL Database não oferece o SQL Server Agent, que é uma ferramenta tradicional para agendar e monitorar jobs em bancos de dados SQL. No entanto, existem alternativas para esse tipo de automação, como o uso de jobs elásticos e o Azure Automation.
Os jobs elásticos no Azure SQL Database são scripts T-SQL que os administradores podem agendar para serem executados em um ou mais bancos de dados do Azure. Eles permitem a realização de tarefas regulares, como manutenção de banco de dados, execução de consultas e agregação de dados. A criação de um job elástico envolve componentes essenciais como o agente de job elástico, que gerencia a execução, o banco de dados de job, onde os scripts e metadados são armazenados, e o grupo-alvo, que é um conjunto de bancos de dados e servidores aos quais os jobs serão aplicados.
Para configurar um job elástico no PowerShell, os administradores utilizam cmdlets específicos como o New-AzSqlElasticJobAgent para criar o agente de job, e New-AzSqlElasticJobTargetGroup para definir os grupos-alvo. A execução do job é feita com o cmdlet Start-AzSqlElasticJob, proporcionando uma maneira prática de automatizar a execução de tarefas em grande escala.
Além dos jobs elásticos, o Azure Automation também é uma ferramenta poderosa para a automação de tarefas de banco de dados. O Azure Automation permite que os administradores automatizem a execução de tarefas periódicas, como manutenções de servidores e atualizações. A principal vantagem do Azure Automation é a possibilidade de criar runbooks (scripts automatizados) que podem ser executados com PowerShell ou Python. Para utilizar o Azure Automation, é necessário criar uma conta de automação, adicionar as credenciais de acesso aos recursos do SQL e importar os módulos necessários, como o módulo Az.Sql, para executar os cmdlets necessários nos runbooks.
Com a infraestrutura de automação configurada, os administradores podem criar runbooks para tarefas específicas, como a atualização de bancos de dados ou a execução de consultas de manutenção. Além disso, o Azure Automation permite o agendamento das execuções, garantindo que as tarefas sejam realizadas de forma regular e sem a intervenção manual constante.
Importante é entender que, embora ferramentas como o Azure SQL Database e o Azure SQL Managed Instance ofereçam muitas funcionalidades para automação, o gerenciamento e a manutenção contínuos de um banco de dados no Azure exigem uma análise constante dos processos e o monitoramento de eventuais falhas. A combinação de jobs elásticos com o Azure Automation oferece uma solução robusta para manter a eficiência e a performance dos bancos de dados na nuvem.
Como Implementar Soluções de Alta Disponibilidade e Recuperação de Desastres no Azure
No contexto da gestão de infraestruturas de TI, a Alta Disponibilidade (HA) e a Recuperação de Desastres (DR) são dois componentes cruciais para garantir a continuidade dos negócios. Essas soluções permitem que empresas mantenham operações ininterruptas e recuperem rapidamente seus sistemas após falhas. Quando se trata de ambientes de banco de dados, como o SQL Server, a configuração adequada de uma arquitetura de alta disponibilidade pode ser a diferença entre uma falha catastrófica e uma transição suave para um ambiente operacional redundante.
Uma das abordagens mais utilizadas para garantir alta disponibilidade em ambientes de banco de dados é a implementação de uma Instância de Cluster de Failover (FCI, na sigla em inglês). Embora seja possível criar uma FCI usando servidores físicos locais, uma opção cada vez mais popular é utilizar máquinas virtuais (VMs) na plataforma Azure. O Azure oferece diversas opções de armazenamento compartilhado, necessárias para a implementação de FCIs na nuvem, e cada uma delas tem características que afetam a configuração e o desempenho do cluster.
Ao implementar uma FCI, especialmente em um ambiente baseado em VMs no Azure, é importante compreender as exigências de armazenamento. Para uma FCI tradicional em servidores locais, a instalação de uma rede de área de armazenamento (SAN) é essencial para permitir que todos os nós do cluster acessem o mesmo armazenamento compartilhado. No entanto, o Azure oferece suas próprias opções de armazenamento compartilhado que podem ser configuradas para atender a esses requisitos de forma eficaz. As opções incluem discos compartilhados do Azure, que permitem que várias VMs no cluster acessem o mesmo disco, e as Premium SSDs, recomendadas pela Microsoft para garantir o melhor desempenho, especialmente para bancos de dados SQL Server.
Outro serviço relevante do Azure é o Azure Elastic SAN, uma solução baseada em iSCSI para block storage, ideal para FCIs que utilizam versões mais recentes do SQL Server e Windows Server. Para FCIs baseadas em VMs no Azure, a configuração do witness de quorum também se adapta à arquitetura em nuvem. Ao contrário dos FCIs locais, que geralmente utilizam witness de disco, as opções na nuvem incluem o Cloud Witness, que oferece uma solução flexível e resiliente para ambientes distribuídos, e o File Share Witness, adequado para cenários em que outras opções não são viáveis.
No contexto da recuperação de dados e manutenção de alta disponibilidade, o Log Shipping também se destaca como uma solução importante. Esse processo envolve o backup dos logs de transações de um banco de dados principal, sua cópia para servidores secundários e a restauração desses logs em bancos de dados secundários. Embora o Log Shipping não ofereça failover automático, ele permite uma recuperação rápida e eficiente, dependendo das configurações de backup e sincronização dos logs. Ao configurar o Log Shipping, é fundamental que o administrador defina claramente o armazenamento compartilhado para os backups e configure corretamente os servidores e bancos de dados secundários. A utilização do SSMS (SQL Server Management Studio) torna esse processo mais acessível e organizado, facilitando a visualização e gestão das configurações.
A monitoração de uma solução HA/DR é outro aspecto fundamental, já que essas tecnologias funcionam como sistemas de respaldo que precisam ser acompanhados para garantir seu bom funcionamento. Ferramentas como o Performance Monitor no Windows permitem que os administradores monitorem não apenas o desempenho dos recursos de hardware das VMs, mas também a performance do SQL Server e de soluções de clustering. Mesmo que os trabalhos de backup sejam realizados corretamente, a realização de testes de restauração é essencial para confirmar a integridade dos dados. Esse monitoramento constante é o que assegura que a solução HA/DR não só esteja configurada corretamente, mas que esteja pronta para ser acionada no momento necessário.
Quando uma falha ocorre, a habilidade de diagnosticar e corrigir problemas se torna crucial. Administradores de sistemas devem estar preparados para lidar com uma variedade de situações, desde falhas de nó no cluster até questões de rede que podem interferir no failover. Problemas como perda de pacotes, alta taxa de retransmissão de pacotes ou até falhas nas configurações de quorum podem interromper o funcionamento da solução HA/DR. Utilizar ferramentas como o Service Health do Azure para monitorar o estado de saúde dos serviços também é uma prática recomendada para diagnosticar falhas e garantir que os sistemas estejam funcionando como esperado.
Além disso, a compreensão dos conceitos de Recovery Time Objective (RTO) e Recovery Point Objective (RPO) é fundamental para qualquer solução de HA/DR. O RTO define o tempo máximo em que um serviço pode ficar inativo antes que os negócios sejam severamente impactados, enquanto o RPO especifica a quantidade máxima de dados que podem ser perdidos devido a uma falha. A adoção dessas métricas ajuda a planejar e calibrar as soluções de alta disponibilidade e recuperação, alinhando as necessidades de negócio com as capacidades técnicas disponíveis.
O Azure oferece várias camadas de proteção para garantir alta disponibilidade e recuperação de desastres. As opções incluem o uso de Availability Sets, Availability Zones e Azure Site Recovery, que são projetadas para garantir a resiliência das VMs e seus respectivos serviços. No caso de backups, é possível utilizar tanto o SSMS quanto a interface de criação de VMs do Azure para configurar backups automatizados, simplificando o gerenciamento da infraestrutura e aumentando a confiabilidade da solução.
Para uma gestão eficaz da disponibilidade e recuperação, não basta apenas configurar essas soluções uma vez. É crucial realizar testes regulares, monitorar o desempenho e ajustar as configurações conforme necessário para que, em caso de falha, a transição para uma solução de backup seja rápida e sem impacto nos negócios.
Qual é o Papel dos Raízes e Exponentes Racionais nas Funções Contínuas e Bijeções?
Como as Variáveis de Probabilidade e Possibilidade Impactam a Análise Científica e Social?
Como as Inovações Digitais Estão Transformando a Aviação: O Papel das Tecnologias Preditivas e da Previsão Meteorológica

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский