DBMS 39

[SQL Server / MS-SQL] 데이터베이스 복원 실패 (WITH MOVE 옵션)

1. 오류발생 1 RESTORE DATABASE CRM FROM DISK = 'E:\BACKUP\CRM_backup.bak' cs 위와 같이 데이터베이스 복원을 시도하였으나, 아래와 같은 오류가 발생했다. Msg 5133, Level 16, State 1, Line 1 운영 체제 오류 3(지정된 경로를 찾을 수 없습니다.)(으)로 인해 파일 "M:\DATA\CRM.mdf"에 대한 디렉터리를 조회하지 못했습니다. Msg 3156, Level 16, State 3, Line 1 파일 'Log_Data'을(를) 'M:\DATA\CRM.mdf'(으)로 복원할 수 없습니다. WITH MOVE를 사용하여 올바른 파일 위치를 확인하십시오. Msg 5133, Level 16, State 1, Line 1 운영 체제 오..

[SQL Server / MS-SQL] count(*) / count(1) / count(column) 차이

먼저 count( ) 함수 란? 집계함수로, ( ) 내의 있는 항목의 수를 출력한다. 즉, count(name) 의 경우 name 이라는 컬럼의 갯수를 나타낸다는 의미이다. count(*) 은 전체 행 수를 나타내며, count(1) 과 같은 의미이다. 어디서 count(1) 이 count(*) 보다 더 빠르다고 들었어서 count(1) 을 썻던 적이 있는데 결론적으로 성능적 차이 없다. 둘이 동일하다고 보면된다. count(*) = count(1) 대신 count(*) / count(1) 과 count(name) 은 다르다. NULL 값을 포함하냐 마냐의 차이가 있다. count(*) 과 count(1) 은 NULL 값인 컬럼도 포함하지만, count(name) 은 NULL 값인 컬럼은 포함하지 않는다..

[SQL Server] 특정 테이블 정보 (컬럼명, 데이터타입, Null여부) 조회

특정 테이블 정보 (컬럼명, 데이터타입, Null여부) 조회 테이블명세서를 작성하거나 테이블의 컬럼에 대한 정보를 한 눈에 보고 싶을 때 아래 쿼리를 이용해서 조회할 수 있다 :) SELECT ORDINAL_POSITION AS [No], COLUMN_NAME AS [Column], COLUMN_DEFAULT AS [Comment], DATA_TYPE AS [DataType], IS_NULLABLE AS [Null] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '테이블명'

[SQL Server] Error - The data types varchar and datetime2 are incompatible in the add operator.

The data types varchar and datetime2 are incompatible in the add operator. PRINT ('TIME : ' + SYSDATETIME()); 이 쿼리를 실행하면 위와 같은 오류가 난다. 오류가 나는 이유는 '소요시간' 은 데이터타입이 문자인 varchar 이고, SYSDATETIME() 은 시간인 datetime2 인데 이 두 개를 + 라는 연산자로 연결해주려하여 오류가 난 것이다. (*GETDATE() 도 마찬가지) 이 오류를 해결하기 위해서는 데이터타입을 맞춰주어야 한다. 즉, SYSDATETIME() 을 CONVERT 함수를 통해 문자열함수로 바꿔주면 된다 :) 일자를 변환하는 방식은 무수히 많지만, 나는 CONVERT(VARCHAR(23), ..

[MySQL] Error - bash: mysql: command not found

"Error - bash: mysql: command not found" 위 오류는 mysql 명령어를 찾을 수 없을 때 발생하는 오류이다. 위 오류가 발생하는 이유는 명령어의 경로를 환경변수로 지정해주지 않아서 발생한다. ■ 해결방법 1. /usr/local/mysql/bin 로 이동 후 ./mysql 이라는 명령어로 실행 bin 폴더에 mysql 이라는 명령어가 있기 때문에 직접 이동 후 실행하여 해결할 수 있다. [root@iZbp19 ~]# cd /usr/local/mysql/bin [root@iZbp19 bin]# ./mysql -u root -p 2. 환경변수에 mysql 명령어 경로 추가 환경변수 파일 편집 [root@iZbp19 ~]# vi /etc/profile profile 파일 제일 ..

DBMS/MySQL 2019.09.20

[SQL Server / MS-SQL] Error - An explicit value for the identity column in table 'POST' can only be specified when a column list is used and IDENTITY_INSERT is ON.

Msg 8101, Level 16, State 1, Line 12An explicit value for the identity column in table 'POST' can only be specified when a column list is used and IDENTITY_INSERT is ON.   위 오류는 identity 속성이 적용된 테이블에 insert 를 하려고 할 때 발생하는 오류이다.identity 은 자동으로 값을 늘려주는 기능으로 identity 로 설정한 컬럼은 insert 마다 자동으로 값이 증가한다. 그런데 내가 만약 identity 값을 지정하고 싶을 때, identity 컬럼에 값을 직접 넣어주면위와 같은 오류가 발생한다. 예를 들어,컬럼 S..

[SQL Server / MS-SQL] Error - Arithmetic overflow error converting expression to data type int.

SELECT SUM(gold) FROM bank Msg 8115, Level 16, State 2, Line 39 Arithmetic overflow error converting expression to data type int.  데이터타입이 int 인 컬럼의 모든 합 (sum) 을 구하다가 int 타입의 최대 크기를 초과해서 발생하는 오류메시지이다.이를 해결하기 위해서 데이터타입을 더 크게 바꿔주어야 한다.   SELECT SUM(CAST(gold AS bigint)) FROM bank 위와 같이 int 타입의 형식을 bigint 로 변경해주면 해결!

[SQL Server / MS-SQL] 특정컬럼이 포함된 테이블 조회

수많은 테이블을 가지고 있는 데이터베이스에서 원하는 컬럼이 포함된 테이블들만 조회하고 싶을 때,아래의 시스템 테이블들을 이용하여 조회할 수 있다.1234SELECT a.name AS 테이블명, b.name AS 컬럼명  FROM sys.tables a INNER JOIN sys.columns b ON a.object_id = b.object_id  WHERE b.name = '원하는컬럼명' cs    예를 들어 보자.bank 라는 데이터베이스에서 gold 라는 컬럼을 가진 테이블을 모두 조회하고 싶다.이럴 경우 아래와 같이 조회 할 수 있다.12345678-- bank 데이터베이스로 이동 USE ba..

[SQL Server / MS-SQL] Windows7 - SQL Server 2016 / 2017 설치 안됨 (불가)

윈도우7 인 내 PC 에서 Microsoft SQL Server 2017 을 설치하려고 했더니 아래와 같은 메세지가 노출되었다.   처음엔 내 PC 사양이 문제인지 알았는데알고보니 SQL Server 2016 부터 윈도우7 이 지원되지 않는다고 한다.SQL Server 2017 역시 윈도우7 을 지원하지 않는다. (윈도우8 부터 지원) SQL Server 2016 이나 SQL Server 2017 을 사용하기 위해서는윈도우8 이상으로 OS 를 업그레이드하거나 Virtual Machine 을 통해 리눅스버전을 이용해야 할 것 같다.    * Docs 참고https://docs.microsoft.com/en-us/sql/sql-server/install/hardwar..