2009-10-23 3 views
0

SQL Server 2005 데이터베이스에서 특정 문자열 값을 검색 할 수있는 방법이 있습니까? 나는이 이미지 경로 값을 수정하고 데이터베이스에 저장했다고 생각합니다.SQL Server : 특정 문자열 값의 출처를 찾으려면

또한 데이터베이스의 모든 테이블에 대해 열의 이름을 검색 할 수있는 방법이 있습니까? 마찬가지로 데이터베이스에서 테이블 이름을 검색 하시겠습니까?

+0

문자열 검색에 대한 세부 정보를 제공 할 수 있습니까? 결과는 무엇이며 예상 한 결과는 무엇입니까? –

답변

1

데이터베이스의 모든 테이블 목록을 가져 오는 데 사용합니다.

SELECT * 
FROM information_schema.Tables 

우스이 테이블 당신은 당신의 문자열을 검색하는 모든 테이블과 열을 검색하기 위해 함께 이들을 사용할 수 있습니다

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

의 모든 열 목록을 얻을 수 있습니다.

0

주어진 서버/데이터베이스의 카탈로그/스키마를 드릴 다운하는 유틸리티가있을 수 있으며이 정보를 사용하여 모든 텍스트와 같은 열에서 주어진 패턴과 특정 일치 (또는 부분 일치)를 검색 할 수 있습니다. 당신은 아마도 그러한 유틸리티를 작성하고 자신의 발견 적 방법을 소개 할 수도 있습니다. 정보가 "구성 유형"테이블이 될 것으로 예상하기 때문에 10,000 행 이상있는 테이블을 검색하지 마십시오.

쉬운 방법 SQL-Profiler를 사용하여 서버에 보낸 모든 쿼리를 기록 할 수 있습니다 (IP 주소, 세션 ID 등으로 필터링 가능). 그런 다음 특정 문자열을 생성 할 수 있도록 기본 응용 프로그램을 실행하면 짧은 길이의 쿼리 목록이 생성되며 그 중 하나는 경로/문자열 또는 부분이 쿼리되는 특정 테이블/열을 대상으로합니다.

0

때로는 사람들이 동적 SQL을 사용하여 데이터베이스의 모든 열을 검색합니다. 그것은 모든 것을 잘 수행하지는 못하지만, 이와 같은 일회성 검색은 매우 편리 할 수 ​​있습니다. 빠른 구글 검색이이 예제를 나타 냈습니다 - http://codesnippets.joyent.com/posts/show/2157 이것은 N이 각 테이블의 N 번 열을 쿼리하기 때문에 매우 좋지 않습니다 (N 대신 하나의 테이블 스캔 만 수행해야합니다).하지만 작업을 얻을 수 있습니다. 끝난. 그 예처럼 첫 번째 100 자로 제한하지 않을 수도 있습니다.

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%' 
관련 문제