Avatar billede stig3 Mester
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 ?
Avatar billede lorentsnv Nybegynder
17. oktober 2006 - 11:16 #1
Jo, tabellerne sysobjects og syscolumns.
Avatar billede lorentsnv Nybegynder
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.
Avatar billede dr_chaos Nybegynder
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
*/
Avatar billede dr_chaos Nybegynder
17. oktober 2006 - 11:48 #4
Den kan evt modificeres udfra det som du har behov for.
Avatar billede stig3 Mester
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.
Avatar billede dr_chaos Nybegynder
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
Avatar billede dr_chaos Nybegynder
17. oktober 2006 - 12:55 #7
Men det kommer til at være en meget tung sp.
Avatar billede dr_chaos Nybegynder
17. oktober 2006 - 12:58 #8
jeg gider ikke lave den så derfor søgte jeg efter en:)

fandt denne her:

http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm

Det er vidst lige hvad du skal bruge.
Avatar billede stig3 Mester
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
Avatar billede dr_chaos Nybegynder
18. oktober 2006 - 13:10 #10
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester