Estou incluindo esta resposta em prol de uma nova pergunta que foi marcada como duplicada.
Uma vez, tive que comparar dois bancos de dados de produção e encontrar diferenças de esquema entre eles. Os únicos itens de interesse eram tabelas que foram adicionadas ou eliminadas e colunas que foram adicionadas, removidas ou alteradas. Não tenho mais os scripts SQL que desenvolvi, mas o que se segue é a estratégia geral. E o banco de dados não era o SQL Server, mas acho que a mesma estratégia se aplica.
Primeiro, criei o que pode ser melhor descrito como um metadatabase. As tabelas de usuários desse banco de dados continham descrições de dados copiadas das tabelas de sistema dos bancos de dados de produção. Coisas como nome da tabela, nome da coluna, tipo de dados e precisão. Havia mais um item, Nome do banco de dados, que não existia em nenhum dos bancos de dados de produção.
Em seguida, desenvolvi scripts que acoplavam seleções das tabelas do sistema dos bancos de dados de produção com inserções nas tabelas de usuários do metadatabase.
Por fim, desenvolvi consultas para encontrar tabelas que existiam em um banco de dados, mas não no outro, e colunas de tabelas no banco de dados que estavam em apenas um banco de dados e colunas com definições inconsistentes entre os dois bancos de dados.
Das cerca de 100 tabelas e 600 colunas, encontrei algumas inconsistências e uma coluna que foi definida como um ponto flutuante em um banco de dados e um número inteiro no outro. Esse último acabou sendo uma dádiva de Deus, porque descobriu um problema que atormenta um dos bancos de dados há anos.
O modelo para o metadatabase foi sugerido pelas tabelas do sistema em questão. As consultas não foram difíceis de construir, girando principalmente em torno do grupo e tendo count (nome do banco de dados) = 1.
No seu caso, com 700 bancos de dados de produção, convém automatizar as duas primeiras etapas mais do que eu fiz com apenas dois bancos de dados para comparar. Mas a ideia é semelhante.