none
MS-SQL 에서 모든 데이터베이스에서 사용 가능한 사용자정의함수 또는 저장 프로시저를 생성하는 법을 알고 싶습니다. RRS feed

  • 질문

  • MS-SQL 에서 모든 데이터베이스에서 사용 가능한 사용자정의함수 또는 저장 프로시저를 생성하는 법을 알고 싶습니다.

    예를들어 

    하나의 PC 에 MS-SQL 을 설치하고 

    A 라는 데이터베이스와 B 라는 데이터베이스를 만듭니다.

    사용자 정의함수 또는 저장프로시저를 A와 B 데이터베이스에서 사용하려 할 때

    A 와 B 데이터베이스 두곳에 각각 CREATE 하며 생성하지 않고 

    시스템 함수( ex. SCOPE_IDENTITY() ) 처럼 모든 데이터베이스에서 사용 가능하도록 하려면 어떻게 생성 또는 설정 하여야 하나요?
    2020년 3월 11일 수요일 오전 8:14

모든 응답

  • 마스터 데이터베이스에서 접두사가“sp_”인 프로시저를 작성하면 모든 데이터베이스에서 호출 할 수 있습니다.

    개인적으로 이 기능은 유틸리티에는 유용하지만 dependent object에는 사용하지 않을 것이라고 생각합니다. 가장 큰 이유는 데이터베이스를 다른 서버로 복원 할 때 일반적으로 마스터 데이터베이스를 복원하지 않기 때문입니다. 이런 경우 트러블슈팅 준비도 하여야 합니다. 그러나 때로는 꼭 이렇해 할수 밖에 없는 상황도 있습니다.

    이외에 sp_ 접두사를 사용하여 프로시저를 마스터 데이터베이스에 배치하는 경우 프로시저는 사실 마스터 데이터베이스의 컨텍스트에서 실행됩니다.

    다음 샘플을 참조하시기 바랍니다.

    use master
    go
    create procedure sp_testprocedure as 
    begin 
    select * from INFORMATION_SCHEMA.ROUTINES
    end 
    go

    -----Please change it into your own database to test 
    use TestDatabase
    go
    exec sp_testprocedure

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2020년 3월 13일 금요일 오전 8:21
    중재자