Um cenário que encontro frequentemente é a existência de várias bases de dados pequenas e a necessidade de fazer join entre elas. Além de ser uma prática pouco recomendada podendo causar má performance não é possível no Azure fazer ligação entre bases de dados diferentes devido ao balanceamento de carga do serviço.
Migrar estas bases de dados directamente para o Azure e depois alterar os procedimentos ou querys é algo que traz duas desvantagens:
Daqui que a solução mais económica e rápida de implementar consiste na criação de schemas com as bases de dados diferentes.
Por exemplo, se temos uma db1 e uma db2, o que fazemos é criar uma base de dados em Azure e criar dois esquemas db1 e db2:
CREATE SCHEMA <sample_schema, sysname, sample_schema> AUTHORIZATION <owner_name, sysname, owner_name>
Ou seja:
CREATE SCHEMA db1 AUTHORIZATION dbo
e
CREATE SCHEMA db2 AUTHORIZATION dbo
Depois migramos as tabelas da base de dados db1 para o esquema db1 e o mesmo para db2.
As alterações no código são simples de efectuar e facilmente automatizaveis: substituimos db1.dbo.tabela1 por db1.tabela1, etc.
Com isto podemos fazer joins entre os vários esquemas e minimizar os custos de deployment no SQL Azure.
Nota: poderemos ter que usar correlation names em algumas queries, mas o esforço é minimo.