Eu sei que este é um tipo de pedido estranho. Eu mesmo nunca tive que pensar em um cenário como esse até hoje. Vou direto ao ponto para facilitar a leitura da pergunta. Suspeito que a resposta certa envolverá mais "pensar fora da caixa" do que um recurso ou capacidade oculta que, de alguma forma, não estou ciente.
Aqui está a coisa: eu preciso de um painel do PowerBI para consultar meu SQL Server, mas o painel do PowerBI terá uma string de conexão que consulta um banco de dados (vamos chamar esse banco de dados "DatabaseOne_Report") enquanto o SQL Server hospedará um banco de dados com um nome diferente (digamos "DatabaseOne").
Portanto, quando o painel do PowerBI executa uma consulta a DatabaseOne_Report.dbo.MyTable, quero que o SQL Server forneça dados de DatabaseOne.dbo.Table (observe que o sufixo "_Report" desapareceu do nome do banco de dados). Isso é possível de alguma forma?
Posso antecipar que sua primeira pergunta seria por que estou usando uma string de conexão com o nome de banco de dados errado. A resposta é que esse painel se conecta a diferentes ambientes e esses ambientes hospedam esse banco de dados usando 1 de 2 nomes diferentes por motivos que estão além do escopo do que estou perguntando aqui. A conclusão é que estamos tentando evitar reescrever a cadeia de conexão do painel do PowerBI e esperamos poder usar uma única cadeia de conexão para lidar com os dois nomes de banco de dados possíveis.
Eu li muitas perguntas em diferentes fóruns para lidar com aliases de 2 bancos de dados hospedados em caixas diferentes, mas nunca vi ninguém perguntando 2 bancos de dados hospedados na mesma caixa, mas com potencialmente dois nomes diferentes.
Pensei em criar um "shell" vazio de um banco de dados com o outro nome com nada além de sinônimos, mas isso seria muita configuração... Esperava encontrar algo mais simples.
Obrigado!
Eu vejo duas opções.
SQL Alias conforme mencionado no comentário de McNets. Mas não tenho certeza se funcionará no seu cenário, quando funciona é uma ótima ferramenta.
Use a Replicação SQL para criar uma cópia do banco de dados
DatabaseOne
nomeadoDatabaseOne_Report
no mesmo servidor. Dependendo de algumas variáveis, as duas versões do banco de dados estarão completamente sincronizadas com um pouco de atraso.Veja como ficaria: