2009-10-23 3 views
0

Est-il possible de rechercher une valeur de chaîne particulière dans une base de données SQL SERVER 2005? J'ai cette valeur de chemin d'image que je veux modifier et je pense qu'il est stocké dans la base de données.SQL Server: Vous devez trouver l'origine d'une valeur de chaîne particulière

Aussi - y a-t-il un moyen de rechercher le nom d'une colonne pour une table dans une base de données? De même, recherchez un nom de table dans une base de données?

+0

Pouvez-vous fournir plus de détails sur votre recherche de chaîne? Qu'avez-vous essayé, et qu'attendez-vous en conséquence? –

Répondre

1

Utilisez ceci pour obtenir une liste de toutes les tables d'une base de données.

SELECT * 
FROM information_schema.Tables 

Ust ce pour obtenir une liste de toutes les colonnes d'une table

SELECT column_name 'Column Name' 
FROM information_schema.columns 
WHERE table_name = MyTableName 

Vous pouvez utiliser ces ensemble pour rechercher dans toutes les tables et la colonne pour rechercher votre chaîne.

0

Il peut exister des utilitaires qui explorent le catalogue/schéma d'un serveur/base de données donné et utilisent cette information pour rechercher une correspondance donnée (ou une correspondance partielle) avec un motif donné dans toutes les colonnes textuelles. Vous pourriez même écrire un tel utilitaire et introduire vos propres heuristiques (par exemple, ne pas chercher dans les tables contenant plus de 10 000 lignes parce que vous attendez que l'information soit une table de type "configuration" etc.)

peut être d'utiliser SQL-Profiler pour enregistrer chaque requête envoyée au serveur (éventuellement filtrée par adresse IP, par identifiant de session etc.). En exécutant l'application sous-jacente afin qu'elle produise la chaîne particulière, vous aurez une liste de requêtes [heureusement], dont l'une cible la table/colonne particulière d'où le chemin/la chaîne ou les parties sont interrogés.

0

Parfois, les gens font cela avec SQL dynamique pour effectuer une recherche sur chaque colonne de la base de données. Il ne fonctionnera pas très bien, mais pour une recherche unique comme celle-ci peut être très pratique. Une recherche google rapide a montré cet exemple - http://codesnippets.joyent.com/posts/show/2157 Ceci est un exemple assez pauvre car il interroge chaque table N fois où N est le nombre de colonnes (il devrait juste faire un balayage de table au lieu de N), mais il pourrait obtenir le travail terminé. Vous pouvez également ne pas limiter aux 100 premiers caractères comme le fait cet exemple.

2
SELECT B.* 
FROM information_schema.COLUMNS B 
WHERE table_name 
     IN (SELECT A.TABLE_NAME FROM information_schema.Tables A WHERE TABLE_TYPE='BASE TABLE') 
     AND B.COLUMN_NAME LIKE '%yoursearchstring%' 
Questions connexes