2008-08-25 18 views
0

私はテーブルを削除してから、テーブルを新たに作成するAccessデータベースを持っています。しかし、テーブルが落とされても作成されない場合(つまり、-roll-eyes-を起動した直後に誰かがDTSパッケージを停止した場合)にテーブルをテストできる必要があります。私は、SQLデータベースでこれをやっていた場合、私はちょうど行うだろう:DTSがMS-Accessテーブルの存在をテストできる

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の

答えて

1

私はあなたが、システムがDTSパッケージからAccessデータベースのテーブルオブジェクト照会することができるかどうかはわかりません。

にはが含まれていない場合は、問題のアクセステーブルからSELECT *を実行し、失敗した場合はcatch the errorを実行してみてください。

1

Microsoft Accessは、テーブルを含むすべてのデータベース・オブジェクトのリストが含まれていMSysObjectsと呼ばれるシステムテーブルがあります。それ以外の場合は

...名= 'テーブル名' と型(1,4,6)

:テーブルオブジェクトはタイプ1、4、6

を持っていることは、型を参照することが重要です返されるものは、テーブル以外のオブジェクトである可能性があります。

1

同じT-SQLを試しますが、MS ACCESSではsysオブジェクトテーブルは MSysObjectsと呼ばれています。

SELECT * FROM MSysObjects WHERE Name = 'your_table'; 

をして、そこから動作するかどうかを確認:

これを試してみてください。

[ツール] - > [オプション] - > [表示(タブ)] - > [隠しオブジェクト、システムオブジェクト]をチェックすると、これらの表を見ることができます。あなたは両方を見ることができます。テーブルを開くとテーブル名やクエリなどが表示されます。これを手動で変更したり、DBがパニックに陥る可能性があります。

Martin。

P.D:あなたの場合には、オブジェクト型のチェックすべき存在:

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