Может ли DTS тест на наличие таблицы MS-Access - PullRequest
0 голосов
/ 25 августа 2008

У меня есть база данных Access, в которой я удаляю таблицу, а затем заново создаю таблицу. Однако мне нужно иметь возможность проверить таблицу в случае, если таблица будет удалена, но не создана (то есть, когда кто-то останавливает пакет DTS сразу после запуска -roll-eyes-). Если бы я делал это в базе данных SQL, я бы просто сделал:

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

Но как мне это сделать для базы данных Access?

Необязательный ответ: есть ли способ заставить пакет DTS игнорировать ошибку и просто перейти к следующему шагу, а не проверять, существует ли она?

SQL Server 2000

Ответы [ 3 ]

1 голос
/ 25 августа 2008

Попробуйте тот же T-SQL, но в MS ACCESS таблица объектов sys называется: MSysObjects.

Попробуйте это:

SELECT * FROM MSysObjects WHERE Name = 'your_table';

и посмотрите, работает ли он оттуда.

Вы можете взглянуть на эти таблицы, если зайдите в Инструменты -> Параметры -> Вид (вкладка) -> и выберите Скрытые объекты, Системные объекты. Таким образом, вы можете увидеть оба. Если вы откроете таблицу, вы должны увидеть имена таблиц, запросы и т. Д. Не изменяйте это вручную, иначе БД может запаниковать:)

Martin.

P.D .: Your If Exists также должен проверить тип объекта:

IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[Your_Table_Name]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
1 голос
/ 02 октября 2008

Я не уверен, что вы можете запросить таблицу системных объектов в базе данных Access из пакета DTS.

Если это не , почему бы просто не попробовать выполнить SELECT * из рассматриваемой таблицы Access, а затем перехватить ошибку , если она не удалась?

1 голос
/ 25 августа 2008

В Microsoft Access есть системная таблица MSysObjects, которая содержит список всех объектов базы данных, включая таблицы. Объекты таблицы имеют типы 1, 4 и 6.

Важно указать тип:

... Где Name = 'TableName' и введите In (1,4,6)

В противном случае возвращаемым может быть какой-то объект, отличный от таблицы.

...