Existe-t-il un moyen de rechercher une chaîne dans toutes les tables d'une base de données dans SQL Server Management Studio 2008?
Je veux rechercher la chaîne disons john
. Le résultat doit montrer les tables et leur ligne respective qui contiennent john
.
sql
sql-server
search
Ramiz Raja
la source
la source
Réponses:
Si vous êtes comme moi et que vous avez certaines restrictions dans un environnement de production, vous souhaiterez peut-être utiliser une variable de table au lieu d'une table temporaire et une requête ad hoc plutôt qu'une procédure de création.
Bien sûr, en fonction de votre instance de serveur SQL, elle doit prendre en charge les variables de table.
J'ai également ajouté une instruction USE pour réduire la portée de la recherche
la source
Un peu en retard mais j'espère utile.
Pourquoi ne pas essayer certains des outils tiers qui peuvent être intégrés dans SSMS.
J'ai travaillé avec ApexSQL Search (100% gratuit) avec un bon succès à la fois pour la recherche de schéma et de données et il existe également un pack d'outils SSMS qui a cette fonctionnalité (non gratuit pour SQL 2012 mais assez abordable).
La procédure stockée ci-dessus est vraiment géniale; c'est juste que c'est beaucoup plus pratique à mon avis. En outre, cela nécessiterait quelques légères modifications si vous souhaitez rechercher des colonnes datetime ou des colonnes GUID et autres…
la source
Pour mettre à jour la réponse de TechDo pour SQL Server 2012. Vous devez modifier:
'FROM ' + @TableName + ' (NOLOCK) '
enFROM ' + @TableName + 'WITH (NOLOCK) ' +
Sinon, vous obtiendrez l'erreur suivante:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
Voici la procédure stockée mise à jour complète:
la source
Un peu en retard, mais vous pouvez facilement trouver une chaîne avec cette requête
la source
J'ai écrit un SP pour ceci qui renvoie les résultats de la recherche sous forme de nom de table, les noms de colonne dans lesquels la chaîne de mots clés de recherche a été trouvée ainsi que les recherches dans les lignes correspondantes comme indiqué dans la capture d'écran ci-dessous.
Ce n'est peut-être pas la solution la plus efficace mais vous pouvez toujours la modifier et l'utiliser selon vos besoins.
la source
Il n'y a pas besoin de boucle imbriquée (boucle externe à travers les tables et boucle interne à travers toutes les colonnes de table). On peut récupérer toutes (ou arbitrairement sélectionnées / filtrées) les combinaisons table-colonne de
INFORMATION_SCHEMA.COLUMNS
et dans une boucle, il suffit de les parcourir (rechercher):la source
curTabCol
sélectionne toutes les combinaisons table.colonne qui vous intéressent. Recherche ensuite dans toutes ces colonnes la chaîne donnée dans la variable @search. Si une telle chaîne (exacte) dans cette requête SQL (sinon utilisez LIKE '% ...%') existe, la combinaison des noms de table et de colonne est imprimée.Ce fut très utile. Je voulais importer cette fonction dans une base de données Postgre SQL. Je pensais que je le partagerais avec toute personne intéressée. Les aura quelques heures. Remarque: cette fonction crée une liste d'instructions SQL qui peuvent être copiées et exécutées sur la base de données Postgre. Peut-être que quelqu'un de plus intelligent que moi peut demander à Postgre Office de créer et d'exécuter les instructions dans une seule fonction.
la source
La réponse qui a déjà été mentionnée dans ce post plusieurs fois, je l'ai adoptée un peu car j'avais besoin de rechercher dans un seul tableau aussi:
(et a également simplifié la saisie du nom de la table)
la source