如何从sysobjects中选择排除复制表

时间:2012-05-19 15:36:03

标签: sql sql-server sql-server-2008

我正在运行以下查询,并且由于生产数据库正在使用复制,因此我们在结果中获取了为复制添加的所有表(例如MSpeer_conflictdetectionconfigrequest,MSpeer_conflictdetectionconfigresponse)。

SELECT name FROM sysobjects WHERE type='U' AND name != 'sysdiagrams'

我们需要调整此查询,以便不显示这些表。我当然可以做name NOT IN ()并列出所有内容,但我正在寻找更好的解决方案。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

SELECT name .
FROM sysobjects 
WHERE type='U' 
  AND name != 'sysdiagrams' 
  AND replinfo = 0

然而: http://msdn.microsoft.com/en-us/library/ms177596.aspx请注意,sysobjects和replinfo似乎已被弃用。

0=not replicated
128 = merge - table or indexed view
1=transactional - table or indexed view - log based
3=transactional - table or indexed view - log based with custom sync object
33=transactional - table or indexed view - immediate updating

35=transaction- table or indexed view - log based with custom sync object
and custom filter
129 =merge and transactional - table or indexed view

64 - procs used by immediate updating
512 - all other procsprocs, views, functions

答案 1 :(得分:0)

由于您使用的是SQL 2008,我建议使用ff:

select * from sys.tables where is_ms_shipped = 0