sql

sql

    MS-SQL 올림, 반올림, 내림 쿼리

    간단하지만 자주 필요한 올림, 반올림, 내림하는 방법 --ROUND(실수, 반올림 자릿수) : 반올림 or 절삭 SELECT ROUND(1234.5678, 2)--결과 : 1234.57 SELECT ROUND(1234.5678, -2)--결과 : 1200 --CEILING(실수) : 올림 SELECT CEILING(123.1) --결과 : 124 SELECT CEILING(-123.1) --결과 : -123 --FLOOR(실수) : 내림 SELECT FLOOR(123.1) --결과 : 123 SELECT FLOOR(-123.1) --결과 : -124

    데이터베이스 용량 확인 방법

    서버에 원격이나 직접 접근할 수 있다면 그냥 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만 하는데 자꾸 LOCK이 걸리는 경우

    나는 단순히 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에서는 빠른데 적용하면 느릴경우

    가끔 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 '봉구%..

    서버의 CPU 사용률 확인하는 쿼리

    이상하게 CPU 사용률이 높을때 실행해서 어떤놈이 CPU를 많이 쓰고있는지 확인할 때 쓴다. use tempdb CREATE TABLE #sp_who2 (SPID INT,Status VARCHAR(255), Login VARCHAR(255),HostName VARCHAR(255), BlkBy VARCHAR(255),DBName VARCHAR(255), Command VARCHAR(255),CPUTime INT, DiskIO INT,LastBatch VARCHAR(255), ProgramName VARCHAR(255),SPID2 INT, REQUESTID INT) INSERT INTO #sp_who2 EXEC sp_who2 SELECT A.SPID, B.EVENT_INFO, A.STATUS, A.LOGIN..