5/5 (3 avis)
Snippet vu 12 615 fois - Téléchargée 27 fois
/*Petite Mise a Jour : Cette requete fait la meme Chose que le curseur du dessous mais la fonction sp_Msforeachhdb n'est pas documentée dans SQL server donc a utliser avec precaution*/ exec sp_Msforeachdb 'SELECT ''?'' as nameBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM "?".dbo.sysobjects O LEFT JOIN "?".dbo.syscolumns C on C.id=O.id' rem : le ? remplace le nom des bases de données, la fonction sp_Msforeachdb remplace elle meme le ? par le nom de toutes les Tables /*Meme Chose mais avec curseur (10* plus lent)*/ DECLARE C_Base CURSOR FOR SELECT B.name AS NomBase, B.dbid AS IdBase FROM master.dbo.sysdataBases B LEFT JOIN master.dbo.sysobjects O on O.id=B.dbid DECLARE @Base as varchar(50) DECLARE @Id as int DECLARE @SQL as varchar(5000) declare @Tri as int DECLARE @i as int SET @i=0 SET @SQL='SELECT maBase,nameTable,nameColumn, NomType= CASE type WHEN ''U'' THEN ''Tables Utilisateur'' WHEN ''FN'' THEN ''Fonctions'' WHEN ''P'' THEN ''Procedure Stockée'' WHEN ''S'' THEN ''Tables Systemes'' WHEN ''TR'' THEN ''Triggers'' WHEN ''V'' THEN ''VUES'' ELSE ''Autre'' END, Tri= CASE type WHEN ''U'' THEN ''1'' WHEN ''FN'' THEN ''5'' WHEN ''P'' THEN ''4'' WHEN ''S'' THEN ''2'' WHEN ''TR'' THEN ''6'' WHEN ''V'' THEN ''3'' ELSE 7 END FROM (' OPEN C_Base FETCH C_Base INTO @Base,@Id WHILE @@FETCH_STATUS = 0 BEGIN IF @i>0 BEGIN SET @SQL = @SQL + ' UNION ' END SET @SQL = @SQL + ' SELECT ''' + @Base + ''' as maBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM [' + @Base + '].dbo.sysobjects O LEFT JOIN [' + @Base + '].dbo.syscolumns C on C.id=O.id' SET @i=@i+1 FETCH C_Base INTO @Base,@Id END CLOSE C_Base DEALLOCATE C_Base SET @SQL= @SQL + ')AS NewVue ORDER BY maBase,Tri,nameTable,NameColumn' exec(@SQL)
28 avril 2006 à 14:53
si tu pouvais donner un exemple ocncret de ce que tu veut faire je pourrais peut etre te repondre mais la je vois pas trop ce que tu veut faire???
27 avril 2006 à 18:29
Comment faire?
merci
27 oct. 2005 à 23:52
je ne connaissais pas la fonction présentée en premier plan.
Romelard Fabrice
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.