
최근에 저는 고객을 위해 자체 제품을 호스팅하는 호스팅 시스템 관리를 돕기 위해 투입된 시나리오를 접하게 되었습니다. 각 고객에게는 특정 SQL 인스턴스에 대한 고유한 사용자가 제공되며 여러 인스턴스를 실행하고 있지만 하나의 인스턴스에는 50~100명의 사용자가 있을 수 있습니다. 또한 당사는 파트너인 제3자 공급업체가 당사 소프트웨어가 동일한 사용자에게 허용하는 것과 동일한 클라이언트의 데이터베이스에 액세스하는 소프트웨어를 실행할 수 있도록 허용합니다. 그러나 내가 겪은 문제는 타사 프로그램이 제대로 구현되지 않은 경우가 많고 엄청난 양의 CPU를 소비하여 고객을 당황하게 한다는 것입니다. 리소스 관리자를 사용하면 특정 사용자가 액세스할 수 있는 리소스의 양을 제한할 수 있다는 것을 알고 있습니다. 그러나 특정 프로그램 이름이 액세스할 수 있는 리소스를 제한하거나 더 낮은 우선 순위로 설정할 수 있는 방법이 있는지 궁금합니다. 이러한 제3자 애플리케이션을 실행할 수 있는 시간이 제한되어 있으므로 애플리케이션의 실행 시기를 더 이상 늘릴 수 없습니다. 지금까지 SQL에 액세스할 때 특정 프로그램의 리소스나 우선 순위를 제한하는 방법을 찾지 못했습니다. 검색에 나타나지 않은 이러한 종류의 정보에 대한 리소스가 있는지 궁금합니다.
답변1
몇 가지 내용을 읽어보니 리소스 관리자를 사용하여 각 세션/연결을 분류하고 특정 리소스 풀에 할당할 수 있는 것으로 보입니다. 리소스 풀은 적절하다고 판단되는 대로 리소스를 제한할 수 있는 것입니다. 그러나 이를 수행하려면 세션의 속성을 보고 연결이 속할 리소스 풀을 결정하는 분류자 기능을 정의해야 합니다.
APP_NAME()
SQL(분류자 함수 내)의 함수를 사용하여 연결을 만드는 애플리케이션 이름을 가져올 수 있습니다. 그런 다음 임대인 자원이 할당된 자원 풀에 할당합니다.
참조 링크:
자원 관리자 -https://msdn.microsoft.com/en-us/library/bb933866(v=sql.105).aspx
분류자 사용자 정의 함수 생성 및 테스트 -https://msdn.microsoft.com/en-us/library/cc645892(v=sql.105).aspx