Database/SQL Server

MS SQL - 암호화 와 스키마바인딩, 임시 테이블(로컬, 글로벌)[Encrypting & Schema binding], Temporary tables(Local , Global)]

청렴결백한 만능 재주꾼 2020. 12. 4. 05:34
반응형

암호화

함수나 프로시저를 보호하고 싶을 때 암호화를 하면 된다.

EX)

CREATE FUNCTION Fn_GetNameById(@Id int)

Returns nvarchar(30)

with ENCRYPTION 

as 

....

 

 

스키마 바인딩(Schemabinding)

스키마를 묶는다는 의미같은데 일단 쿼리를 쓸 때에 '*'을 쓸 수 없다. 컬럼명을 직접 지정해줘야한다. 그리고 From뒤에 테이블 이름을 넣을 때에도 절대 경로(?) 절대 이름을 넣어줘야한다. 뷰를 묶어서 저장시킨다는 개념인데 왜 굳이 그러냐 하면 인덱스를 넣을 수 있어서 이다.

 

 

로컬 임시 테이블(Local Temporary tables)

테이블 이름 앞에 #(샾)을 붙이면 된다. 이렇게 해서 Created 된 테이블은 tembdb에 temporary Tables에 저장이 된다. like dbo.#PersonDetail___________________________1232311.

그리고 로컬 임시 테이블은 오직 그 쿼리가 작성된 곳에서만 유효하다. 그 쿼리가 작성된 곳을 닫으면 임시테이블은 자동으로 Drop된다. (태어난 곳이 사라지면 본인도 사라짐)

 

Tip

검색을 할 시 

Select name from tembdb...sysobjects

where name like '#PersonDetails%'

 

끝에 %를 붙여서 찾아야 찾아진다. 

 

 

그리고 임시테이블이 프로시저안에서 생성이 되었다면 밖에서 생성이 안된다.  스코프에 대한 개념 이해가 있으면 적용하면 됨.

 

 

글로벌 임시 테이블(Global Temporary tables)

테이블 이름 앞에 ##(샾샾)을 붙이면 된다. 모든 커넥션에서 다 볼 수 있음. 전역에 적용이 되기 때문에 중복된 이름이 커넥션마다 존재 할 수 없다.

 

 

반응형