본문 바로가기

SQL Server

(82)
[SQL Server] Database Landscape Map Database Landscape Map DBMS 종류가 엄청 많네요. 출처 : http://blogs.the451group.com/information_management/2012/12/20/database-landscape-map-december-2012/
[SQL Server] 파일 그룹별 Object 및 Object의 Index 정보 리스트 파일 그룹별 Object 및 Object의 Index 정보 리스트 sys.filegroups, sys.indexes, sys.database_files, sys.data_spaces 시스템 카탈로그를 사용하여 파일 그룹별 Object 및 Object의 Index 정보를 볼 수 있는 쿼리를 만들어보자. SELECT OBJECT_NAME(i.[object_id]) AS [ObjectName] ,i.[index_id] AS [IndexID] ,i.[name] AS [IndexName] ,i.[type_desc] AS [IndexType] ,i.[data_space_id] AS [DatabaseSpaceID] ,f.[name] AS [FileGroup] ,d.[physical_name] AS [DatabaseF..
[SQL Server] 특수문자 제거하는 함수 특수문자 제거하는 함수 특수문자를 제거하는 함수를 만들어보자. CREATE FUNCTION DBO.REMOVE_SPECIAL_CHARS ( @S VARCHAR(256)) RETURNS VARCHAR(256) BEGIN IF @S IS NULL RETURN NULL DECLARE @S2 VARCHAR(256) DECLARE @L INT DECLARE @P INT SET @S2 = '' SET @L = LEN(@S) SET @P = 1 WHILE @P
[SQL Server] OBJECT_ID 함수를 이용한 개체 존재 여부 확인 OBJECT_ID 함수를 이용해서 개체의 존재 여부를 확인 후 개체를 삭제해 보자. 오라클의 경우 CREATE OR REPLACE 를 사용하면 CREATE 할 때 기존에 같은 이름의 개체가 있으면 REPLACE 하고 개체가 없으면 CREATE 하는 기능이 있지만 MS SQL Server 에는 없다. 테이블에 개체 ID가 있는지 확인해서 지정한 테이블이 있는지 확인한다. 테이블이 있는 경우 삭제되고, 테이블이 없는 경우 DROP TABLE 문이 실행되지 않는다. USE AdventureWorks2008R2; GO IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL DROP TABLE dbo.AWBuildVersion; GO OBJECT_ID 함수 내의 dbo...
[SQL Server] where 절에서는 별칭(alias)을 사용할 수 없다. where 절에서는 별칭(alias)을 사용할 수 없다. 하지만 order by 절에서는 별칭뿐 아니라 컬럼의 순서에 해당하는 숫자도 사용할 수 있다. CREATE TABLE dbo.ALIAS_TEST ( NUM INT IDENTITY(1,1) , NAME CHAR(6) ) INSERT INTO dbo.ALIAS_TEST VALUES ('BANANA') INSERT INTO dbo.ALIAS_TEST VALUES ('ORANGE') INSERT INTO dbo.ALIAS_TEST VALUES ('APPLE') -- 별칭을 사용하면 열 이름이 잘못 되었다는 오류 발생 SELECT NUM, NAME AS N FROM dbo.ALIAS_TEST WHERE N = 'BANANA' -- 검색 가능 SELECT N..
[SQL Server] 산술 오버플로 오류 expression을(를) 데이터 형식 int(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다. int형의 범위를 초과하여 발생한 경우로 더 큰 데이터 형식(bigint)으로 변환하면 문제가 해결된다. -- INT형 컬럼을 가진 테이블 생성 CREATE TABLE TEST ( COL1 INT NOT NULL IDENTITY(1,1) , COL2 INT ) -- 데이터 삽입(두 값을 SUM 하였을 경우 INT형의 범위를 초과하게 삽입) INSERT INTO TEST VALUES ('2000000000'), ('2000000000') -- 두 값을 SUM 하였을 경우 산술 오버플로 오류 확인 SELECT SUM(COL2) FROM TEST -- CONVERT나 CAST로 INT형을 BIGINT형으로 변..
[SQL Server] Index Depth 확인하기 Index Depth 확인하기 -- 테이블 생성 CREATE TABLE DBO.TEST_INDEXDEP ( COL1 CHAR(20) , COL2 CHAR(800) ) GO SET NOCOUNT ON DECLARE @I INT = 1 WHILE(@I
[SQL Server] SET 문 SET(Transact-SQL) 특정 정보를 처리하는 현재 세션을 변경할 수 있는 몇 가지 SET 문을 제공 날짜 및 시간 문 SET DATEFIRST 일주일의 첫 번째 요일을 1부터 7까지의 숫자로 설정 SET DATEFORMAT datetime 또는 smalldatetime 데이터 입력에 대한 날짜 부분의 순서(월/일/년도)를 설정 잠금 문 SET DEADLOCK_PRIORITY 현재 세션이 다른 세션과 교착 상태에 있는 경우 현재 세션이 계속 실행되도록 하는 상대적 중요도를 지정 SET LOCK_TIMEOUT 잠금이 해제될 때가지 문이 기다려야 할 시간(밀리초)을 지정. -1(기본값)은 제한 시간이 없음(무기한 대기) 0은 기다리지 않음을 나타내고 잠금이 있으면 바로 오류 메시지가 반 기타 문 SE..