[英]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
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.