이번 포스팅에서는 MS SQL Server에 대한 몇 가지 스크립트 팁을 보여드리겠습니다.
1. 기다려요
WAITFOR 문은 다음 두 절 중 하나로 지정됩니다.
(1) DELAY 키워드 뒤에는 WAITFOR 문을 완료하기 전에 통과해야 하는 시간이 옵니다. WAITFOR 문을 완료하기 전에 기다리는 시간은 최대 24시간일 수 있습니다. 예를 들어,
-- Select 문을 수행하기 전에 10초 동안 기다립니다.
지연 대기 '00:00:10'
Northwind.dbo.Employees에서 EmployeeID 선택
(2) TIME 키워드 뒤에 실행 시간이 옵니다. 이는 WAITFOR 문의 완료를 지정합니다.
예를 들어,
-- 오후 10시까지 기다려서 pubs 데이터베이스를 검사하여 모든 페이지가 올바르게 할당되고 사용되는지 확인하세요.
술집을 이용하세요
시작하다
시간 '22:00'을 기다려주세요
DBCC 체크알락
END
2. SQL 디버깅 활성화
-- SP_SDIDEBUG 저장 프로시저는 SQL Server에서 Transact-SQL 문 디버깅을 위해 사용됩니다.
마스터 사용
사용자 이름 3에 SP_SDIDEBUG 실행 권한을 부여합니다.
동적으로 작성된 문자열을 실행합니다.
(1) EXECUTE 문
EXECUTE 문을 사용하면 모든 매개 변수 값을 문자 또는 유니코드로 변환하고 Transact-SQL 문자열의 일부로 만들어야 합니다. 예를 들어,
@IntVariable INT 선언
@SQLString NVARCHAR(500) 선언
/* 하나의 매개변수 값으로 문자열을 작성하고 실행합니다. */
SET @IntVariable = 35
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
/* 두 번째 매개변수 값으로 문자열을 작성하고 실행합니다. */
SET @IntVariable = 201
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
(2) SP_ExecuteSQL
문자열을 실행하려면 EXECUTE 문을 사용하는 것보다 sp_executesql을 사용하는 것이 좋습니다. 매개 변수 대체 지원으로 인해 sp_executesql이 EXECUTE보다 더 다양해졌을 뿐만 아니라 SQL Server에서 재사용할 가능성이 높은 실행 계획을 생성하므로 sp_executesql이 더 효율적이게 되었습니다.
sp_executesql은 Transact-SQL 문자열과 별도로 매개 변수 값 설정을 지원합니다.
DECLARE @IntVariable INT
@SQLString NVARCHAR(500) 선언
DECLARE @ParmDefinition NVARCHAR(500)
/* SQL 문자열을 한 번 빌드합니다. */
SET @SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* 매개변수 형식을 한 번 지정합니다. */
SET @ParmDefinition = N'@leveltinyint '
/* 첫 번째 매개변수 값을 가진 문자열을 실행합니다. */
SET @IntVariable = 35
실행 sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
/* 두 번째 매개변수 값으로 동일한 문자열을 실행합니다. */
SET @IntVariable = 32
실행 sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
4. SP_HelpText
규칙, 기본값, 암호화되지 않은 저장 프로시저, 사용자 정의 함수, 트리거 또는 뷰의 텍스트를 인쇄합니다.
-- 이 예는 pubs 데이터베이스에 있는 Employee_insupd 트리거의 텍스트를 표시합니다.
술집 이용
실행 sp_helptext 'employee_insupd'