.SQL 파일 C#으로 DDL에서 이름을 반대하는 다음과 같은 문장이 있습니다정규식은 테이블, 트리거, 뷰 등</p> <p>그것은 수에 대한 문을 변경, 저장 프로 시저를 분석하고 나는 여러 저장 프로 시저의 DDL 정의를 포함 할 수있는 .SQL 파일이
- 것은 CREATE/절차를 PROC를 만들
- ALTER PROC/ALTER PROCEDURE
- DROP의 PROC/DROP PROCEDURE
- CREATE TABLE/트리거/V IEW
- ALTER 표/TRIGGER/VIEW
- DROP 표/TRIGGER/VIEW
- 등
무엇 (PROC을 .SQL 파일을 구문 분석하고 단지 개체의 목록을 얻을 수있는 가장 좋은 방법은/테이블/뷰 이름)과 그 (ALTER/CREATE/DROP)에서 취해지고있는 동작 중 무엇입니까? Microsoft.Data.Schema.ScriptDom 또는 ANTLR 또는 다른 파서와 같은 것들을 사용하는 대신 가장 쉬운 방법은 RegEx를 사용하는 것입니다. 그러나 모든 시나리오를 다루는 RegEx의 종류를 분명히해야합니다.
지금까지이 표현식은 위의 모든 규칙과 일치 할 수 있습니다. 그러나 나는 그것 앞에있는 물체의 이름을 어떻게 얻습니까? 예. 그것은 일치
(작성 | 변경 | 드롭) \ S + (절차 | PROC | 테이블 | 트리거 |보기 | 기능 | 제약) 내 질문 이름 AdvisorGroups을 얻는 방법
. 내 RegEx는 [dbo]를 (를) 가질 수 있기 때문에 불완전합니다. 그것의 앞에 또는 아닙니다. AdvisorGroups 테이블 변경도 가능합니다. 나는 모든 가능성을 돌 보려고하지 않습니다. 최소한으로. 확실히 ... 당신이 필요합니다 -.
성명을 분석하거나이 문장을 파싱하지 않으려는 시도는 무엇입니까? –
우리는 DBA가 영향을받는 객체를 수동으로 백업하지 않고 실행을 위해 .SQL procs를 실행하기위한 사내 도구를 만들었습니다. 시작을하고 문제가 발생하면 수동으로 롤백합니다. 그래서이 도구는 .SQL 파일을받습니다. 모든 개체 이름을 구문 분석하고 백업 한 다음 .sql을 실행합니다. – StackThis
백업 할 때 개체의 스키마/정의를 의미합니까? 아니면 데이터를 의미합니까? MS SQL 용인가요? 그렇다면 어떤 버전입니까? –