가끔 SSMS에서는 0.1초만에 끝나는 쿼리가 이상하게 Web이나 프로그램으로 실행하면 느린 경우가 있다. 물론 다른 원인도 많지만 이 방법도 써서 쿼리를 확인해보자. SET ARITHABORT OFF /* 문제가 되는 쿼리 */ SELECT * FROM MYWORKTABLE WHERE WORKER LIKE '봉구%' 기본적으로 SSMS에서는 ARITHABORT 옵션이 ON 상태이다. 만약 우리가 SSMS에서 다음쿼리를 실행한다면 SELECT * FROM MYWORKTABLE WHERE WORKER LIKE '봉구%' 실제로 실행 되는 쿼리는 다음과 같다. (프로파일러 돌려보면 나온다) SET ARITHABORT ON SELECT * FROM MYWORKTABLE WHERE WORKER LIKE '봉구%..
정말 가~끔 모든 테이블의 데이터를 검색하고 싶을때가 있다. 예를들면.. NAME이라는 컬럼에 들어있는 '홍길동'이라는 데이터를 전부 찾고 싶을때? USE [DATABASE_NAME] --데이터베이스 이름 DECLARE @TABLE NVARCHAR(50) = '', @COLUMN NVARCHAR(50) = '', @ROWC INT = 9999, @ANS NVARCHAR(50) = '', @QUR NVARCHAR(999) = '' --LIKE %컬럼이름%을 만족하는 컬럼을 가진 모든 테이블 조회 SELECT ROW_NUMBER() OVER (ORDER BY B.NAME) [ROW_NUM], B.NAME [TABLENM], A.NAME [COLUMNNM], TYPE_NAME(A.system_type_id) ..
MS-SQL은 SSMS를 워낙 잘 만들어놔서 GUI로 보는게 편하긴 하다. 그래도 가끔 동적쿼리를 만들거나 할 때, 테이블 이름이나 컬럼 이름이 필요한 경우가 있는데 이럴때 쓰는 쿼리를 소개한다. --데이터베이스 이름 조회 SELECT NAME FROM SYS.DATABASES WHERE NAME NOT IN('MASTER', 'MODEL', 'MSDB', 'TEMPDB') --테이블리스트 조회(현재 접속된 데이터베이스) SELECT NAME, OBJECT_ID FROM SYS.TABLES WHERE NAME = '테이블명' --컬럼 리스트 조회 SELECT A.NAME [컬럼명], TYPE_NAME(A.system_type_id) [컬럼타입], A.MAX_LENGTH [컬럼크기] FROM SYS.COL..