본문 바로가기
728x90
반응형

Skills/MsSQL15

[Error] 연결된 서버 \"서버명\"의 OLE DB 공급자 \"공급자명\"에 대해 중첩 트랜잭션을 시작할 수 없습니다. {"연결된 서버 \"서버명\"의 OLE DB 공급자 \"공급자명\"에 대해 중첩 트랜잭션을 시작할 수 없습니다. XACT_ABORT 옵션이 OFF로 설정되어 있으므로 중첩 트랜잭션이 필요합니다.\r\n커밋할 수 없는 트랜잭션이 일괄 처리 맨 끝에서 검색되었습니다. 트랜잭션이 롤백됩니다.\r\n연결된 서버 \"서버명\"의 OLE DB 공급자 \"공급자명\"이(가) 메시지 \"이 세션에서는 트랜잭션을 더 이상 시작할 수 없습니다.\"을(를) 반환했습니다."} 연결된 서버에 접근해서 Insert하는 프로시저를 동작하는 과정에서 ASP.NET 서버 프로그램에서 발생한 에러이다. SSMS(SQL Server Management Studio) 상에서는 잘 동작될 수도 있지만, 프로그램 상에서 발생할 수 있는 에러인.. 2023. 9. 21.
MSSQL PK 제약조건 생성하는 법 PK 제약조건은 수정할 수 없고, 삭제하고 재 생성하는 방식을 사용한다. // PK 생성 방법 ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY (컬럼명) ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] PRIMARY KEY ([칼럼1], [칼럼2], [칼럼3] ...) // PK 변경 방법 // 1. PK 삭제 ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 // 2. PK 재생성 ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY ([칼럼1], [칼럼2]) 2023. 9. 18.
MSSQL 데이터베이스, 테이블, 컬럼, 제약조건 정보 조회 // 전체 데이터베이스 조회 SELECT * FROM SYS.SYSDATABASES // 테이터베이스 테이블 정보 확인 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG = '' // 테이블 컬럼 정보 확인 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '' // 테이블 제약조건 확인 SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = '' 2023. 9. 18.
동적 쿼리 사용 이유, 예시, 장단점, 플랜캐시, 주의점 흔히 동적 쿼리, 다이나믹 쿼리라는 것이 존재한다. 언제 동적 쿼리를 사용하는 걸까? 동적 쿼리는 주로 비즈니스 로직이 복잡해져서 where 조건절에서 조건이 너무 다양해지고 많아지는 경우, 유용하게 사용할 수 있다. 예를 들면, 검색이나, 페이징 처리 등의 상황이 있다. 그렇다면 예시를 살펴보자. 아래 예시는 @MinPrice 및 @MaxPrice 매개 변수에 따라 제품 테이블에서 가격 범위 내의 제품을 검색하는 쿼리이다. 예시) DECLARE @MinPrice DECIMAL(10, 2) = 100.00 DECLARE @MaxPrice DECIMAL(10, 2) = 500.00 DECLARE @DynamicSQL NVARCHAR(MAX) SET @DynamicSQL = N' SELECT ProductN.. 2023. 9. 6.
WHERE 1=1 조건절 사용 이유 "WHERE 1=1" 조건절은 항상 참인 조건을 나타낸다. 항상 참을 나타내는 조건을 왜 굳이 넣는걸까? 크게 2가지 이유가 있는 것 같다. 동적 쿼리 "WHERE 1=1"을 사용하면 동적 쿼리의 WHERE 절에 조건을 쉽게 추가하거나 제거할 수 있다. 또한 가독성과 유지보수에도 좋다. 예시) DECLARE @DynamicSQL NVARCHAR(MAX) = N' SELECT Column1, Column2 FROM MyTable WHERE 1=1' -- 동적으로 조건 추가 IF @Condition1 = 1 BEGIN SET @DynamicSQL = @DynamicSQL + N' AND Column1 = @Value1' END IF @Condition2 = 1 BEGIN SET @DynamicSQL = @D.. 2023. 9. 6.
SQL Server 테이블, 프로시저 조회 해당 특정 데이터베이스에 저장된 모든 데이터 개체에 대한 메타데이터가 들어 있는 정보 스키마 뷰는 INFORMATION_SCHEMA라는 이름으로 정의되어 있다. INFORMATION_SCHEMA는 각 데이터베이스에 존재한다. // 테이블 조회 select * from INFORMATION_SCHEMA.TABLES // 프로시저, 함수 조회 select * from INFORMATION_SCHEMA.ROUTINES 출처) https://learn.microsoft.com/ko-kr/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql?view=sql-server-ver16 시스템.. 2023. 9. 6.
728x90
반응형