MSSQL9 [MSSQL] OUTPUT INTO 원본 데이터 사용하기 데이터를 Insert할 때 특정 컬럼의 값이 유동적인 Default 값으로 Insert된다면 해당 값을 OUTPUT INTO 를 통해 inserted.{column_name} 으로 받아올 수 있다. 하지만 INSERT SELECT 를 하게 될 때에 SELECT한 값을 OUTPUT과 함께 받아오는 것은 불가능하다. 이 상황에 대안 방법으로 MERGE INTO를 사용하는 것이 고려된다. --소스 테이블CREATE TABLE sourceTable ( id int IDENTITY (1, 1) NOT NULL, data int NOT NULL);--타겟 테이블CREATE TABLE targetTable ( id int IDENTITY (1, 1) NOT NULL, data int NOT NULL);--소스, 타겟.. 2024. 5. 23. [MSSQL] 백업 압축 데이터베이스를 압축하며 백업하는 기능 장점 - 백업 데이터를 압축하여 디스크 I/O를 줄이고 백업시간을 단축함 - 디스크 공간을 절약할 수 있음 단점 - 일반 압축보다 많은 CPU 리소스를 사용하게 됨 (단 백업 시 사용되는 CPU 사용량 제한가능) 백업 압축은 백업쿼리에 WITH COMPRESSION 옵션을 추가하여 사용할 수 있습니다. 또는 서버 레벨에서 기본 값으로 백업 압축을 활성화할 수 있는데 기본값은 사용하지 않음으로 설정되어 있습니다. --일반 압축 BACKUP DATABASE SAMPLE_DB TO DISK = 'D:\SQL\BACKUP\SAMPLE_DB.BAK' WITH INIT GO --백업 압축 BACKUP DATABASE SAMPLE_DB TO DISK = 'D:\SQL\BACKUP.. 2023. 12. 3. [DB] Oracle에 MSSQL DB Link 생성 Oracle에서 mssql 서버를 연결하여 통신이 필요할 때 사용할 수 있습니다. 정보가 많이 없었는데 아래 출처의 블로그에 정리가 잘 되어있어 참고하여 작업하였습니다. (참고 블로그 : https://positivemh.tistory.com/626) 해당 포스팅은 Oracle DB에 mssql DB Link를 생성하는 글이며, mssql에서 오라클 DB에 연결할 때에는 Linked Server를 생성하여 사용해야 합니다. 작업한 내용을 정리하기 위해 포스팅 합니다. 서버간 통신을 위해 ODBC 설정을 해야합니다. (방화벽 접근권한이 허용되어있어야 합니다.) 아래 내용을 오라클이 설치된 리눅스 OS에서 작업합니다. 1. unixODBC를 설치합니다. # yum install unixODBC* 2. Fre.. 2023. 9. 2. [MSSQL] "already exists in the current database" 오류 해결 DB를 새로 복원하고 같은 사용자 이름으로 DB를 매핑하는 경우에 다음과 같은 오류가 발생할 수 있습니다. 복원된 DB에는 이미 기존 로그인 이름의 사용자 계정이 존재하기 때문에 DB의 해당 정보를 업데이트하거나 삭제시킨 후 등록하여야 합니다. 다음 쿼리를 통해 현재의 사용자 계정으로 매핑할 수 있습니다. USE exampledb --매핑할 DB GO ALTER USER exampleuser WITH LOGIN = exampleuser GO 2023. 7. 11. [MSSQL] 데이터베이스 파일(mdf, ldf) 파일경로 및 파일명 변경하기 데이터베이스 파일경로 및 파일명 변경 1. 작업 전 데이터베이스 속성을 확인 2. DB 오프라인 상태로 변경 ALTER DATABASE TESTDB set OFFLINE --DB Offline 상태로 변경 (실행 안될때는 WITH ROLLBACK IMMEDIATE 추가) GO 3. 윈도우 탐색기로 경로 및 파일명 변경 4. 변경된 파일경로 및 파일명으로 적용 ALTER DATABASE TESTDB MODIFY FILE (NAME = TESTDB1, --논리적 이름 FILENAME = 'C:\DB\data\TEST_CHANGE.MDF') --변경할 파일 경로 및 파일명 GO 5. DB 온라인 상태로 변경 ALTER DATABASE TESTDB SET ONLINE GO 2023. 7. 8. [MSSQL] ODBC 연결 설정 Sql Server ODBC 연결 설정하는 방법. 1. ODBC 검색해서 ODBC 데이터 원본 실행 2. 드라이버에서 Sql Server 존재 확인 (없다면 드라이버 설치) 3. DSN에서 추가 버튼 클릭 4. 새 데이터 원본 만들기에서 SQL Server 드라이버 선택 후 마침 5. DB이름, 설명 그리고 서버를 지정 (서버만 정확하게 입력하면됨) 6. DB 계정을 입력(서버 계정아님) 7. 기본 데이터베이스를 선택 8. 마침 후 데이터 원본 테스트를 눌러 연결 여부 확인 9. 테스트가 성공했다면 확인누르면 완료 10. 연결된 DB를 확인 2023. 7. 3. [MSSQL] 인덱스 조각화/리빌드 인덱스 조각화는 데이터베이스에서 인덱스 내부의 데이터 페이지가 물리적으로 분산되어 저장되는 현상을 의미합니다. 이는 데이터베이스의 성능에 부정적인 영향을 미칠 수 있습니다. 인덱스는 데이터베이스에서 검색 작업을 빠르게 수행하기 위해 사용되는 구조로, 데이터의 논리적인 정렬 순서를 유지하고 검색 속도를 향상시킵니다. 그러나 데이터가 추가, 수정 또는 삭제되면 인덱스의 조각화가 발생할 수 있습니다. 인덱스 조각화는 주로 두 가지 형태로 나뉩니다. 1. 내부 조각화 (Internal Fragmentation): 내부 조각화는 인덱스 페이지 내에서 빈 공간이 발생하는 경우를 말합니다. 예를 들어, 인덱스 페이지에 데이터를 추가하거나 삭제하면 해당 페이지의 공간이 남을 수 있습니다. 이렇게 발생한 빈 공간은 검색.. 2023. 5. 2. [MSSQL] 특정 구간의 날짜 더미데이터 만들기 (with CTE) 특정 구간의 날짜 더미데이터가 필요한 경우 CTE를 사용하여 다음과 같이 만들 수 있습니다. DECLARE @start_time datetime = '20230401 00:00:00' --첫 날짜 DECLARE @end_time datetime = '20230401 23:00:00'; --마지막 날짜 DECLARE @time_diff int = 1; --설정할 시간 간격 WITH cte AS ( SELECT 0 AS n UNION ALL SELECT n + @time_diff FROM cte WHERE n < DATEDIFF(HOUR, @start_time, @end_time) -- HOUR 대신 다른 시간 단위 설정가능 ) SELECT DATEADD(HOUR, n, @start_time) FROM ct.. 2023. 4. 17. [NodeJS] NestJs MSSQL 연결하기 작업환경 : node v16.19.1, nest v9.2 npm에서 mssql, @types/mssql 패키지를 설치합니다. (typescript환경이 아니라면 @types/mssql은 설치안하셔도 됩니다. 저는 nestjs를 사용했기 때문에 설치했습니다.) npm i mssql @types/mssql 제가 설치한 버전입니다. "mssql": "^9.1.1", "@types/mssql": "^8.1.2", root에 dbconfig.ts 파일을 만들고 접속정보를 입력해줍니다. (※dbconfig.ts는 꼭 gitignore에 등록해서 git서버에 올라가지 않도록 주의합니다) //dbconfig.ts export const mssqlDbConfig = { user: 'USER', password: 'PAS.. 2023. 3. 24. 이전 1 다음 반응형