본문 바로가기
반응형

MS-SQL70

MS-SQL 한글 자동 변환 현상 자판이 영문 상태에서 다른 창으로 이동 또는, Object Explorer 이동 후 편집창으로 돌아올 때 지 맘대로 한글로 변환이 되어 있다면... 다음과 같이 1.메뉴바에서 Query > Query Options...를 선택 2.한/영 전환 버튼을 클릭. 3.매 실행시마다 해야됨. 2021. 6. 23.
Operating system error 5: "5(액세스가 거부되었습니다.)". Attach database failed for Server 'DESKTOP-MOJ60FI\SQLEXPRESS'. (Microsoft.SqlServer.Smo) For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=15.0.18206.0+((SSMS_Rel).191029-2112)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476 ------------------------------ ADDITIONAL INFORMATI.. 2020. 3. 13.
provider: Named Pipes Provider, error: 40 - SQL Server provider: Named Pipes Provider, error: 40 - SQL Server MDF 파일을 연결하려는데 위와 같은 에러가 발생시는 다음과 같이 1. Microsoft SQL Server 20XX -> 구성도구 - SQL Server 구성 관리자를 실행. 2. 좌측 리스트의 'SQL Server 네트워크 구성' 의 하위 SQLXXXX 대한 프로토콜 선택. 3. 그리고 우측의 TCP/IP항목을 사용으로 변경 4. 'TCP/IP' 항목을 우클릭 후 속성창에서 'IP 주소' 탭의 IPAll하위 속성인 TCP 포트 1433으로 변경 5. SQL Server 서비스를 다시 시작. 2019. 8. 20.
SP 정보 보기(생성, 수정 등) SP 정보 보기(생성, 수정 등) SELECT NAME, TYPE_DESC, CREATE_DATE, MODIFY_DATE FROM SYS.SQL_MODULES A JOIN SYS.ALL_OBJECTS B ON B.OBJECT_ID = A.OBJECT_ID ORDER BY MODIFY_DATE DESC 2019. 5. 21.
PARTITION BY PARTITION BY GROUP BY 사용하지 않고, COUNT 조회 하기 SELECT * FROM ( SELECT RANK() OVER (PARTITION BY ORD_YMD, ORD_NUM ORDER BY SEND_DT desc) AS SEND_RANK , ORD_YMD , ORD_NUM , SEND_DT , SEND_YN , COUNT(*) OVER (PARTITION BY ORD_YMD, ORD_NUM) CNT FROM SM_MAIL_SEND WHERE 1=1 AND TMPL = 'AAA' ) A WHERE SEND_RANK = 1 2019. 1. 14.
Insert하면서, 채번된 데이터 별도 변수에 저장 Insert와 동시에 채번된 데이터 별도로 변수로 저장. DECLARE @vOUTPUT TABLE (USR_NUM INT) INSERT INTO dbo.USERTBL ( USR_NUM , USR_GB , USR_NM , HP_NUM ) OUTPUT inserted.USR_NUM INTO @vOUTPUT SELECT @CMPNY_CD , RIGHT(CONVERT(VARCHAR, ISNULL(MAX(CONVERT(INT, USR_NUM)),'0') + 1000001), 6) , @USR_GB , @USR_NM , @HP_NUM 2018. 7. 25.
[298] SQLServer 오류: 15404, Windows NT 그룹/사용자 'WIN-6NB4PI6JSLM\Administrator'에 대한 정보를 가져올 수 없습니다. 오류 코드 0x534. [SQLSTATE 42000] (ConnIsLoginSysAdmin) Q> SQL 유지관리계획에 백업 스케쥴 설정했는데 자동백업이 안되고 있어요. 확인 좀 부탁드려요 A> 문제점> 다음과 같은 오류가 나면서 데이터베이스 유지 관리 계획에 등록된 백업이 실행되지 않음. SQL Server Scheduled Job \\\'backup.하위 계획_1\\\' (0x98D14B126262DB4B9F0C681E7CED0AF3) - Status: 실패 - Invoked on: 2010-04-07 19:07:00 - Message: 작업이 실패했습니다. 소유자 GUEST-001\\\\Administrator(작업 backup.하위 계획_1)에 서버 액세스 권한이 있는지 확인할 수 없습니다. (원인: Windows NT 그룹/사용자 \\\'GUEST-001\\\\Administrator\.. 2017. 3. 22.
MS SQL Identity값 초기화 Identity값 초기화를 하고 싶다면,DBCC CHECKIDENT( [테이블 이름] , RESEED, 0 )을 사용하면 된다. 하기전에 모든 데이터를 삭제하고, 실행한다. 2017. 3. 5.
차집합 차집합 위와 같이 A 테이블에는 1,2,3,4,5가 있고, B 테이블에는 1,2,3이 있다. 집합 A에서 집합 B를 뺀 차집합은 4,5가 된다. 수학 기호로는 A-B={4,5} 이다. --가장 간결한 방법 SELECT ID FROM A EXCEPT SELECT ID FROM B EXCEPT 및 INTERSECT 두 쿼리의 결과를 비교하여 고유한 값을 반환합니다. EXCEPT는 오른쪽 쿼리에 없는 고유한 값을 왼쪽 쿼리에서 반환합니다. INTERSECT는 INTERSECT 피연산자의 왼쪽과 오른쪽에 있는 두 쿼리에 의해 반환된 고유한 값을 반환합니다. 참고 : http://msdn.microsoft.com/ko-kr/library/ms188055.aspx --NOT IN을 이용한 방법 SELECT ID F.. 2016. 12. 28.
0으로 나누기 오류가 발생했습니다. 메시지 8134, 수준 16, 상태 1, 프로시저 UP_DA_VendorEstRqstStatus, 줄 35 [배치 시작 줄 0]0으로 나누기 오류가 발생했습니다.경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다. 위와 같은 메세지가 나오면, CASE WHEN 사용하여 문제를 해결해야되지만. 다음을 사용하여서도 문제를 해결할 수 있다.SET ANSI_WARNINGS OFFSET ARITHIGNORE ONSET ARITHABORT OFF 2016. 12. 20.
MS-SQL 2016 Json 데이터를 DB로 전송하여 데이터 셋으로 일괄 작업하기 MS SQL 2016부터 Json 데이터로 작업하는게 가능하다.기존 XML작업하는 것과 동일하다 보면 된다. Json으로 데이터 테이블을 한번에 보내면 Biz Layer에서 for문등을 사용하여 Loop를 실행할 필요가 없어진다. 사용 방법은 다음과 같다. DECLARE @JsonNVARCHAR(MAX) SET @Json = '[{"PjtCode":"A0001","PjtName":"SAMPLE PROJECT","EstNo":1,"GrndFloors":12,"UndGrndFloors":1,"GrossArea":25000,"BulindingSize":"지하1층, 지상 12층","UnitAmt":4.8},{"PjtCode":"A0002","PjtName":"신규프로젝트","EstNo":0,"BulindingS.. 2016. 11. 23.
동적 pivot 동적 pivot 샘플 코드 DECLARE @col NVARCHAR(MAX) DECLARE @query NVARCHAR(MAX) DECLARE @StndCodeBizDvsNVARCHAR(10) DECLARE @StndItemCode NVARCHAR(30) SET @StndCodeBizDvs = 'M' SET @StndItemCode ='3439084' SET @col = '' SELECT @col = @col +'[' + AA.LoborCode + '],' FROM ( SELECT DISTINCT A.LoborCode , B.ItemSize FROM dbo.DDETB_Z1_StndLaborQty A --표준공량 LEFT OUTER JOIN dbo.DDETB_Z1_StndItemList B ON B.Stnd.. 2016. 10. 5.
XML 문서 쿼리로 조회하기 XML 텍스트를 sql에서 조회시 샘플 XML(샘플에서는 TableSample가 한개이지만, 여러개가 와도 된다.) 기본형(복불 후 결과 볼수 있음) 기본형으로 단순 XML문서를 읽어들여서 출력함. 01808 D 00373 2015-05-01T00:00:00+09:00 00D 2 000 DECLARE @XML XML SET @XML=convert(xml,N'01808D003732015-05-01T00:00:00+09:0000D2000') DECLARE @IDOC INT EXEC sp_xml_preparedocument @DOC OUTPUT, @XML SELECT * FROM OPENXML(@DOC, '/DataTable/TableSample', 2) WITH ( a varchar(500) 'a' , b .. 2015. 8. 12.
Index 클러스터 -영어 사전의 알파벳 순서로 구성된 인덱스. -유일한 키(primary key)로 구성된 컬럼 -트리 구조로 인덱스 생성. -비클러스터 형보도 검색 속도가 빠름. -입력/수정/삭제가 느림. -테이블에 한개만 생성이 가능. -두 열에 인덱스 구성시 클러스터 형을 사용 할 수 없음. 비클러스터 -유일한 키. -별도의 장소에 인덱스 페이지를 생성하고 별도로 생성된 인덱스에서 해당 주소를 검색해여 조회. -입력/수정/삭제가 빠름. -테이블에 여러개 생성이 가능. 단순 비클러스터 -단순은 중복을 허용한다는 의미로, 고유와 반대의미 임. 포괄 열이 있는 인덱스 포괄 열이 있는 인덱스(Index with Included Columns)란 비클러스터형 인덱스의 리프 페이지에 데이터를 포함하고 있는 열을 의미한.. 2015. 7. 29.
CTE Table ALTER PROC [dbo].[USP_BASIC_TEST_4_PROJECTTEST_LIST] @COM_CODE VARCHAR(6) = '' , @SEARCH_KEYWORD NVARCHAR(100)= '' --검색어 , @CURR_PAGE INT = 1 , @PAGESIZE INT =15 --한페이지의 ROW수 , 0일경우는 모든자료를 리스트업함 , @SORT VARCHAR(20) = 'CD_CODE' --정렬컬럼 , @SORT_AD CHAR(1) --(A)SC/(D)ESC AS DECLARE @SROW SMALLINT , @EROW SMALLINT , @KEYWORD VARCHAR(200) SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.. 2015. 7. 29.
WHERE 조건에 case문으로 사용 컬럼 바꾸기 ( CASE @PARAM WHEN '' THEN @PARAM ELSE PJT_DES END LIKE @PARAM ) OR ( CASE @PARAM_V WHEN '' THEN @PARAM_V ELSE PJT_CD END LIKE @PARAM_V ) 2015. 7. 29.
CASE WHEN END 값에 따른 분류 case @Value when 'R' then '0' when 'P' then '1' when 'E' then '2' when 'F' then '3' else '' end 2015. 7. 29.
실행계획 아이콘 설명 2015. 7. 29.
XML XML MS-SQL 2011.12.29. 11:27 수정 삭제 http://finalwarrior.blog.me/30127391470 전용뷰어 보기 XML 만들기 SELECT '' + (select * from TABLE00 (NOLOCK) for xml AUTO, elements) + '' FROM TABLE1 select (select * from SITE for xml Auto, elements) 2015. 7. 29.
DATEADD -일정 수 만큼 날짜 더하기 DATEADD 지정한 날짜에 시간 간격을 더하여 새 datetime 값을 반환합니다. 구문 DATEADD ( datepart , number, date ) 인수 datepart 새 값을 반환할 날짜 부분을 지정하는 매개 변수입니다. 다음은 Microsoft® SQL Server™에서 인식하는 날짜 부분과 약어입니다. 날짜 부분 약어 Year yy, yyyy quarter qq, q Month mm, m dayofyear dy, y Day dd, d Week wk, ww Hour hh minute mi, n second ss, s millisecond ms number datepart에 더해지는 값입니다. 정수가 아닌 값을 지정하면 값의 소수 부분이 무시됩니다. 예를 들어 datepart로 day, num.. 2015. 7. 29.
트랜잭션 격리 수준(SQL Server 2008, 트랜잭션과 잠금) 트랜잭션 격리 수준(SQL Server 2008, 트랜잭션과 잠금) SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; READ UNCOMMITTED : 커밋되지 않은 데이터도 포함해서 읽기 READ COMMITTED : 커밋되기 전까지 데이터 접근 못함. REPEATABLE READ : 공유잠금(select)이 걸려있는 상태에서는 update/delete는 불가. 하지만, insert는 가능함. SNAPSHOT : 공유잠금 상태에서도 insert가 가능하다. 실 TABLE에 저장을 하는게 아니라 TEMPDB에 저장을 한 다음에 commit되면 데이터를 이동 시킨다. SERIALIZABLE : REPEATABLE READ상태에서는 insert가 가능하다. insert.. 2015. 7. 29.
프로파일러를 사용해서 확인해 보았을 때 결과 창에서 Reads, CPU의 사용률이 작은데도 Duration이 크게 나오면 블로킹인 경우가 많다. 즉, CPU를 별로 사용하지도 않았는데 처리가 오래되었기 때문이다. 또한, Reads와 Duration이 모두 크다면 인덱스를 사용하지 않는 경우가 대부분이다. SQL Server 구문 분석및 컴파일 시간 set statistics time on 현재 메모리(프로시저 캐시 영역)으 내용을 모두 지움. DBCC FREEPROCCACHE sp_로 시작하는 프로시져 sp의 약자는 System Procedure의 약자로 해당 DB에 저장되는 것이 아니라 전역에 저장되어 해당 인스턴스의 모든 DB에서 사용가능하다. SET NOCOUNT ON 실행 컬럼수를 반환한다. sp.. 2015. 7. 29.
사용자 정의 함수(Function) 사용자 정의 함수(Function) Return문에 의해서 특정 값을 돌려주는 기능을 함. 예) CREATE FUNCTION UFN_GETAGE(@BYEAR INT) RETURNS INT AS BEGIN DECLARE @AGE INT SET @AGE = YEAR(GETDATE()) -@BYEAR RETURN @AGE END 호출시(스키마 이름을 지정하지 않으면 dbo를 붙여줘야된다.) SELECT DBO.UFN_GETAGE(2000) EXECUTE를 이용한 호출 DECLARE @RETVAL INT; EXEC @RETVAL = DBO.UFN_GETAGE 2000; PRINT @RETVAL 주로 테이블을 조회할 때 사용. SELECT DBO.UFN_GETAGE(SUBSTRING(USER_BIRTHDATE, .. 2015. 7. 29.
유용한 쿼리 날짜형식이 잘못된 데이터의 경우 날짜형식으로 바꾸는 쿼리 1. 날짜형식인지 체크 (0이 나오면 날짜타입이 아님) ex) select ISDATE('2011-12-15 오후 5:37:35') -- 한글이 들어간 경우 select ISDATE('2011-02-30') -- 날짜범위에 벗어난 경우 -- 날짜 형식이 잘못된 데이터 찾아내기 select * from 테이블 where isdate(날짜컬럼) = 0 2. 날짜타입에 한글이 들어가는 경우 2011-12-15 오후 5:37:35 2011-12-01 오전 9:50:06 ==> 먼저 한글 들어간 부분을 제거하고, 날짜형식으로 바꾼다. ==> 오후에 해당되면 12시간을 더해준다. SELECT case when CHARINDEX('후', wdate,1) > 0.. 2015. 7. 28.
stuff함수 row로 조회되는 특정 컬럼의 데이터를 ',' 등의 구분값으로 구분된 한개의 컬럼으로 조회하기.SELECT STUFF((SELECT ', ' + ENO FROM MM_TEST WHERE REQ_YMD = '20180717' FOR XML PATH('')) ,1,1,'') AS ENO 2015. 7. 28.
SQL 설정 관련 사용자 패스워드 변경 ALTER LOGIN userWITH PASSWORD=N'P@ssw0rd1' --락 걸린거 볼 때 컬럼 BlkBy 이 컬럼이 숫자 일경우 sp_who2 2015. 7. 28.
대용량에서 사용하는 SQL -- 삭제하는 부분 DECLARE @ROWS int SET @ROWS=10000; - 한번에 처리할 개수 DELETE TOP (@ROWS) 테이블명 WHERE삭제할 조건 ; WHILE @@ROWCOUNT = 10000 BEGIN DELETE TOP (@ROWS) 테이블명 삭제할조건 ; END; -- 업데이트 부분 DECLARE @ROWS int SET @ROWS=1000; - 한번에 처리할 개수 UPDATE TOP(@ROWS) 테이블명 SET gb_type ='Y' -- 수정할 부분 WHERE 조건 ; WHILE @@ROWCOUNT = 1000 BEGIN UPDATE TOP(@ROWS) 테이블명 SET gb_type ='Y' WHERE 조건 ; END; ----------------------------.. 2015. 7. 28.
순위함수 ROW_NUMBER() : 행별로 순위를 정함 DENSE_RANK() : 동일 순번일 경우 같은 순위를 줌 RANK() : 동일 순위가 여럿일 경우, 다음 순위에서 중복된 순위만큼 제거(1, 2, 3, 3, 5....) NTILE(2) : 순위별로 나열한 다음, 그룹으로 나눠야 할경우에 씀 숫자 2는 2개로 구분한다는 의미익 5일경우 5개로 N빵함. --order by 로 순위 지정 select ROW_NUMBER() over(order by document_yymm asc, document_ser desc) , * from MASTER_TBL --partition by로 부문별로 순위 지정(순위는 별도로 partition별로 지정됨) select ROW_NUMBER() over( partition by.. 2015. 7. 28.
오라클과 vs. MSSQL 함수비교 파일 참조 (인터넷상 퍼온자료) 2015. 7. 28.
스칼라 펑션(scalar function) 스칼라 펑션 ALTER FUNCTION [dbo].[UF_GetCodeMst] (@Code int) RETURNS varchar(50) WITH EXECUTE AS CALLER AS BEGIN DECLARE @gCodeName varchar(50) SELECT @gCodeName = Codename FROM CodeMst WHERE Code = @Code RETURN(@gCodeName) END; 2015. 7. 28.
반응형