MSSQL

    EM 접속시간을 줄여보자 - sp_MSdbuseraccess 편

    exec sp_MSdbuseraccess N'db', N'%' 이 프로시져는 사용자가 접근가능한 모든 데이터베이스 목록을 확인 할때 사용을 합니다. 별로 쓰일 용도가 없을것 같지만, MSSQL 관리도구중 사용이 간단한 엔터프라이즈 메니져(Enterprise Manager. 이하 EM)로 접속을 하면 모든 데이터베이스 목록을 불러오는 부분에서 사용이 됩니다. Microsoft 기술문서에 적혀있는 부분을 인용하면 다음과 같습니다. 기술문서 : KB88969 CAUSE SQL Server Enterprise Manager calls the sp_MSdbuseraccess stored procedure to determine the accessibility of each database. The sp_MSdbu..

    [MSSQL] 엔터프라이즈 메니져의 접속시간을 줄여보자

    데이터베이스 접속량이 많아지고 빠른 응답속도를 보이는 저장프로시져보다 직접 서버에서 쿼리를 보내고 응답을 받는횟수가 증가함에 따라 엔터프라이즈 메니져(Enterprise Manager. 이하 EM)로 접속하는 사용자로부터 응답속도가 느리고 때로는 접속은 가능하지만 데이터베이스 목록부분이 안보인다는 내용을 전달받았다. 가장 좋은 방법은 서버사양을 올리면 되는 것이지만, 돈이 든다는 가장 큰 단점이 있다. 그래서 EM의 접속시 가장 문제가 되는 데이터베이스 목록이 안보이는 현상을 중심으로 접속속도 증가를 위한 방법을 찾아보기로 하였다. 우선 프로필러로 EM 접속시 발생하는 쿼리를 캡춰하고, 하나하나 쿼리의 내용을 확인하였다. 상세한정보를 확인가능하지만 쿼리를 알고 있어야 사용이 가능한 쿼리분석기(query ..

    [MSSQL] DTS 와 쿼리분석기에서 사용자DB만 보이기

    엔터프라이즈메니져(EM)와 쿼리분석기는 모든 데이터베이스의 목록을 가져오는것을 기본으로 하기때문에 사용량이 많다거나 가져올 데이터가 많은경우 연결이 힘들고 연결되었다 하더라도 사용이 힘들게 됩니다. 하지만 엔터프라이즈메니져(EM)와 쿼리분석기는 특정 프로시져를 호출함으로써 데이터베이스목록을 가져오는 방식으로 동작을 하고 있습니다. 즉, 그 프로시져를 수정하면 가져오는 데이터베이스 리스트를 컨트롤할수있다는것을 알았습니다.( 감격..ㅠ_ㅠ) 하지만 문서화되어 있지 않아서 직접 분석을 할수밖에 없었습니다. 목표는 사용자로 하여금 접속권한이 있는 데이터베이스 리스트만을 보여주도록 프로시져를 변경하는것으로 정했으며, 프로시져의 분석(?) 을 하였더니 좀 허무하더군요.. 원본은 sysdatabases 에서 sele..