테이블 및 컬럼 설명 추가/수정/조회/삭제 통합
·
DB/SQLServer
MSSQL 환경에서 테이블에 주석을 작성할 수 있는 내장 프로시저가 있다.sp_addextendedproperty 또는 sp_updateextendedproperty 뭔가 이름에서 부터 길어서 선뜻 손이 가질 않는다.https://learn.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql?view=sql-server-ver16그래서 테이블에 설명에 대해 추가/수정/조회/삭제를 통합한 프로시저를 만들어 보았다. 프로시저 이름도 매우 짧게 작성했기에 이름이 오묘할 수 있다.사용자에 맞게 프로시저 이름을 바꿔서 사용하자그리고 주의할 부분은 로그인 계정의 테이블 스키마 접..
엑셀파일을 =CONCATNATE() 함수를 통해 밀어 넣기
·
DB/SQLServer
몇년전에 핸드폰 메모장에 적어놨던 것을 우연하게 찾아서 포스팅 함운영업무를 하다보면 현업에서 엑셀파일을 던져주며 일괄로 등록해 달라고 요청할때가 있다.이때 대략 두가지 방법 중 하나룰 선택하여 밀어넣게 되는데 하나는 엑셀데이터가 방대할때 SQL에서 제공하는 벌크카피를 이용하는 것이고두번째 방법은 적당한 10 ~ 수백건 정도는 엑셀파일에 함수 수식을 붙여 쿼리문을 만드는방법을 택할 수 있다.이 중 두번째 방법에 대해 설명한다. https://support.microsoft.com/ko-kr/office/concatenate-%ED%95%A8%EC%88%98-8f8ae884-2ca8-4f7a-b093-75d702bea31d 1. 이런 데이터를 받았다고 가정한다.진짜 넣어야 할 데이터는 A2 부터 B2 , C..
Merge 문을 통해 단일 테이블 Insert/Update/Delete 프로시저 생성
·
DB/SQLServer
https://learn.microsoft.com/ko-kr/sql/t-sql/statements/merge-transact-sql?view=sql-server-ver16 MERGE(Transact-SQL) - SQL ServerMERGE(Transact-SQL)learn.microsoft.com Merge 구문은 SQL Server 2008 부터 지원하며 ,  하나의 테이블에 대해 작업을 할 수 있다.프로젝트를 다니다 보면 .NET 개발의 경우 대부분 프로시저를 많이 사용한다.그렇기에 프로시저 구문을 보면 MyProcedure_IU 이런식으로 접미사를 붙여서 관리하는 케이스를 보게 되는데,대상의 등록, 수정, 삭제 테이블이 1개라면 단순하게 Megre를 사용하는것도 방법이다.1. 기본 Merge 사용법..
프로시저에 TRY/CATCH 와 트랜잭션
·
DB/SQLServer
ASP.NET의 개발을 보면 EF와 같은 ORM 편리한 기능도 있지만DB 데이터를 직접적으로 제어하기 위해 SQL을 사용한다면 프로시저를 사용하는 경우가 더 많다.예를 들어 INNER JOIN + OUTER JOIN의 조합이 섞인 JOIN 테이블이  5개가 넘어가고테이블 하나의 데이터가 3000만건이 넘는 상황이며 매개변수 값에 따라 ORDER BY 의 형태가 여러 형태면ORM으로 속도 개선을 하는데 어려움이 있기에 프로시저를 사용하는 케이스가 많다.그리고 규모가 있는 프로젝트에서는 DBA에게 쿼리 관련 도움을 받아야 하기 때문에 ORM을 사용하지 않는 경우도 있다. 그렇기에 프로시저안에서 TRY/CATCH 와 트랜잭션을 거는 예시를 살펴보자 1. C# 프로그램 TRY/CATCH 와 트랜잭션 작성 예시 ..
Poor Man's T-SQL Formatter SSMS 쿼리 들여쓰기 정리
·
DB/SQLServer
[2024.08]- 아래 기능은 SSMS 버전이 올라가고 작동하지 않습니다.https://poorsql.com/ 의 웹 버전을 이용하세요   ------------------------------ ------------------------------ ------------------------------ [SSMS 19,20 버전은 작동하지 않는 문제가 있습니다. 블로그를 방치했더니.... ]  출처 : http://architectshack.com/PoorMansTSqlFormatter.ashx#Download_5 Poor Man's T-SQL Formatter - Architect ShackOverview This is a free and open-source SQL (T-SQL) formatter..
비트 연산
·
DB/SQLServer
체크박스의 값 들을 하나의 행으로 저장하고 싶을 때 비트 연산을 사용한다. 1. 준비 작업 - CourseCode 가 추가될 때 마다 배수로 값을 넣어준다 (1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 64 -> 128 -> 256...)CREATE TABLE #T1 ( CourseName varchar(10), CourseCode bigint)INSERT #T1 VALUES ('광고' ,1)INSERT #T1 VALUES ('홍보' ,2)INSERT #T1 VALUES ('전단지' ,4)INSERT #T1 VALUES ('지인추천' ,8)INSERT #T1 VALUES ('프로모션' ,16)INSERT #T1 VALUES ('기타' ,32) 2. 위 테이블에서 "전단지" 만 선택했을 때..
DB내 프로시저/함수/뷰 내 속해있는 문자열 검새
·
DB/SQLServer
출처 : https://stackoverflow.com/questions/14704105/search-text-in-stored-procedure-in-sql-server 디버깅을 위해 프로시저 내에서 문자열을 주로 테이블명을 기준으로 문자열을 찾게 되는데간간히 사용하다 보니 이 구문을 외울 수 없다는게 함정 해당 프로시저를 생성해 두고SSMS 키보드 단축키에 넣고 사용하면 나름 유용하다. 단 시스템 테이블 접근권한이 있는 사용자만 가능 결과 :CREATE PROCEDURE SP_Search @strFind AS varchar(MAX)ASBEGIN SET NOCOUNT ON; -- 모든 프로시저에서 문자열을 찾을떄 BEGIN SELECT OBJECT_NAME(OBJECT_I..
DB에 속한 테이블 용량 및 사이즈를 알아보기
·
DB/SQLServer
DB가 빠르게 유지되는 방법론 중 가장 확실한 것은인덱스도 실행계획도 중요하지만, 쓸데없는 데이터를 지우는 것... (나만의 생각??)여튼.. 정리를 하기 위해 2가지 방법으로 테이블의 사용량을 비교해 본 후, 오래된 데이터를 지우거나 백업DB에 옮기는 방법을 사용해 본다. 단 로그인한 계정이 시스템 테이블 접근 권한이 있어야 함  1. DB에 속한 전체 테이블의 RowCount(행) 수를 알아보기 SELECT c.name + '.' + a.name AS TableName ,SUM(b.rows) AS [RowCount]FROM sys.tables AS a INNER JOIN sys.partitions AS b ON b.OBJECT_ID = a.OBJECT_ID INNER JOIN sys.schemas..