2012-05-19 2 views
0

Je lance la requête suivante et comme la base de données de production utilise la réplication, toutes les tables sont ajoutées pour la réplication (par exemple MSpeer_conflictdetectionconfigrequest, MSpeer_conflictdetectionconfigresponse) dans les résultats.Comment exclure les tables de réplication dans select from sysobjects

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

Nous devons ajuster cette requête afin que ces tables n'apparaissent pas. Je pourrais bien sûr faire un name NOT IN() et les énumérer tous, mais je cherche une meilleure solution.

Merci pour votre aide.

Répondre

0

Depuis que vous utilisez SQL Server 2008, je vous suggère la ff:

select * from sys.tables where is_ms_shipped = 0 
+0

Est-ce que ce travail en 2005 aussi? –

+0

En regardant la documentation de SQL 2005 pour sys.objects, il semble que la colonne is_ms_shipped soit présente, ce qui devrait être le cas. –

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

Cependant: http://msdn.microsoft.com/en-us/library/ms177596.aspx Notez que sysobjects et replinfo Semble déconseillés.

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 
Questions connexes