Estou em uma situação em que vários "clientes" executarão o mesmo relatório, mas em um banco de dados diferente (com exatamente a mesma estrutura).
O que fiz até agora foi criar uma pasta "Deploy" genérica e implantar todos os relatórios nela. Em seguida, crio pastas "específicas do cliente" e adiciono relatórios vinculados à pasta de origem. No entanto, não consigo fazer com que os relatórios usem fontes de dados diferentes (não há opção de alterá-lo no relatório vinculado). Há alguma maneira de fazer isso?
Como alternativa, como eu poderia lidar com essa situação se não puder usar fontes de dados diferentes? Quero evitar reimplantar o mesmo relatório 10 vezes diferentes em dez lugares diferentes apenas para alterar a fonte de dados.
Se todos os bancos de dados estiverem na mesma instância, você poderá ter um banco de dados central (chamado relatórios, administrador ou o que quiser). Seu relatório pode usar esse banco de dados para sua fonte de dados de relatórios.
Você poderia então ter um procedimento armazenado que fizesse uso de SQL dinâmico e um parâmetro para determinar de qual banco de dados do cliente a consulta deveria ser lida.
Portanto, seu relatório se conecta ao banco de dados de relatórios e executa o procedimento armazenado com o parâmetro 'ClientA', que é passado para o SQL dinâmico e executado.
Se os bancos de dados estiverem em instâncias separadas, você precisará usar servidores vinculados para que esse método funcione, o que pode causar algum problema de segurança, portanto, examinarei isso antes de ativá-lo.
Se eu entendi a situação corretamente, você pode usar uma expressão para criar uma string de conexão dinâmica na fonte de dados para o relatório vinculado. Já fiz isso no passado, onde crio um parâmetro chamado @Server e, em seguida, defino a string de conexão da fonte de dados para a seguinte expressão:
="Data Source=" & Parameters!Server.Value & "; Initial Catalog=DBName"
No meu caso, eu estava preenchendo esse parâmetro com os valores disponíveis que o usuário deveria selecionar para visualizar o relatório. No entanto, passar uma variável de um relatório pai também deve funcionar. Em seguida, você apenas teria que descobrir uma maneira de definir o parâmetro no relatório pai com base nos diferentes usuários.