Nesta página, descrevemos como executar instruções SQL em bancos de dados em instâncias do Cloud SQL usando a API Data. Com a API Data, você usa a API Cloud SQL Admin e a CLI gcloud para executar instruções SQL em qualquer instância em que você tenha ativado o acesso à API Data.
É possível usar a API Data com instâncias que usam endereços IP públicos, acesso a serviços particulares ou o Private Service Connect. A API Data é compatível com todos os tipos de instruções SQL, incluindo linguagem de manipulação de dados (DML), linguagem de definição de dados (DDL) e linguagem de consulta de dados (DQL). A API Data é boa para executar instruções administrativas pequenas e rápidas, como criar funções ou usuários de banco de dados e fazer pequenas atualizações de esquema.
Antes de começar
Antes de executar instruções SQL em uma instância, siga estas etapas.
Configurar o usuário do banco de dados
A API Data precisa ser autenticada como um usuário do banco de dados para executar instruções SQL. É possível se autenticar como um usuário integrado, um usuário do IAM, uma conta de serviço do IAM ou um grupo do IAM.
Para autenticar usando o IAM, faça o seguinte:
- Configure a instância para a autenticação do banco de dados do IAM.
- Adicione um usuário, conta de serviço ou grupo do IAM à instância.
- Conceda à conta os papéis ou privilégios necessários para executar instruções SQL. É possível atribuir funções de banco de dados ao criar
a conta ou atualizar
a conta. Se você criou papéis de banco de dados personalizados com
privilégios mínimos,
atribua-os à conta. Caso contrário, atribua o papel predefinido
cloudsqlsuperuserà conta, use a API Data para criar novos papéis de banco de dados personalizados com menos privilégios e conceda os novos papéis à conta em vez decloudsqlsuperuser.
Para se autenticar como um usuário integrado usando senha, faça o seguinte:
- Crie uma conta de usuário com uma senha não vazia.
A API Data não pode fazer a autenticação como o usuário
rootpadrão. - Conceda à conta os papéis ou privilégios necessários para executar instruções SQL. É possível atribuir funções de banco de dados ao criar
a conta ou atualizar
a conta. Se você criou papéis de banco de dados personalizados com
privilégios mínimos,
atribua-os à conta. Caso contrário, atribua o papel predefinido
cloudsqlsuperuserà conta, use a API Data para criar novos papéis de banco de dados personalizados com menos privilégios e conceda os novos papéis à conta em vez decloudsqlsuperuser. - Use o Secret Manager para criar um secret regional e armazenar a senha. Por segurança, a API Data solicita o nome do recurso do secret em vez da senha na solicitação de API. O segredo regional precisa ser armazenado na mesma região que a instância do Cloud SQL. Um secret criado usando o endpoint global do Secret Manager não é compatível, mesmo que seja armazenado na mesma região.
- Conceda ao chamador da API Data
roles/secretmanager.secretAccessor. Como prática recomendada, defina condições do IAM para permitir que um usuário acesse um secret específico, mas não outros secrets no projeto.
Permissões ou papéis necessários
As contas de usuário ou de serviço usadas para chamar a API Data precisam ter a permissão
para executar instruções SQL, cloudsql.instances.executesql. A permissão está incluída em um dos seguintes papéis predefinidos:
Cloud SQL Admin(roles/cloudsql.admin)Cloud SQL Instance User(roles/cloudsql.instanceUser)Cloud SQL Studio User(roles/cloudsql.studioUser)
Também é possível definir um papel personalizado do IAM
para a conta de usuário ou serviço que inclui a permissão
cloudsql.instances.executesql. Essa permissão é suportada por papéis
personalizados do IAM.
Ao usar um secret do Secret Manager para autenticar, o usuário ou a conta de serviço também precisa ter a permissão para acessar o secret, secretmanager.versions.access. A permissão está incluída em um dos
seguintes papéis predefinidos:
Secret Manager Secret Accessor(roles/secretmanager.secretAccessor)Secret Manager Admin(roles/secretmanager.admin)
Ativar ou desativar a API Data
Para usar a API Data, é necessário ativá-la em cada instância. É possível desativar a API Data a qualquer momento.
Console
-
No console Google Cloud , acesse a página Instâncias do Cloud SQL.
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- No menu de navegação SQL, selecione Conexões.
- Clique na guia Rede.
- Marque a caixa de seleção Permitir API Data.
- Clique em Salvar.
gcloud
Para ativar o acesso à API Data em uma instância, use o comando gcloud sql instances patch com a flag --data-api-access=ALLOW_DATA_API:
gcloud sql instances patch INSTANCE_NAME --data-api-access=ALLOW_DATA_API
Para desativar o acesso à API Data, use a flag --data-api-access=DISALLOW_DATA_API:
gcloud sql instances patch INSTANCE_NAME --data-api-access=DISALLOW_DATA_API
Substitua INSTANCE_NAME pelo nome da instância em que você quer ativar ou desativar a API Data.
REST
Para ativar o acesso à API Data em uma instância, envie uma solicitação PATCH ao endpoint instances.patch:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
O corpo da solicitação deve conter o campo dataApiAccess definido como ALLOW_DATA_API:
{ "dataApiAccess": "ALLOW_DATA_API" }
Para desativar o acesso à API Data, defina dataApiAccess como DISALLOW_DATA_API.
Executar uma instrução SQL
É possível executar instruções SQL em bancos de dados na instância do Cloud SQL usando a CLI gcloud ou a API REST.
Autenticar usando o IAM
É possível executar instruções SQL usando a autenticação de banco de dados do IAM.
gcloud
Para executar uma instrução SQL em um banco de dados em uma instância usando a CLI gcloud, use o comando gcloud sql instances execute-sql.
gcloud sql instances execute-sql INSTANCE_NAME \ --database=DATABASE_NAME \ --sql=SQL_STATEMENT \ --partial-result-mode=PARTIAL_RESULT_MODE
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância.
- DATABASE_NAME: o nome do banco de dados na instância.
- SQL_STATEMENT: a instrução SQL a ser executada. Se a instrução contiver espaços ou caracteres especiais do shell, ela precisará estar entre aspas.
- PARTIAL_RESULT_MODE: opcional. Controla como responder quando o resultado está incompleto. Pode ser
ALLOW_PARTIAL_RESULT,FAIL_PARTIAL_RESULTouPARTIAL_RESULT_MODE_UNSPECIFIED. Consulte Como modificar o comportamento de truncamento.
Também é possível incluir a flag --project=PROJECT_ID, se necessário.
Terraform
É possível usar a API Data no Terraform para provisionar recursos no banco de dados, como bancos de dados, tabelas, extensões, usuários e concessões de privilégios, sem se conectar manualmente à instância. Para executar um script SQL no Terraform, use o
recurso
google_sql_provision_script do Terraform.
resource "google_sql_database_instance" "instance" { name = "my-instance" database_version = "MYSQL_8_4" settings { tier = "db-perf-optimized-N-2" data_api_access = "ALLOW_DATA_API" # This allows the use of Data API. database_flags { name = "cloudsql_iam_authentication" value = "on" } } } /* * Create a database user for your account and grant roles so it has privilege * to access the database. Set the type toCLOUD_IAM_USERfor huamn * account orCLOUD_IAM_SERVICE_ACCOUNTfor service account. */ resource "google_sql_user" "iam_user" { name = "account-used-to-apply-this-config@example.com" instance = google_sql_database_instance.instance.name type = "CLOUD_IAM_USER" # Roles granted to the user. To follow the principle of least privilege, you # can first use `google_sql_provision_script` to create custom database role(s) # with lesser privileges and then assign them to this user in place of # `cloudsqlsuperuser`. # This field doesn't support MySQL 5.6 and 5.7. database_roles = ["cloudsqlsuperuser"] } resource "google_sql_provision_script" "script" { # You can inline the script or import from a file likescript = file("${path.module}/script.sql")# When modified, the whole script will be executed again. It's recommended to # make the script idempotent with patterns likecreate if not exists ...or #if not exists (select ...) then ... end if. script = "CREATE DATABASE pets;" instance = google_sql_database_instance.instance.name # Some of your queries may require a database. You can create and use a # database in the script or explicitly create and reference a database # likedatabase = google_sql_database.database.name. description = "sql script to create DBs" # The identity account used to apply your Terraform config must exist as an # IAM user or IAM service account in the instance. Terraform connects to the # instance via IAM database authentication to execute the script. depends_on = [google_sql_user.iam_user] }
Aplique as alterações
Para aplicar a configuração do Terraform em um Google Cloud projeto, siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o arquivo é chamado demain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tfrecém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
A exclusão de um recurso google_sql_provision_script não remove os recursos no banco de dados que ele criou. Para excluir, adicione explicitamente instruções no
script, como drop ... if exists, e aplique as mudanças.
REST
Para executar uma instrução SQL em um banco de dados em uma instância usando a API REST, envie uma solicitação POST ao endpoint executeSql:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/executeSql
O corpo da solicitação precisa conter o nome do banco de dados e a instrução SQL:
{ "database": "DATABASE_NAME", "sqlStatement": "SQL_STATEMENT", "partialResultMode": "PARTIAL_RESULT_MODE" "autoIamAuthn": true }
Faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_NAME: o nome da instância.
- DATABASE_NAME: o nome do banco de dados na instância.
- SQL_STATEMENT: a instrução SQL a ser executada.
- PARTIAL_RESULT_MODE: opcional. Controla como a API responde
quando o resultado excede 10 MB. Pode ser
FAIL_PARTIAL_RESULT,ALLOW_PARTIAL_RESULTouPARTIAL_RESULT_MODE_UNSPECIFIED. Consulte Como modificar o comportamento de truncamento.
Autenticar usando senha
É possível executar instruções SQL usando a autenticação de senha integrada quando a senha é armazenada como um secret regional com o Secret Manager na mesma região da instância do Cloud SQL.
gcloud
Para executar uma instrução SQL em um banco de dados em uma instância usando a CLI gcloud, use o comando gcloud sql instances execute-sql.
gcloud sql instances execute-sql INSTANCE_NAME \ --database=DATABASE_NAME \ --sql=SQL_STATEMENT \ --user=USER \ --password-secret-version=PASSWORD_SECRET_VERSION \ --partial-result-mode=PARTIAL_RESULT_MODE
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância.
- DATABASE_NAME: o nome do banco de dados na instância.
- SQL_STATEMENT: a instrução SQL a ser executada. Se a instrução contiver espaços ou caracteres especiais do shell, ela precisará estar entre aspas.
- USER: o usuário do banco de dados a ser autenticado.
Omita o
@e o nome do host. - PASSWORD_SECRET_VERSION: o nome do recurso do secret do Secret Manager que contém a senha do usuário do banco de dados.
O secret precisa ser regional e armazenado na mesma região da instância do Cloud SQL. O formato esperado do nome do recurso é
projects/{project}/locations/{location}/secrets/{secret}/versions/{secret_version}. - PARTIAL_RESULT_MODE: opcional. Controla como responder quando o resultado está incompleto. Pode ser
ALLOW_PARTIAL_RESULT,FAIL_PARTIAL_RESULTouPARTIAL_RESULT_MODE_UNSPECIFIED. Consulte Como modificar o comportamento de truncamento.
Terraform
É possível usar a API Data no Terraform para provisionar recursos no banco de dados, como bancos de dados, tabelas, extensões, usuários e concessões de privilégios, sem se conectar manualmente à instância. Para executar um script SQL no Terraform, use o
recurso
google_sql_provision_script do Terraform.
resource "google_sql_user" "built_in_user" { name = "tf-user" host = "%" # Don't set this field for PostgreSQL and SQL Server. instance = google_sql_database_instance.instance.name password = "changeme" type = "BUILT_IN" } # Create a regional secret. Global secrets are not supported even if # located in one region only. resource "google_secret_manager_regional_secret" "secret" { secret_id = "db-password" # Use the same region as the Cloud SQL instance. location = "us-central1" } resource "google_secret_manager_regional_secret_version" "secret_version" { secret = google_secret_manager_regional_secret.secret.id secret_data = "changeme" } resource "google_sql_provision_script" "script" { # You can inline the script or import from a file likescript = file("${path.module}/script.sql")# When modified, the whole script will be executed again. It's recommended to # make the script idempotent with patterns likecreate if not exists ...or #if not exists (select ...) then ... end if. script = "CREATE TABLE IF NOT EXISTS table1 ( col VARCHAR(16) NOT NULL );" instance = google_sql_database_instance.instance.name database = google_sql_database.database.name description = "sql script to create tables" user = google_sql_user.built_in_user.name # The location should be the same as the Cloud SQL instance's location. password_secret_version = "projects/my-project/locations/us-central1/secrets/db-password/versions/latest" # The built-in database user and password secret version must be created # first. Cloud SQL will retrieve password from Secret Manager # and connect to this user account to execute your script. depends_on = [ google_sql_user.built_in_user, google_secret_manager_regional_secret_version.secret_version ] }
Aplique as alterações
Para aplicar a configuração do Terraform em um Google Cloud projeto, siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o arquivo é chamado demain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tfrecém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
A exclusão de um recurso google_sql_provision_script não remove os recursos no banco de dados que ele criou. Para excluir, adicione explicitamente instruções no
script, como drop ... if exists, e aplique as mudanças.
REST
Para executar uma instrução SQL em um banco de dados em uma instância usando a API REST, envie uma solicitação POST ao endpoint executeSql:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/executeSql
O corpo da solicitação precisa conter o nome do banco de dados e a instrução SQL:
{ "database": "DATABASE_NAME", "sqlStatement": "SQL_STATEMENT", "user": "USER", "passwordSecretVersion": "PASSWORD_SECRET_VERSION", "partialResultMode": "PARTIAL_RESULT_MODE" }
Faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_NAME: o nome da instância.
- DATABASE_NAME: o nome do banco de dados na instância.
- SQL_STATEMENT: a instrução SQL a ser executada.
- USER: o usuário do banco de dados a ser autenticado.
Omita o
@e o nome do host. - PASSWORD_SECRET_VERSION: o nome do recurso do secret do Secret Manager que contém a senha do usuário do banco de dados.
O secret precisa ser regional e armazenado na mesma região da instância do Cloud SQL. O formato esperado do nome do recurso é
projects/{project}/locations/{location}/secrets/{secret}/versions/{secret_version}. - PARTIAL_RESULT_MODE: opcional. Controla como a API responde
quando o resultado excede 10 MB. Pode ser
FAIL_PARTIAL_RESULT,ALLOW_PARTIAL_RESULTouPARTIAL_RESULT_MODE_UNSPECIFIED. Consulte Como modificar o comportamento de truncamento.
Modificar o comportamento de truncamento
É possível controlar como os resultados grandes são processados ao executar SQL incluindo o campo "partialResultMode" na solicitação. Esse campo aceita os seguintes valores:
FAIL_PARTIAL_RESULT: Padrão. Gere um erro se o resultado exceder 10 MB ou se apenas um resultado parcial puder ser recuperado. Não retorne o resultado.ALLOW_PARTIAL_RESULT: retorne um resultado truncado e definapartial_resultcomo verdadeiro se o resultado exceder 10 MB ou se apenas um resultado parcial puder ser recuperado devido a um erro. Não gere um erro.PARTIAL_RESULT_MODE_UNSPECIFIED: modo não especificado, efetivamente o mesmo queFAIL_PARTIAL_RESULT.
Consultas de auditoria
É possível rastrear o nome do aplicativo definindo o campo applicationName na
solicitação. O banco de dados vai rastrear o nome do aplicativo nas estatísticas de sessão, por exemplo, na tabela performance_schema.session_account_connect_attrs.
Use o Query Insights para
acompanhar mais informações sobre suas consultas e analisar problemas de desempenho.
O Query Insights vai mostrar que o IP do cliente das consultas ExecuteSql é localhost porque a conexão do banco de dados é feita de dentro da própria instância do Cloud SQL.
Você também pode usar a auditoria do banco de dados MySQL para registrar consultas por motivos de segurança ou conformidade.
Limitações
- O limite de tamanho para uma resposta é de 10 MB. Resultados que excedem esse tamanho são truncados se
partialResultModeestiver definido comoALLOW_PARTIAL_RESULT. Caso contrário, um erro será gerado. - As solicitações são limitadas a 0,5 MB.
- Só é possível executar instruções SQL para instâncias do Cloud SQL para MySQL em execução.
- O Cloud SQL não é compatível com o uso da API Data com instâncias configuradas para replicação de servidor externo.
- As solicitações que levam mais de 30 segundos são canceladas. Não é possível definir um tempo limite de instrução maior usando
SET SESSION MAX_EXECUTION_TIME. No Cloud SQL para MySQL 5.6 e 5.7, o tempo limite de instruções DDL de longa execução pode causar tabelas ou arquivos órfãos que não podem ser revertidos com segurança. Tenha cuidado com instruções comoALTER TABLEem tabelas grandes. O Cloud SQL limita o número de solicitações
executeSqlsimultâneas por instância para evitar sobrecarga. Se o limite for atingido, as solicitações subsequentes vão falhar e retornar um dos seguintes erros:At most 'x' concurrent queries may be run on this instance. Try again later.Maximum concurrent reads 'x' reached.
O limite (
x) é de 10 consultas por instância.Cada resposta pode conter no máximo 10 mensagens ou avisos do banco de dados.
Se houver um erro de sintaxe ou de execução da instrução, nenhum resultado será retornado.
A API Data não pode autenticar como usuários integrados com senhas vazias.
No Cloud SQL para MySQL, os avisos e alertas estão disponíveis apenas para a última instrução de uma execução com várias instruções.
No Cloud SQL para MySQL, a API Data não pode autenticar usuários com o mesmo nome de um usuário do sistema, como
root.Instruções que consomem muita memória podem causar erros de falta de memória. Para mais informações sobre como evitar esses erros, consulte Práticas recomendadas para gerenciar o uso da memória. Uma instância de banco de dados em execução com alta utilização de memória geralmente causa problemas de desempenho, interrupções ou até mesmo inatividade no banco de dados.
A API Data pode ser bloqueada temporariamente para fins de integridade de dados quando determinadas operações de manutenção estão em andamento na instância. Se isso acontecer, tente de novo mais tarde.
Quando várias consultas são executadas e uma delas falha, o primeiro erro encontrado é retornado. Algumas das instruções do lote antes do erro podem ter sido executadas com sucesso. É possível unir várias consultas em uma instrução
transactionpara evitar esse problema:START TRANSACTION; YOUR_SQL_STATEMENTS COMMIT;Substitua:
- YOUR_SQL_STATEMENTS: as instruções que você quer executar como parte dessa consulta
- O script SQL e a resposta de execução podem transitar por locais intermediários entre o cliente e o local da instância de destino. Por esse motivo, as solicitações vão falhar com o erro "indisponível para instâncias em determinadas pastas de pacotes de controle do Assured Workloads" para alguns projetos do Assured Workloads e para projetos com
constraints/sql.restrictNoncompliantResourceCreationaplicado manualmente.
Resolver problemas
Esta seção contém informações sobre problemas associados ao uso da API Data, além de etapas para solucionar os problemas.
| Problema | Solução de problemas |
|---|---|
The instance doesn't allow using ExecuteSql to access this instance.
You can allow it by patching the instance with {settings: { dataApiAccess:
"ALLOW_DATA_API" }}
|
A API Data fica desativada por padrão. Ative a API Data na instância para resolver o problema. |
Secret cannot be provided when auto_iam_authn is true.
|
Quando você define auto_iam_authn como true, está
fazendo a autenticação no banco de dados usando o IAM.
Esse método de autenticação não exige senha nem secret.
Consulte
Autenticar usando o IAM.
|
ExecuteSql API is not supported for instances in certain
Assured Workloads control packages folders yet.
|
O script SQL e a resposta de execução podem transitar por locais intermediários entre o cliente e o local da instância de destino. Por isso, as solicitações vão falhar para instâncias em determinados projetos do Assured Workloads. Se o projeto não estiver inscrito no Assured Workloads, mas
constraints/sql.restrictNoncompliantResourceCreation for aplicado
manualmente, peça ao administrador da organização para remover
a restrição. O problema será resolvido nas instâncias
recém-criadas.
|
IAM authentication is not enabled for the instance
|
Configure a instância para autenticação do IAM e resolva o problema. |
The database is currently unavailable.
|
A instância pode estar sendo reiniciada, em manutenção ou em um estado não íntegro. Verifique o status da instância e tente de novo mais tarde. |