서버에 원격이나 직접 접근할 수 있다면 그냥 mdf, ldf 파일을 보면 된다. 근데 쿼리밖에 쓸수 없을때 사용하면 된다. --DB 용량 확인 SP_HELPDB '데이터베이스이름' --테이블 별 용량 확인 SELECT CONVERT(NVARCHAR(30), MIN(O.NAME)) AS [테이블명] , CAST(LTRIM(STR(SUM(CAST(RESERVED AS BIGINT)) * 8192 / 1024, 15, 0)) AS BIGINT) AS [용량(kb)] FROM SYSINDEXES AS I INNER JOIN SYSOBJECTS AS O ON O.ID = I.ID WHERE I.INDID IN (0, 1, 255) AND O.XTYPE = 'U' GROUP BY I.ID ORDER BY [용량(k..
나는 단순히 SELECT만 하는데 자꾸 다른데서 테이블을 잠그고 있어서 SELECT가 느린경우가 있다. 그래서 데이터 무결성이 크게 중요하지 않은 자료를 보여주는 거라면(금융이나 보안계열 아니면 괜찮지않을까?) WITH NOLOCK 키워드를 많이 사용한다. SELECT * FROM CUST AS A (NOLOCK) LEFT JOIN SELLING AS B (NOLOCK) ON A.CUSTID = B.CUSTID 그런데 이게 모든 테이블마다 NOLOCK을 써주는게 보통일이 아니다. 프로시저나 한 섹션 전체에서 NOLOCK을 걸어도 상관없다면 다음 명령을 상단에 써주자. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 트랜잭션 레벨과 테이블 잠금에 대해서 더 자세히 알..
그러면 안되지만, 매우 많은 인력(SI)회사들이 문서를 관리하지 않는다. 그래서 가끔 고객이 오류 메세지가 뜬다고 물어보는데도 어디서 나는건지 도무지 모르겠다. 다음 쿼리를 통해 적어도 저장 프로시저의 내용은 전부 뒤져볼 수있다. DECLARE @FIND_STR NVARCHAR(100) = 'WORKTRACER 테이블 INSERT 중 오류가 발생하였습니다.' SELECT B.ID, A.ROUTINE_NAME, C.TEXT FROM INFORMATION_SCHEMA.ROUTINES AS A LEFT JOIN SYSOBJECTS AS B ON B.NAME = A.ROUTINE_NAME LEFT JOIN SYSCOMMENTS AS C ON B.ID = C.ID WHERE A.ROUTINE_TYPE = 'PRO..
가끔 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 '봉구%..