Может ли DTS проверить наличие таблицы MS-Access?

StackOverflow https://stackoverflow.com/questions/26062

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть база данных Access, в которой я удаляю таблицу, а затем создаю ее заново.Однако мне нужно иметь возможность проверить таблицу на случай, если таблица будет удалена, но не создана (т.когда кто-то останавливает пакет DTS сразу после его запуска - закатывает глаза-).Если бы я делал это в базе данных 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-сервер 2000

Это было полезно?

Решение

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

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

Другие советы

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

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

SELECT * FROM MSysObjects WHERE Name = 'your_table';

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

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

Мартин.

П.Д.:Ваш If Exists также должен проверить тип объекта:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top