From pws-mes-tools
SmartUX Infac MES 데이터베이스(MSSQL)를 조회할 때 사용한다. "DB 조회", "테이블 조회", "데이터 확인", "쿼리 실행", "스토어드 프로시저 확인", "스키마 확인" 등 SITE_PEOPLEWORKS 데이터베이스의 데이터·구조를 들여다봐야 할 때 호출한다. 조회는 반드시 mssql MCP 도구로 수행하며, 테이블 조회 시 항상 WITH(NOLOCK)를 강제한다.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pws-mes-tools:mssql-queryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
SmartUX Infac MES 플랫폼의 MSSQL 데이터베이스(`SITE_PEOPLEWORKS`)를 안전하게 조회하기 위한 규칙과 절차를 제공한다.
SmartUX Infac MES 플랫폼의 MSSQL 데이터베이스(SITE_PEOPLEWORKS)를 안전하게 조회하기 위한 규칙과 절차를 제공한다.
mcp__mssql__* 도구로 수행한다. 다른 방식(직접 sqlcmd 실행, 임의 클라이언트 등)을 쓰지 않는다.WITH(NOLOCK)를 붙인다. FROM 또는 JOIN으로 참조하는 모든 테이블 별칭 뒤에 WITH(NOLOCK)를 명시한다. 운영 DB의 락 경합을 피하기 위한 필수 규칙이다.SELECT/구조 조회 외의 INSERT/UPDATE/DELETE/MERGE/DDL은 실행하지 않는다. 변경이 필요하면 먼저 사용자에게 확인한다.mcp__mssql__test_connection으로 확인한다. 기본 연결(default)을 사용하며 별도 명명 연결은 없다.
SQLDB / 기본 DB: SITE_PEOPLEWORKSmcp__mssql__list_tablesmcp__mssql__describe_tablemcp__mssql__sample_datamcp__mssql__execute_query로 실행한다. 작성한 SQL에 WITH(NOLOCK)가 빠지지 않았는지 실행 전 반드시 점검한다.전용 도구 전체 목록과 용도는 references/mcp-tools.md 참고.
올바른 예 (모든 테이블에 NOLOCK):
SELECT a.WORK_ORDER_ID, a.PROD_QTY, b.EQP_NAME
FROM TB_WORK_ORDER a WITH(NOLOCK)
INNER JOIN TB_EQUIPMENT b WITH(NOLOCK)
ON a.EQP_ID = b.EQP_ID
WHERE a.WORK_DATE = '2026-06-30'
잘못된 예 (NOLOCK 누락 — 사용 금지):
SELECT * FROM TB_WORK_ORDER WHERE WORK_DATE = '2026-06-30' -- ✗ NOLOCK 없음
서브쿼리, 파생 테이블, CTE 내부의 테이블 참조에도 동일하게 WITH(NOLOCK)를 적용한다.
mcp__mssql__execute_query는 DDL/변경 방지를 위해 특정 키워드(create, update, delete, insert, drop, alter 등)를 단순 문자열 포함(substring) 방식으로 차단한다. 이 때문에 컬럼명에 해당 문자열이 들어가면 SELECT 조회인데도 차단된다.
대표 오탐지 사례:
CREATED_TIME, CREATED_QTY, CREATOR → create 로 차단UPDATED_TIME, UPDATER → update 로 차단DELETED_FLAG, IS_DELETED → delete 로 차단예:
... ORDER BY CREATED_TIME DESC실행 시Error executing query: Query contains blocked keyword: create
ORDER BY 절 — 컬럼명 대신 SELECT 결과의 컬럼 순번(ordinal) 으로 정렬한다.
describe_table로 대상 컬럼의 ORDINAL_POSITION을 확인한다.SELECT *로 조회하면 컬럼이 ordinal 순서로 나오므로 그 순번을 그대로 쓴다.-- CREATED_TIME(50번째 컬럼) 기준 최신 1건
SELECT TOP 1 * FROM WPM_TB_LOT WITH(NOLOCK) ORDER BY 50 DESC
SELECT 대상 컬럼 — 차단어가 든 컬럼명을 직접 쓰지 않고 SELECT *로 전체를 가져온 뒤 결과에서 해당 컬럼을 읽는다.
WHERE 절에서 불가피할 때 — 조건에 차단어 컬럼이 꼭 필요하면, 가능하면 차단어가 없는 다른 컬럼(예: MODIFIED_TIME, LAST_TXN_TIME)으로 대체 가능한지 먼저 검토한다. 대체 불가하면 사용자에게 상황을 알리고 방법을 협의한다.
우회하더라도 모든 테이블에
WITH(NOLOCK)규칙은 그대로 지킨다.
pws_select)으로 동작하는 연결을 사용한다.TOP N 또는 페이징으로 행 수를 제한한다.Guides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.
npx claudepluginhub warpfence/mic-pws-project --plugin pws-mes-tools