테이블 또는 인덱싱된 뷰가 전체 텍스트 인덱싱되지 않았기 때문에 테이블 또는 인덱싱된 뷰에서 CONTINES 또는 FREETEXT 서술어를 사용할 수 없습니다.
SQL Server 2008 R2 데이터베이스에 다음 오류가 발생합니다.
사용할 수 없음
CONTAINS
또는FREETEXT
전체 텍스트 색인화되지 않았기 때문에 테이블 또는 색인화된 뷰 'tblArmy'의 술어입니다.
- 전체 텍스트 검색 기능이 설치되어 있는지 확인합니다.
전체 텍스트 검색 카탈로그 작성(필요한 경우)
먼저 이미 존재하는 카탈로그가 있는지 확인합니다.
select * from sys.fulltext_catalogs
카탈로그를 찾을 수 없는 경우 카탈로그 만들기
use [DatabaseName] create fulltext catalog FullTextCatalog as default
카탈로그가 위와 동일한 방법으로 생성되었는지 확인할 수 있습니다.
전체 텍스트 검색 색인을 작성합니다.
create fulltext index on Production.ProductDescription(Description) key index PK_ProductDescription_ProductDescriptionID
인덱스를 생성하기 전에 다음 사항을 확인하십시오.
테이블에 하나의 전체 텍스트 검색 색인만 허용되므로 테이블에 아직 전체 텍스트 검색 색인이 없습니다.
테이블에 고유 인덱스가 있습니다.인덱스는 NULL을 허용하지 않는 단일 키 열을 기반으로 해야 합니다.
전체 텍스트 카탈로그가 있습니다.기본 전체 텍스트 카탈로그가 없는 경우 전체 텍스트 카탈로그 이름을 명시적으로 지정해야 합니다.
SQL Server Management Studio에서 2단계와 3단계를 수행할 수 있습니다.개체 탐색기에서 테이블을 마우스 오른쪽 단추로 클릭하고 다음을 선택합니다.Full-Text index
메뉴 항목 및 다음Define Full-Text Index...
하위 항목전체 텍스트 인덱싱 마법사가 프로세스를 안내합니다.또한 아직 전체 텍스트 검색 카탈로그가 없는 경우에는 전체 텍스트 검색 카탈로그를 작성합니다.
MSDN에서 더 많은 정보를 찾을 수 있습니다.
단계를 수행한 후 전체 텍스트 검색 색인을 작성하려면 몇 분이 필요합니다(표 및 열 데이터의 크기에 따라 다름).
에 대한 해결 방법CONTAINS
열에 전체 텍스트 색인을 만들지 않고 성능이 우선 순위 중 하나가 아닌 경우LIKE
사전 구성이 필요 없는 문:
예: 문자 Q가 포함된 모든 제품 찾기:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
정의해야 합니다.Full-Text-Index
쿼리를 사용해야 하는 데이터베이스의 모든 테이블에서CONTAINS
시간이 좀 걸릴 겁니다
대신 사용할 수 있습니다.LIKE
테이블 설정을 조정할 필요 없이 즉각적인 결과를 제공합니다.
예:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
로 얻은 동일한 결과CONTAINS
로 얻을 수 있습니다.LIKE
.
결과 보기:
전체 텍스트 색인화를 위해 테이블을 사용 가능으로 설정해야 할 수 있습니다.
열 전체 텍스트를 true로 설정하는 솔루션이 하나 더 있습니다.
예를 들어 이러한 솔루션은 저에게 적합하지 않았습니다.
ALTER TABLE news ADD FULLTEXT(headline, story);
나의 해결책.
- 테이블에서 마우스 오른쪽 버튼 클릭
- 설계.
- 편집할 열을 마우스 오른쪽 버튼으로 클릭합니다.
- 전체 텍스트 색인
- 더하다
- 가까운.
- 새로 고침
다음 단계
- 테이블에서 마우스 오른쪽 버튼 클릭
- 설계.
- 편집할 열을 클릭
- mssql 하단에 "열 속성" 탭이 있습니다.
- 전체 텍스트 사양 -> (전체 텍스트 인덱싱됨)이 true로 설정되었습니다.
새로 고침
mssql 2014 버전
검색할 특정 필드에 전체 텍스트 색인을 추가해야 합니다.
ALTER TABLE news ADD FULLTEXT(headline, story);
여기서 "news"는 테이블이며 전체 텍스트 검색에 사용하지 않을 "flash, story" 필드입니다.
Select * from table
where CONTAINS([Column], '"A00*"')
%와 동일하게 작동합니다.
where [Column] Like 'A00%'
언급URL : https://stackoverflow.com/questions/6003240/cannot-use-a-contains-or-freetext-predicate-on-table-or-indexed-view-because-it
'programing' 카테고리의 다른 글
VM 구현을 위한 자습서/리소스 (0) | 2023.07.09 |
---|---|
Node.js 및 mongoose를 사용하여 '명령 찾기 인증 필요'를 해결하는 방법은 무엇입니까? (0) | 2023.07.09 |
Excel 셀 내부의 숫자를 0으로 채우는 방법 (0) | 2023.07.09 |
OS.walk의 디렉터리 제외 (0) | 2023.07.09 |
SVN: Git에 해당하는 외부? (0) | 2023.07.09 |