Accueil > > > SQL SERVER 2005 : RECHERCHE DE CHAMPS PAR LEURS NOMS MULTI BASES DE DONNÉES
SQL SERVER 2005 : RECHERCHE DE CHAMPS PAR LEURS NOMS MULTI BASES DE DONNÉES
Information sur la source
Description
Pour SQL Server 2005 uniquement. Permet de rechercher un champ par son nom dans toutes les bases de données d'une instance de SQL Server 2005. Renvoie une table contenant le nom et l'id de la base de données, le nom et l'id du schéma, le nom et l'id de l'objet et idem pour le champ. Il est possible de filtrer la recherche avec les 4 derniers critères. le premier est le texte recherché (attention c'est un LIKE '%xxxx%' on recherche donc une portion de la châine du nom du champ Les 3 suivant permettent de renvoyer ou non certains objets (une table est un des objets existant, tout comme l une vue, une procédure stockées). @TableUniquement - Si 1 Renvoie uniquement les objets de type table @ObjetSysteme - Si 0 ne renvoie pas les objets systèmes (ceux taggés ms_shipped) @ObjetDependantDautres - Si 1 renvoie les objet qui dépendent d'autres tels que les CHECK / DEFAULT / ...
Source
- ALTER PROCEDURE sql_RechercheChamp
- @recherche nvarchar(128) = '',
- @TableUniquement bit = 0,
- @ObjetSysteme bit = 1,
- @ObjetDependantDautres bit = 0
- AS
- BEGIN
- DECLARE @BaseDonneesNom nvarchar(128)
- DECLARE @BaseDonneesId int
- DECLARE @sql nvarchar(max)
-
- SET NOCOUNT ON
-
- -- Création de la table temporaire qui contiendra les résultats
- IF OBJECT_ID('tempdb..#resultat') IS NOT NULL
- DROP TABLE #resultat
- CREATE TABLE #resultat
- (
- BaseDonneesNom nvarchar(128),
- BaseDonneesId int,
- SchemaNom nvarchar(128),
- SchemaId int,
- ObjetType nvarchar(60),
- ObjetNom nvarchar(128),
- ObjetId int,
- ChampNom nvarchar(128),
- ChampType nvarchar(128),
- ChampId int
- )
-
- -- Curseur bouclant sur les Bases de données
- DECLARE BaseDonnees_curseur CURSOR
- FOR SELECT name,
- database_id
- FROM sys.databases ;
- OPEN BaseDonnees_curseur ;
- FETCH NEXT FROM BaseDonnees_curseur INTO @BaseDonneesNom,
- @BaseDonneesId ;
- WHILE @@FETCH_STATUS = 0
- BEGIN
-
- -- Création de la requête à executer
- SET @sql = 'SELECT ''' + @BaseDonneesNom
- + ''' AS BaseDonneesNom, '
- + CAST(@BaseDonneesId as nvarchar(11))
- + ' AS BaseDonneesId, SCHEMA_NAME(obj.schema_id), obj.schema_id, obj.type_desc, obj.name, obj.object_id, col.name, typ.name, col.column_id FROM '
- + QUOTENAME(@BaseDonneesNom)
- + '.sys.columns AS col JOIN sys.objects AS obj ON col.object_id = obj.object_id JOIN sys.types AS typ ON col.system_type_id = typ.system_type_id WHERE col.name like ''%'
- + @recherche + '%'''
- + CASE @ObjetSysteme
- WHEN 0 THEN ' AND obj.is_ms_shipped = 0 '
- ELSE ''
- END + CASE @TableUniquement
- WHEN 1 THEN ' AND obj.type IN (''S'', ''U'') '
- ELSE ''
- END
- + CASE @ObjetDependantDautres
- WHEN 0 THEN ' AND obj.parent_object_id = 0 '
- ELSE ''
- END ;
-
- INSERT INTO #resultat
- EXEC ( @sql ) ;
-
- FETCH NEXT FROM BaseDonnees_curseur INTO @BaseDonneesNom,
- @BaseDonneesId ;
- END ;
- CLOSE BaseDonnees_curseur ;
- DEALLOCATE BaseDonnees_curseur ;
-
- SET NOCOUNT OFF
-
- -- Renvoie le résultat de la recherche
- SELECT BaseDonneesNom,
- BaseDonneesId,
- SchemaNom,
- SchemaId,
- ObjetType,
- ObjetNom,
- ObjetId,
- ChampNom,
- ChampType,
- ChampId
- FROM #resultat ;
- END
- GO
-
- -- Recherche le texte 'recherche' dans les champs de tous les objets, systèmes ou non
- EXEC sql_RechercheChamp 'recherche'
-
- -- Recherche le texte 'recherche' dans les champs des tables uniquement, systèmes ou non
- EXEC sql_RechercheChamp 'recherche', 1
-
- -- Recherche le texte 'recherche' dans les champs des objets non systèmes
- EXEC sql_RechercheChamp 'recherche', 0, 0
-
- -- Recherche le texte 'recherche' dans les champs des objets dépendant d'autres (inclus entre autres les DEFAULT et CHECK)
- EXEC sql_RechercheChamp @recherche = 'recherche', @ObjetDependantDautres = 1
ALTER PROCEDURE sql_RechercheChamp
@recherche nvarchar(128) = '',
@TableUniquement bit = 0,
@ObjetSysteme bit = 1,
@ObjetDependantDautres bit = 0
AS
BEGIN
DECLARE @BaseDonneesNom nvarchar(128)
DECLARE @BaseDonneesId int
DECLARE @sql nvarchar(max)
SET NOCOUNT ON
-- Création de la table temporaire qui contiendra les résultats
IF OBJECT_ID('tempdb..#resultat') IS NOT NULL
DROP TABLE #resultat
CREATE TABLE #resultat
(
BaseDonneesNom nvarchar(128),
BaseDonneesId int,
SchemaNom nvarchar(128),
SchemaId int,
ObjetType nvarchar(60),
ObjetNom nvarchar(128),
ObjetId int,
ChampNom nvarchar(128),
ChampType nvarchar(128),
ChampId int
)
-- Curseur bouclant sur les Bases de données
DECLARE BaseDonnees_curseur CURSOR
FOR SELECT name,
database_id
FROM sys.databases ;
OPEN BaseDonnees_curseur ;
FETCH NEXT FROM BaseDonnees_curseur INTO @BaseDonneesNom,
@BaseDonneesId ;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Création de la requête à executer
SET @sql = 'SELECT ''' + @BaseDonneesNom
+ ''' AS BaseDonneesNom, '
+ CAST(@BaseDonneesId as nvarchar(11))
+ ' AS BaseDonneesId, SCHEMA_NAME(obj.schema_id), obj.schema_id, obj.type_desc, obj.name, obj.object_id, col.name, typ.name, col.column_id FROM '
+ QUOTENAME(@BaseDonneesNom)
+ '.sys.columns AS col JOIN sys.objects AS obj ON col.object_id = obj.object_id JOIN sys.types AS typ ON col.system_type_id = typ.system_type_id WHERE col.name like ''%'
+ @recherche + '%'''
+ CASE @ObjetSysteme
WHEN 0 THEN ' AND obj.is_ms_shipped = 0 '
ELSE ''
END + CASE @TableUniquement
WHEN 1 THEN ' AND obj.type IN (''S'', ''U'') '
ELSE ''
END
+ CASE @ObjetDependantDautres
WHEN 0 THEN ' AND obj.parent_object_id = 0 '
ELSE ''
END ;
INSERT INTO #resultat
EXEC ( @sql ) ;
FETCH NEXT FROM BaseDonnees_curseur INTO @BaseDonneesNom,
@BaseDonneesId ;
END ;
CLOSE BaseDonnees_curseur ;
DEALLOCATE BaseDonnees_curseur ;
SET NOCOUNT OFF
-- Renvoie le résultat de la recherche
SELECT BaseDonneesNom,
BaseDonneesId,
SchemaNom,
SchemaId,
ObjetType,
ObjetNom,
ObjetId,
ChampNom,
ChampType,
ChampId
FROM #resultat ;
END
GO
-- Recherche le texte 'recherche' dans les champs de tous les objets, systèmes ou non
EXEC sql_RechercheChamp 'recherche'
-- Recherche le texte 'recherche' dans les champs des tables uniquement, systèmes ou non
EXEC sql_RechercheChamp 'recherche', 1
-- Recherche le texte 'recherche' dans les champs des objets non systèmes
EXEC sql_RechercheChamp 'recherche', 0, 0
-- Recherche le texte 'recherche' dans les champs des objets dépendant d'autres (inclus entre autres les DEFAULT et CHECK)
EXEC sql_RechercheChamp @recherche = 'recherche', @ObjetDependantDautres = 1
Conclusion
Je vais essayer de faire un Proc stock équivalente sur SQL Server 7 / 2000... Et eventuellement ajouter des critères de recherche.
Historique
- 10 avril 2007 09:36:38 :
- Ajout de la description
- 10 avril 2007 09:44:02 :
- correction de la description
- 12 avril 2007 21:35:32 :
- Ajout du QUOTENAME sur le nom de la base de données et du type dans le résultat
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Procédure Stockée Recherche dans une table [Urgent] [ par Mr Capone ]
Bonjour, je souhaite a l'aide d'une procédure stocké savoir si une valeur existe dans une table mais j'y arrive pas. voici mon code : cre
Sauvegarde automatique sqlserver 2000 [ par jojos89 ]
Salut a tous,J'ai une base de données en local sur mon pc (avec sqlserver 2000)que je voudrais sauvegardé automatique (tous les soir) s
Requête avec champ Null [ par Blaster13 ]
Bonjour à tous,J'ai un petit souci et n'étant pas un champion du SQL ni du VBA je voulais savoir s'il existait une solution:Petit résum
Saisie dans un champ de formulaire vers BDD sous Access [ par alala ]
Bonjour tt le monde! Je débute en Access et je dois cr&#
access : insert into champ boolean [ par trexor ]
Bonjour,j'ai un champ access boolean (true/false) que je dois remplir avec vb.net, mais j'ai une erreur insert into Voici ma requte :D
aide pour SQLSERVER [ par nagrom_om ]
salut,quelqu'un sait il comment peut on avoir un listing des requetes qui sont passées sous SQL Server ??Merci !
Recherche dans toute la base de données [ par RugbyOne ]
Bonjour, Est-il possible de faire une recherche dans toute la base de données à l'aide d'une requête ? Je m'explique : j'ai une base SQL Server 2000
ms access - sqlserver - procédurestockée [ par metasky ]
bonjour,je suis actuellement sur une appli liant access et sqlserver...quand je consulte mes procédures stockées dans mon projet access les
Suppression de caracteres dans un champ TEXT [ par Sbt ]
Bonjour à tous, Dans une de mes tables, il y a un champ TEXT, nommé RES_TXT. Dans ce champ, on y insert tout un fichier texte, sur lequel on n'a pas
problème de recherche dans une base de donnée mysql [ par Xini28 ]
Lorsque je fais une recherche dans une base de données mysql, il s'affiche "Resource id #3" au lieu de ce que je recherche. Quelqu'un sait de quo
|
Derniers Blogs
TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|