2009-08-12 19 views

Odpowiedz

46

chciałbym kwerendy information_schema - to ma widoki, które są znacznie bardziej czytelny niż tabel bazowych.

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%create%' 
+0

To zadziałało! Lepsza wersja też. – pencilslate

5
select object_name(c.object_id) as table_name 
    , schema_name(t.schema_id) as schema_name 
    from sys.columns c 
    join sys.tables t on c.object_id = t.object_id 
    where c.name=N'CreatedDate'; 

robi się trochę bardziej skomplikowana, jeśli chcesz alsoother właściwości tabeli, ale można odnieść się do poglądów katalogowych przedmiot jak sys.tables, sys.columns itp

+0

mam błąd „Nieprawidłowa nazwa kolumny«schema_id» – pencilslate

+1

T jego pracował! wybierz object_name (sc.object_id) jako nazwa_tabeli , nazwa_schematu (st.schema_id) jako nazwa_thematu z sys.columns sc, sys.tables st gdzie sc.name = N'CreatedDate '; – pencilslate

+0

Wrigth, pisałem zapytanie z pamięci, zapomniałem sys.columns nie przechowuje schematu. –

0

samo, ale w ANSI sposób

SELECT * Z INFORMATION_SCHEMA.TABLES GDZIE TABLE_NAME IN ( SELECT TABLE_NAME Z INFORMATION_SCHEMA.COLUMNS GDZIE COLUMN_NAME = „CreateDate” )

2

Mój ulubiony ...

SELECT objParent.name AS parent, obj.name, col.* 
FROM sysobjects obj 
    LEFT JOIN syscolumns col 
     ON obj.id = col.id 
    LEFT JOIN sysobjects objParent 
     ON objParent.id = obj.parent_obj 
WHERE col.name LIKE '%Comment%' 
    OR obj.name LIKE '%Comment%' 

Przede szukam "Komentarz".

Upuść znaki procentu, jeśli chcesz mieć bezpośredni mecz.

ta przeszukuje tabele, pola i takie rzeczy jak nazwy klucza podstawowego, ograniczenia, widoki itp

i kiedy chcesz szukać w StoredProcs po monkeying z tabel (i trzeba dokonać meczu PROC), użyj następujące ...

SELECT name 
FROM sys.procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%' 

Mam nadzieję, że pomoc, uważam te dwa pytania za niezwykle przydatne.

0

Nie trzeba wpisywać zapytanie SQL za to w SQL Server 2008.

W SSMS Object Explorer wybrać bazy danych lub tabel o wymaganej bazy danych (jeśli trzeba szukać w jednej bazie danych), otwórz menu Widok- -> Szczegóły Eksploratora obiektu (alternatywnie naciśnij klawisz F7), wpisz% CreatedDate% w polu tekstowym Wyszukaj, ENTER, ciesz się

+0

co zadziwiające, to nie zadziałało; znajduje każdy inny typ obiektu, który SSMS pokazuje w przeglądarce –

6

Możesz również spróbować wykonać to za pomocą jednego z wielu narzędzi zewnętrznych, które są do tego dostępne.

Zapytania są idealne dla prostych wyszukiwań, ale jeśli potrzebujesz więcej manipulacji danymi, wyszukaj referencje i to jest to, gdzie możesz zrobić o wiele lepszą pracę z tymi.

Również te są w bardzo przydatne, gdy niektóre obiekty są szyfrowane i trzeba szukać

używam ApexSQL Search który jest wolny, ale istnieje również wiele więcej (również za darmo) na rynku, takich jak czerwony Brama lub pakiet narzędzi SSMS.

1

Użyj tego zapytania:

SELECT 
    t.name AS table_name, 
    SCHEMA_NAME(schema_id) AS schema_name, 
    c.name AS column_name , * 
FROM sys.tables AS t 
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
Where 
    (c.name LIKE '%' + '<ColumnName>' + '%') 
    AND 
    (t.type = 'U') -- Use This To Prevent Selecting System Tables 
1

Dla mnie mam tylko do odczytu, aby uruchomić querys więc muszę korzystać z tej funkcji często Oto co mogę użyć:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
where TABLES.TABLE_NAME like '%your table name here%' 

Można wymienić. Tabele z .COLUMNS wtedy to będzie wyglądać następująco:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE columns.COLUMN_NAME like '%your column name here%' 
Powiązane problemy