17. oktober 2006 - 10:58
Der er
9 kommentarer og 1 løsning
Finde kolonne navn i DB
Hej Vi skal lave en rapport, men problemet er at jeg ikke kan finde det felt, der skal bruges. Kan man ikke lave et script, hvor man angiver teksten feltet skal indeholde og dermed finde tabel+kolonnenavn ? I Oracle kan man finde alle tabelnavne i DBA_TABLES - er der en tilsvarende i SQL Server ?
Annonceindlæg fra Computerworld it-jobbank
17. oktober 2006 - 11:16
#1
Jo, tabellerne sysobjects og syscolumns.
17. oktober 2006 - 11:20
#2
Sysobjects giver dig oversigt over alle objeker som tabeller, views m.m. I syscolumns kan du finde alle kolonner i både tabeller og views. Jeg mener du kan linke dem sammen på feltet id.
17. oktober 2006 - 11:48
#3
Jeg har denne stored procedure som kan søge efter dele af et felt navn eller tekst streng i stored procedures, tabeller, views og functioner: CREATE PROCEDURE sp_find_objects_containing @search varchar(128) AS SET @search = '%' + @search + '%' SELECT o.name As "Stored Procedures" FROM SYSOBJECTS o INNER JOIN SYSCOMMENTS c ON o.id = c.id WHERE c.text LIKE @search AND o.xtype = 'P' GROUP BY o.name ORDER BY o.name SELECT o.name As "Views" FROM SYSOBJECTS o INNER JOIN SYSCOMMENTS c ON o.id = c.id WHERE c.text LIKE @search AND o.xtype = 'V' GROUP BY o.name ORDER BY o.name SELECT o.name As "Tables" FROM SYSCOLUMNS c INNER JOIN SYSOBJECTS o ON c.id = c.id INNER JOIN MASTER.DBO.SYSTYPES t ON c.xtype = t.xtype WHERE o.name LIKE @search AND o.Type = 'U' GROUP BY o.name ORDER BY o.name SELECT o.name As "Functions" FROM SYSCOLUMNS c INNER JOIN SYSOBJECTS o ON c.id = c.id INNER JOIN MASTER.DBO.SYSTYPES t ON c.xtype = t.xtype WHERE o.name LIKE @search AND o.Type = 'FN' GROUP BY o.name ORDER BY o.name /*type P TR TF FN F U D V S K */
17. oktober 2006 - 11:48
#4
Den kan evt modificeres udfra det som du har behov for.
17. oktober 2006 - 12:05
#5
Det er tæt på, men ikke helt hvad jeg havde brug for. Jeg vil gerne søge efter felt værdien og ikke navnet. Kan man finde det ? Hvis man eksempelvis søger efter værdien 'Jensen' og ikke ved hvilken tabel og kolonne man kan finde det i.
17. oktober 2006 - 12:54
#6
du skal modificerer denne her: SELECT o.name As "Tables" FROM SYSCOLUMNS c INNER JOIN SYSOBJECTS o ON c.id = c.id INNER JOIN MASTER.DBO.SYSTYPES t ON c.xtype = t.xtype WHERE o.name LIKE @search AND o.Type = 'U' GROUP BY o.name ORDER BY o.name til at medtage kolonner
17. oktober 2006 - 12:55
#7
Men det kommer til at være en meget tung sp.
18. oktober 2006 - 13:03
#9
Det ser ud til at være lige hvad jeg søgte. dr chaos>> Smid lige et svar så giver jeg points
18. oktober 2006 - 13:10
#10
svar :)
Computerworld tilbyder specialiserede kurser i database-management