Exportar um inventário do Access (AccessToSQL)
Caso tenha vários bancos de dados do Access e não tenha certeza de quais migrar para o SQL Server, você poderá exportar um inventário de todos os bancos de dados do Access em um projeto. Em seguida, você pode revisar e consultar os metadados de inventário para determinar quais bancos de dados e objetos dentro desses bancos de dados devem ser migrados. Esse inventário permite que você encontre rapidamente respostas para perguntas como as da lista a seguir:
- Quais são os maiores bancos de dados?
- Quem detém a maioria dos bancos de dados?
- Quais bancos de dados contêm as mesmas tabelas?
- Quais bancos de dados não foram modificados nos últimos seis meses?
- Quais bancos de dados contêm informações privadas?
No final deste artigo há exemplos de consulta que são usados para responder a essas perguntas.
Metadados exportados
O SSMA exporta metadados sobre bancos de dados, tabelas, colunas, índices, chaves estrangeiras, consultas, relatórios, formulários, macros e módulos do Access. Os metadados sobre cada uma dessas categorias de itens são exportados para uma tabela separada. Para obter esquemas dessas tabelas, consulte Esquemas de inventário do Access.
Exportar dados de inventário
Para exportar um inventário do Access, você deve primeiro abrir ou criar um projeto do SSMA e, em seguida, adicionar o banco de dados do Access que deseja analisar. Depois de adicionar bancos de dados a um projeto SSMA, exporte metadados sobre esses bancos de dados para um banco de dados e um esquema especificados do SQL Server. Se necessário, o SSMA cria tabelas para armazenar os metadados. Em seguida, o SSMA adiciona os metadados sobre os bancos de dados do Access ao banco de dados do SQL Server.
Observação
Um banco de dados do Access pode ser dividido em vários arquivos: um banco de dados back-end, que contém tabelas, e bancos de dados front-end, que contêm consultas, formulários, relatórios, macros, módulos e atalhos. Se você quiser migrar um banco de dados dividido para o SQL Server, adicione o banco de dados front-end ao SSMA.
As instruções a seguir descrevem como criar um projeto, adicionar bancos de dados ao projeto, conectar-se ao SQL Server e exportar dados de inventário.
Criar um projeto
Abra o SSMA para Access.
No menu Arquivo, selecione Novo Projeto.
A caixa de diálogo Novo Projeto aparece.
Na caixa Nome, insira um nome para o projeto.
Na caixa de texto Localização, insira ou selecione uma pasta para o projeto.
Na caixa de combinação Migrar para, selecione a versão de destino para a qual você deseja migrar e selecione OK.
Para obter mais informações sobre como criar projetos, confira Criar e gerenciar projetos.
Localizar e adicionar bancos de dados
No menu Arquivo, selecione Localizar bancos de dados.
No Assistente de localização de bancos de dados, insira a unidade, o caminho do arquivo ou o caminho UNC que você deseja pesquisar. Como alternativa, selecione Procurar para selecionar a unidade ou pasta de rede.
Selecione Adicionar para adicionar a localização à caixa de listagem.
Repita as duas etapas anteriores para adicionar localizações de pesquisa adicionais.
Opcionalmente, adicione critérios de pesquisa para refinar a lista de bancos de dados retornados.
Importante
A caixa de texto Todo ou parte do nome do arquivo não é compatível com caracteres curingas.
Selecione Verificar.
A página de verificação é exibida. Ela mostra os bancos de dados que foram encontrados e o progresso da pesquisa. Para interromper a pesquisa, selecione Parar.
Na página Selecionar Arquivos, selecione cada banco de dados que você deseja adicionar ao projeto.
Você pode usar os botões Selecionar Tudo e Limpar Tudo na parte superior da lista para selecionar ou limpar todos os bancos de dados. Você também pode manter pressionada a tecla CTRL para selecionar várias linhas ou manter pressionada a tecla SHIFT para selecionar um intervalo de linhas.
Selecione Avançar.
Na página Verificar, selecione Concluir.
Para obter mais informações sobre como adicionar bancos de dados a projetos, confira Adicionar e remover arquivos de banco de dados do Access.
Conecte-se ao SQL Server
No menu Arquivo, selecione Conectar ao SQL Server.
Na caixa de diálogo de conexão, insira ou selecione o nome da instância do SQL Server.
Se você estiver se conectando à instância padrão no computador local, poderá inserir localhost ou um ponto (.).
Se você estiver se conectando à instância padrão em outro computador, insira o nome do computador.
Se você estiver se conectando a uma instância nomeada, insira o nome do computador, uma barra invertida e o nome da instância. Por exemplo: MyServer\MyInstance.
Na caixa de texto Banco de Dados, insira o nome do banco de dados de destino para metadados exportados.
Se sua instância do SQL Server estiver configurada para aceitar conexões em uma porta não padrão, insira o número da porta usada para conexões do SQL Server na caixa Porta do servidor. Para a instância padrão do SQL Server, o número de porta padrão é 1433. Para instâncias nomeadas, o SSMA tenta obter o número da porta do SQL Server Browser Service.
Na lista suspensa Autenticação, selecione o tipo de autenticação a ser usado para a conexão. Para usar sua conta Windows atual, selecione Autenticação do Windows. Para usar um logon do SQL Server, selecione Autenticação do SQL Server e forneça um nome de usuário e senha.
Para obter mais informações sobre como se conectar ao SQL Server, confira Conectar com o SQL Server (AccessToSQL).
Exportar informações de inventário
No Access Metadata Explorer, expanda Access-metabase.
Marque a caixa de seleção ao lado de Bancos de dados.
Para omitir bancos de dados individuais ou objetos de banco de dados, expanda a pasta Bancos de Dados e desmarque a caixa de seleção ao lado do banco de dados ou objeto de banco de dados.
Clique com o botão direito do mouse em Bancos de dados e selecione Exportar Esquema.
Na caixa de diálogo Selecionar esquema para exportação, selecione o esquema de destino para os metadados exportados e, em seguida, selecione OK.
Cada vez que você exporta metadados, o SSMA acrescenta os dados ao inventário. Os dados existentes no inventário não são atualizados ou excluídos.
Consultar os metadados exportados
Depois de exportar metadados sobre bancos de dados do Access, você pode consultar os metadados. As instruções a seguir descrevem como usar a janela Editor de Consultas no SQL Server Management Studio para executar consultas.
Consultar metadados
No menu Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server 2005 ou Microsoft SQL Server 2008 ou para Microsoft SQL Server 2012 e selecione SQL Server Management Studio.
Na caixa de diálogo Conectar-se ao Servidor, verifique as configurações e selecione Conectar.
Na barra de ferramentas do Management Studio, selecione Nova Consulta para abrir o Editor de Consultas.
Na janela Editor de Consultas, insira uma consulta. A seção a seguir mostra alguns exemplos.
Pressione a tecla F5 para executar a consulta.
Exemplos de consulta
Antes de executar qualquer uma das consultas a seguir, você deve executar uma consulta USE database_name para garantir que as consultas sejam executadas no banco de dados que contém os metadados exportados. Por exemplo, caso tenha exportado metadados para um banco de dados chamado MyAccessMetadata, você adicionará a seguinte instrução ao início do código Transact-SQL:
USE MyAccessMetadata;
GO
Todos os exemplos a seguir usam o esquema dbo. Se você exportou os metadados para outro esquema, certifique-se de alterar o esquema ao executar essas consultas.
Quais tabelas e colunas estão nesses bancos de dados?
A consulta a seguir une as tabelas que contêm metadados de coluna, tabela e banco de dados e, em seguida, retorna os nomes de todos os bancos de dados, tabelas e colunas, classificados por nome de coluna:
SELECT DatabaseName,
TableName,
ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
ON T.DatabaseId = D.DatabaseId
ORDER BY ColumnName;
Quais são os maiores bancos de dados?
A consulta a seguir retorna o nome do banco de dados, o tamanho do arquivo e o número de tabelas em cada banco de dados do Access, classificados por tamanho de arquivo:
SELECT DatabaseName,
FileSize,
TablesCount
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileSize DESC;
Quem é o proprietário da maioria dos bancos de dados?
A consulta a seguir retorna o nome do banco de dados e o proprietário de cada banco de dados do Access, classificados por proprietário.
SELECT DatabaseName, FileOwner
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileOwner;
Quais bancos de dados contêm as mesmas tabelas?
A consulta a seguir usa uma subconsulta para localizar todos os nomes de tabela que aparecem mais de uma vez na lista de tabelas e, em seguida, usa essa lista de tabelas para obter o nome do banco de dados. Os resultados são retornados como o nome do banco de dados e, em seguida, o nome da tabela, e são classificados por nome da tabela.
SELECT DatabaseName,
TableName
FROM dbo.SSMA_Access_InventoryTables T
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
ON D.DatabaseId = T.DatabaseId
WHERE TableName IN (
SELECT TableName
FROM dbo.SSMA_Access_InventoryTables
GROUP BY TableName
HAVING COUNT(*) > 1
)
ORDER BY TableName;
Quais bancos de dados não foram modificados nos últimos seis meses?
A consulta a seguir obtém a data atual e o valor do mês de seis meses atrás e retorna uma lista de bancos de dados com uma data de modificação superior a seis meses.
SELECT DatabaseName,
DateModified
FROM dbo.SSMA_Access_InventoryDatabases
WHERE DATEDIFF(MONTH, DateModified, GETDATE()) > 6
ORDER BY DateModified;
Quais bancos de dados contêm informações privadas?
Seus bancos de dados do Access podem conter informações confidenciais ou pessoais. Talvez você queira mover esses bancos de dados para o SQL Server para aproveitar seus recursos de segurança. Caso saiba que as colunas que contêm dados confidenciais têm um nome específico ou contêm caracteres específicos, você poderá usar uma consulta para localizar todas as colunas que contêm essas informações. Por exemplo, você pode encontrar todas as colunas que incluem a cadeia de caracteres “salário”. Em seguida, a consulta retorna o nome do banco de dados, o nome da tabela e o nome da coluna.
SELECT DatabaseName,
TableName,
ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
ON T.DatabaseId = D.DatabaseId
WHERE ColumnName LIKE '%salary%';
Se você não souber o nome da coluna, poderá escrever uma consulta para retornar todas as colunas. Para fazer isso, remova a cláusula WHERE da consulta anterior.