代码之家  ›  专栏  ›  技术社区  ›  Keng

Can DTS测试是否存在MS访问表

  •  0
  • Keng  · 技术社区  · 16 年前

    我有一个Access数据库,我在其中删除表,然后重新创建表。但是,我需要能够测试该表,以防该表被删除但未被创建(即,当有人在DTS包启动后立即停止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 Server 2000

    3 回复  |  直到 16 年前
        1
  •  1
  •   Tim Lara    16 年前

    我不确定是否可以从DTS包中查询Access数据库中的system objects表。

    如果 catch the error 如果失败了?

        2
  •  1
  •   Martin Marconcini    16 年前

    尝试相同的T-SQL,但在MS ACCESS中,sys objects表被调用: MSysObjects。

    试试这个:

    SELECT * FROM MSysObjects WHERE Name = 'your_table';
    

    看看从那里能不能用。

    如果转到“工具”->选项->视图(选项卡)->并检查隐藏对象、系统对象。所以你可以看到两者。如果打开表,您应该会看到表名、查询等。不要手动更改,否则数据库可能会死机:)

    马丁。

    注意:如果存在,还应检查对象类型:

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

    Microsoft Access有一个名为MSysObjects的系统表,其中包含所有数据库对象(包括表)的列表。表对象具有类型1、4和6。

    ... 其中Name='TableName'并键入(1,4,6)

    否则,返回的可能是表以外的某个对象。