본문 바로가기

SQL Server

[SQL Server]T-SQL DatePart 와 dayoyear 이용한 일수 계산하기 날짜 계산하는 함수들이 많다. 최소의 코딩으로 하는 방식을 스스로 찾아야 할 것 같다. --This method will work on SQL server 2005 and above. DECLARE @year AS INT SET @year=2012 SELECT DATEPART(dy,(DATEADD(YEAR,@year-1899,0)-1)) AS [TOTAL NO OF DAYS] GO --This technique will work in SQL Server 2012 and above. DECLARE @year AS INT SET @year=2012 SELECT DATEPART(dy,DATEFROMPARTS(@Year,12,31)) AS [TOTAL NO OF DAYS] go DECLARE @year AS I.. 더보기
[SQL Server] CTE를 이용한 재귀쿼리 작성 및 동작방식 CTE Recursion Query, SQL Server, CTE 쿼리를 작성하지 않은지 오래되어서 정말 어렵기도 하고 버전이 올라갈수록 쿼리기능들이 향상되어서 공부하지 않으면 절대 모르겠다. CTE 는 다음에 연재하도록 하고 CTE를 통한 재귀 CTE를 작성해보자. -- CTE 의 재귀쿼리 생성하기 사용처 : 조직도 생성하기 블로그 카테고리 만들기 즉, 상위 하위 집합에 대한 연관성 생성할때 사용한다. 예제) use tempdb go -- DROP TABLE Employee; CREATE TABLE Employee (Employee_id INT PRIMARY KEY, EmployeeName VARCHAR(100), Manager_id INT ); GO INSERT INTO Employee VALUES .. 더보기
SQL Server Stored Procedure, CTE Recursion Limit (재귀횟수제한) Recursion(재귀) 호출 시 반복 횟수가 제한이 있다. 아래 예제를 통하여 확인해 보자. #.1 Stroed Procedure use tempdb go CREATE PROCEDURE recurseProc (@cnt int) AS BEGIN PRINT @cnt; SET @cnt += 1; EXEC recurseProc @cnt; END; GO -- Procedure 생성 후 아래 실행해보자. EXEC recurseProc 1; /* 1 2 3 . . 31 32 메시지 217, 수준 16, 상태 1, 프로시저 recurseProc, 줄 70 저장 프로시저, 함수, 트리거 또는 뷰의 최대 중첩 수준(32)을 초과했습니다. */ #.2 CTE (Common Table expression) : 공통 테이블 .. 더보기
[MSSQL] 모든 테이블 크기 정보를 한눈에 보자 exec sp_sapceused [TableName] 실행하면 해당 테이블의 테이블행수, 테이블크기, 인덱스크기등을 확인 할 수 있다. 하지만 한 개의 테이블의 정보만 확인 할 수 있다. 아래와 같이 sp_Msforeachtable 프로시져를 사용하여 해당 데이터베이스의 테이블 전체의 정보를 확인 할 수 있다. 원래 내가 하고 싶었던 것은 아래와 같이 템프성 테이블들이 10000개정도 있을때 행수가 없는 테이블들을 삭제하고 싶어서 아래 쿼리를 사용을 하였다. CREATE TABLE #TableSize ( Name varchar(255), [rows] int, reserved varchar(255), data varchar(255), index_size varchar(255), unused varchar(.. 더보기
[MSSQL]SQL Server DAC-관리자 전용 연결 원격 DAC 기본값 : 0 설정방법 EXEC sp_configure 'remote admin connections', 1 RECONFIGURE 정의 : 원격지에서 해당 서버로 DAC 접근을 허가하는 옵션이다. 해당 옵션을 설정하지 않을 경우에 외부에서 접근이 어려우나 로컬에서는 호스트명으로 접근이 가능하다. 내부에서는 127.0.0.1 로 1434로 가동이 되기에 ?? SQL Server는 DAC(관리자 전용 연결)를 제공합니다. DAC를 사용하면 서버가 잠겨 있거나 비정상적인 상태로 작동 중이어서 SQL Server 데이터베이스 엔진 연결에 응답하지 않는 경우에도 관리자가 실행 중인 서버에 액세스하여 진단 기능 또는 Transact-SQL 문을 실행하거나 서버의 문제를 해결할 수 있습니다. 기본적으로 .. 더보기
[MSSQL] 클러스터 환경에서 SQL Server 단일모드 시작하기 SQL Cluster 환경일 경우에 단일모드를 하는 방법에 있어서 재미난 사실을 알았다. 그 동안 경험이 없는 터라 몰랐던 사실일뿐이다. 일반적은 StandAlone SQL Server 환경일 경우에는 단일모드 시작 후 SSMS 로 접근이 가능하다. 그러나 클러스터 환경일 경우에는 조금 차이가 있다. 우선, 단일모드란? 사용자 한명만 서버에 연결하는 모드이며, 서버 구성 옵션을 변경하거나 손상된 master 데이터베이스 또는 다른 시스템 데이터베이스를 복구할때 시작하는 모드이다. 단일모드 시작 시 주의사항 Stop the SQL Server Agent service before connecting to an instance of SQL Server in single-user mode; otherwise,.. 더보기
[MSSQL] sqlcmd 유틸리티 사용시 쿼리결과를 텍스트파일로 저정하는 방법 sqlcmd을 사용하는 것은 장애 발생시 보통 사용하게 된다. 그런데 sqlcmd는 윈도우 명령프롬프트 창에서 수행하기에 쿼리에 결과를 볼때 어려움이 있다. 그래서 아래와 같이 sqcmd로 접속하여 쿼리를 수행할때 해당 결과를 txt 파일로 저장하는 방법이 있다. 예) sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt 또는 C:\Windows\system32>sqlcmd -E -Ss2012sql -o c:\txt.txt 1> select @@version 2> go 1> select * from sys.dm_exec_sessions 2> go 1> select * from sys.master_files 2> go 위와 같.. 더보기
failed installing SQL Server 2008 RTM on Windows 2008 R2 Windows Server 2008 R2 에 SQL Server 2008 RTM 을 설치할 경우 아래와 강튼 오류가 발생된다. Standalone SQL or Cluster SQL 설치할때 발생할 것으로 보인다. SQL 설치시 아래와 같은 조건을 맞게 설치하는것이 신상에 좋을 것 같다. SQL Server 버전보다 윈도우 버전이 높을 경우에는 조심하는것이 좋을 것 같다. 이런 경우에는 SQL Spipstream Install 방식으로 설치를 하자. Windows Server 2008R2 에서 SQL Server 2008 RTM + SP1 SQL Server 2005 RTM + SP3 를 함께 설치하자. [참고문서] http://support.microsoft.com/kb/955725 http://wadi.. 더보기