Pergunta

Eu tenho um banco de dados Access no qual elimino a tabela e crio-a novamente.No entanto, preciso ser capaz de testar a tabela caso ela seja descartada, mas não criada (ou seja,quando alguém interrompe o pacote DTS logo após ele iniciar -roll-eyes- ).Se eu estivesse fazendo isso no banco de dados SQL, faria apenas:

IF (EXISTS (SELECT * FROM sysobjects WHERE name = 'Table-Name-to-look-for'))
BEGIN
drop table 'Table-Name-to-look-for'
END

Mas como faço isso para um banco de dados Access?

Resposta opcional:existe uma maneira de fazer com que o pacote DTS ignore o erro e simplesmente vá para a próxima etapa em vez de verificar se ele existe?

Servidor SQL 2000

Foi útil?

Solução

Não tenho certeza se você pode consultar a tabela de objetos do sistema em um banco de dados Access de um pacote DTS.

Se isso não funcionar, por que não tentar fazer um SELECT * na tabela do Access em questão e depois pegar o erro se falhar?

Outras dicas

Tente o mesmo T-SQL, mas no MS ACCESS a tabela de objetos sys é chamada:MSysObjects.

Experimente isto:

SELECT * FROM MSysObjects WHERE Name = 'your_table';

e veja se funciona a partir daí.

Você pode dar uma olhada nessas tabelas se for em Ferramentas -> Opções -> Exibir (uma guia) -> e verificar Objetos Ocultos, Objetos do Sistema.Então você pode ver ambos.Se você abrir a tabela, deverá ver os nomes das tabelas, consultas, etc.Não altere isso manualmente ou o banco de dados poderá entrar em pânico :)

Martinho.

PD:Seu If Exists também deve verificar o tipo de objeto:

IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[Your_Table_Name]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)

O Microsoft Access possui uma tabela de sistema chamada MSysObjects que contém uma lista de todos os objetos de banco de dados, incluindo tabelas.Objetos de tabela possuem Tipo 1, 4 e 6.

É importante referenciar o tipo:

...Onde Name='TableName' e digite (1,4,6)

Caso contrário, o que é retornado pode ser algum objeto diferente de uma tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top