簡體   English   中英

DTS可以測試MS-Access表是否存在

[英]Can DTS Test for Presence of MS-Access Table

我有一個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

我不確定是否可以從DTS包中查詢Access數據庫中的系統對象表。

如果這不起作用 ,為什么不嘗試從有問題的Access表中執行SELECT *,然后失敗時捕獲錯誤呢?

Microsoft Access有一個稱為MSysObjects的系統表,其中包含所有數據庫對象(包括表)的列表。 表對象具有類型1、4和6。

引用類型很重要:

...其中Name ='TableName'並輸入(1,4,6)

否則,返回的內容可能是表以外的某個對象。

嘗試使用相同的T-SQL,但是在MS ACCESS中,sys對象表稱為:MSysObjects。

嘗試這個:

SELECT * FROM MSysObjects WHERE Name = 'your_table';

看看它是否可以從那里工作。

如果轉到工具->選項->視圖(一個選項卡)->並選中“隱藏對象”,“系統對象”,則可以查看這些表。 這樣您就可以看到兩者。 如果打開表,則應該看到表名,查詢等。請勿手動更改此設置,否則數據庫可能會出現恐慌:)

馬丁

PD:如果存在,還應檢查對象類型:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM