본문 바로가기

sqlserver

[SqlServer] @@IDENTITY 의문점들 후배와 ID열에 관련 대화를 하다가 SqlServer에 ID열이 자동 저장된 후 그 ID 데이터를 알수 있는 전역변수에 대해 생각났다. @@IDENTITY --이것이다! 이 변수는 자동증가형 ID 열에 마지막으로 삽입된 값을 보여준다. 이때 궁금한 점이 2개가 생겼다. 첫번째는 트랜젝션을 잡아두고 INSERT 할때 그 트랜젝션이 끝나지 않았을때 다른 트랜젝션에서 INSERT를 시도 하면 @@IDENTITY값은 무엇일까? 두번째는 INSERT를 다중으로 할때 중간에 INSERT 한 IDENTITY는 어떻게 알수 있을까? 우선 테이블을 하나 생성하고 테스트를 시작했다. CREATE TABLE [dbo].[TestIdentity]( [Id] [int] IDENTITY(1,1) NOT NULL, [data] [..
[SqlServer] 트랜잭션 로그 줄이기 SQL Server Management 에서 작업>축소>파일 로 해서는 줄어들지가 않는다. ㅡㅜ 아래와 같은 스크립트를 통해서 줄일수 있었다. Backup Log "DB명" With no_log DBCC SHRINKFILE ("논리적 로그명", 줄어들 MB) Backup Log Dentop With no_log DBCC SHRINKFILE (SetUpDB_log, 10) DB명이랑 논리적 이름은 다를수가 있다. 이 스크립트를 실행하면 로그가 10MB로 줄어들게 된다. //덧붙임 2010.3.8 SQL Server 데이터베이스 속성 - 파일 - 로그의 자동 증가 사용을 체크 해제 하면 로그가 증가 하지 않는줄 알았으나 전혀 상관 없었다. 적절한 최대 파일크기를 주어 자동증가 하게 하여야 한다.
[SqlServer] Install SQL Server 2005 from the Command Prompt 배포하는 프로그램에 SQL Server 2005가 함께 들어가야 할 경우 인스턴스와 비번을 인스톨시에 매번 쳐주는건 귀찮은 일이다. 그래서 설치시 커맨드 라인에 매개변수를 함께 주면 그런 작업을 안해도 된다. Start /wait \servers\setup.exe /qb INSTANCENAME= ADDLOCAL=All PIDKEY= SAPWD= SQLACCOUNT= SQLPASSWORD= AGTACCOUNT= AGTPASSWORD= SQLBROWSERACCOUNT= SQLBROWSERPASSWORD= 이것이 매개변수 사용 구문이고 아래가 간단하게 사용한 예제다. Start /wait c:\tempsql\sqlexpr32.exe /qb INSTANCENAME=MSSQLSERVER SAPWD=pwd SKUU..
[SqlServer] SET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL 에 대해서 한 연결에서 실행한 SELECT 문에 대한 기본 트랜잭션 잠금 동작을 제어함. 설정 구문 SET TRANSACTION ISOLATION LEVEL […] è READ COMMITTED è READ UNCOMMITTED è REPEATABLE READ è SERIALIZABLE è SNAPSHOT 1) READ COMMITED DATA를 SELECT할 때 COMMIT않은 DATA를 SELECT할 수 없도록 지정됨. 실제 SHARE LOCK의 지속시간은 길지 않기 때문에 LOCK이 걸려있는지 사용자가 확인은 힘듦 2) READ UNCOMMITED DATA를 SELECT할 때 COMMIT 되지 않은 DATA도 SELECT할 수 있도록 지정 3..
[SqlServer] 스크립트로 DB 온/오프 시키기 --DB 오프라인 alter database dbname set offline with rollback immediate --DB 온라인 alter database dbname set online with rollback immediate