if OBJECTPROPERTY(object_id('tablename'),N'IsUserTable')=1 
    print '用户表'if OBJECTPROPERTY(object_id('tablename'),N'IsSystemTable')=1 
    print '系统表'

解决方案 »

  1.   

    select name from sysobjects where xtype='U'--'U'用户表,'S'系统表
      

  2.   

    select name from sysobjects where type = 'S'
    select name from sysobjects where xtype = 'S'select name from sysobjects where type = 'U'
    select name from sysobjects where xtype = 'U'在2K都是可以的,但个人认为不如用OBJECTPROPERTY函数判断,保持兼容性select name from sysobjects where OBJECTPROPERTY(id,N'IsSystemTable')=1 select name from sysobjects where OBJECTPROPERTY(id,N'IsUserTable')=1 
      

  3.   

    if objectproperty(object_id(N'你的表名'),N'isusertable')=1
      print '用户表'if objectproperty(object_id(N'你的表名'),N'IsSystemTable')=1
      print '系统表'
      

  4.   

    试过上述两种方法,都可以有效的区分开用户表和系统表,但是,为什么用上述语句查询后,dtproperties表也是属于用户表呢?而在SQL SERVER 中对应的数据库对应的TABLES里,dtproperties显示的却是system表呢?如何能去掉dtproperties这个表呢?谢谢
      

  5.   

    dtproperties
    是用户表呀!select name from sysobjects where OBJECTPROPERTY(id,N'IsUserTable')=1 
    and name not like 'dt%'你自己的表不要建立dt开头的
      

  6.   

    dtproperties应该是系统生成的用户表,但是,在我所需要获得的表里,还是不需要他的.楼上的方法可以,我刚找到另一种方法,测试也是可以的.
    select name from sysobjects where xtype='u' and status >=0但是不知道是status 代表的是什么意思,因为查询列出所有值,找不到status列的规律.没有办法了,暂时先用着吧!
      

  7.   

    上面的不对找到:
    查询用户表:
    select name from sysobjects
    where OBJECTPROPERTY(id,N'IsUserTable')=1 
    and OBJECTPROPERTY(id,N'IsMSShipped')=0
      

  8.   

    IsMSShipped 
    在安装 Microsoft® SQL Server™ 2000 的过程中创建的对象。 
    1 = True
    0 = False