Сведения о вопросе

Martincow

16:24, 4th August, 2020

Теги

sql-server   ms-access   dts    

Может DTS тест на наличие таблицы MS-Access

Просмотров: 419   Ответов: 3

У меня есть база данных 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



  Сведения об ответе

ЯЯ__4

06:08, 7th August, 2020

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

Важно ссылаться на тип: ...

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

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


  Сведения об ответе

PIRLO

21:46, 28th August, 2020

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

Попробовать это:

SELECT * FROM MSysObjects WHERE Name = 'your_table';

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

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

Мартин.

P.D.: Если существует, должно также проверка типа объекта:

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


  Сведения об ответе

JUST___

14:46, 15th August, 2020

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться