SQL 이 부주의 로 WHERE 에서 길 을 잃 었 습 니 다.

6915 단어 sql일 하 다Go
전체 판 주소:
http://www.trydofor.com/a9w3-auhome/trydofor/article/2009/1121131712/body.htm
SQL 이 부주의 로 WHERE 에서 길 을 잃 었 습 니 다.
저자: 취 두부 [trydofor. com]
날짜: 2009 - 11 - 21
권한 수여: 서명 - 비상 업 - 일치 유지 1.0 협의
성명: 본 작품 을 복사, 배포, 표현 과 공연 할 때 상기 모든 정 보 를 보류 하 십시오.
 
문서 디 렉 터 리
1. 
재난 회고
2. 
방비 조치
2.1. 
정확 한 데이터베이스
2.2. 
정확 한 SQL
3. 
구제 수단
1. 재난 회고
각종 업무 수요 로 인해 프로젝트 는 SQL 수 동 으로 데 이 터 를 유지 합 니 다.
5 년 간 네 차례 나 뼈 에 사무 치 는 WHERE 재난 이 있 었 다.
재난 이란 일반적으로 다음 과 같은 특징 을 가지 고 있다.
정식 생산 환경 에 영향 을 주 었 다.
백만 급 이나 천만 급 의 기록 을 깨뜨렸다.
데이터 관계 가 복잡 하여 복원 하기 가 매우 어렵다.
며칠 동안 의 일이 나 밤 을 새 워 야만 회복 할 수 있다.
재난 을 일 으 키 는 원인 은 모두 매우 저급 하고 확률 이 낮 으 며 경험 해 보지 않 으 면 믿 지 못 할 지도 모른다.
조금 만 더 자세히, 조금 만 더 천천히 하면 충분히 피 할 수 있 을 지도 모른다.
그러나 사실은 사람 은 때때로 단락 되 어 불가능 한 저급한 실 수 를 저 지 를 수 있다.
2. 예방 조치
정확 한 조작 을 완성 하려 면 정확 한 SQL 을 정확 한 데이터베이스 에 실행 해 야 합 니 다.
반대로 결 과 는 재앙 일 수도 있다.
두 가지 잘못,
잘못된 서버 오류 가 있 지만 실행 가능 한 SQL 세 가지 상황,
잘못된 데이터베이스 에서 정확 한 SQL 을 실행 합 니 다.
오류 가 있 지만 실행 가능 한 SQL 은 정확 한 데이터베이스 에서 실 행 됩 니 다.
오류 가 있 지만 실행 가능 한 SQL 은 잘못된 데이터베이스 에서 실 행 됩 니 다.
예방 에 있어 서 가장 효과 적 인 조 치 는 짝 짓 기, 즉 파트너 를 찾 아 청중 이 되 는 것 이다.
조작 상의 모든 논리 와 목 표를 그 에 게 들 려 주 고 확인 해 야 한다.
2.1 정확 한 데이터베이스
요청 에 있어 서 는 연결 전과 링크 후에 확인 해 야 합 니 다.조작 에 있어 서 다음 과 같은 몇 가지 전략 이 있 습 니 다.
모든 무관 한 링크 를 닫 거나 클 라 이언 트 프로그램 을 닫 습 니 다.
대상 데이터베이스 의 연결 을 확인 하고 눈 에 띄 고 직접적인 이름 을 짓 습 니 다.
연결 후 서버 특징 데 이 터 를 찾 아 확인 합 니 다.
2.2. 정확 한 SQL
위험한 SQL 은 UPDATE 와 DELETE 입 니 다. 오류 가 있 지만 실행 가능 한 SQL 은 일반적으로...
단일 SQL, WHERE 가 부족 하거나 잘못 되 었 습 니 다.
일부 SQL 을 잃 어 버 린 SQL 그룹
다른 SQL 에 섞 인 SQL
SQL 의 경우 예방 이 쉬 우 므 로 확인 과 정리 작업 을 잘 하면 된다.
단일 SQL 의 경우 가장 흔 하고 위험 합 니 다.보통 제도 적 방 비 를 한다.
첫째, 모든 데이터 UPDATE 와 DELETE 시 WHERE 사용 강제 1=1。
< sql > 강제 WHERE 
001
002
003
004
005
006
007
008
009
010
011
012
//    UPDATE
UPDATE TEST SET FIELD1=1,FIELD2=2
GO
//   WHERE UPDATE
UPDATE TEST SET FIELD1=1,FIELD2=2 WHERE 1=1
GO
//    DELETE
DELETE FROM TEST
GO
//   WHERE DELETE
DELETE FROM TEST WHERE 1=1
GO

둘째, 일부 데이터 UPDATE 와 DELETE 는 업데이트 전에 SELECT 를 해 야 합 니 다.
SELECT 의 WHERE 를 UPDATE 와 DELETE 에 완전 하 게 사용 하 는 것 이다.
< sql > 강제 SELECT 
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
//    UPDATE
UPDATE TEST SET FIELD1=1,FIELD2=2 WHERE FIELD3 =3
GO
//   SELECT UPDATE
SELECT FIELD1=1,FIELD2=2 FROM TEST
//UPDATE TEST SET FIELD1=1,FIELD2=2
WHERE FIELD3 =3
GO
//    DELETE
DELETE FROM TEST WHERE FIELD3 =3
GO
//   SELECT DELETE
SELECT FIELD1=1,FIELD2=2
//DELETE 
FROM TEST WHERE FIELD3 =3
GO

SELECT 를 강제 하 는 것 은 주로 데 이 터 를 관찰 하기 위해 서 이 며, COUNT (1) 또는 키 필드 에 자주 사용 된다 는 뜻 이다.
실행 할 때 두 번 으로 나 누 어 첫 번 째 단일 항목 을 선택 하고 두 번 째 는 주석 부터 선택 합 니 다.
3. 구제 수단
기 존의 용재 전략 에 있어 나 쁜 영향 을 줄 이거 나 없 애 는 기본 적 인 방법 은
백업 기반 과거 로 돌아 가기.
이력 에 따라 처음부터 다시 하 다.
과거 로 돌아 가 처음부터 다시 하 자.
조작 상,
우선 냉정 해 야 한다. 꿈 을 꾸 고 괜 히 놀 라 야 한다.
일반적으로 이런 일이 발생 하면 관계자 들 은 땀 을 흘 리 고 열 이 나 며 열 이 나 는 두 뇌 는 더 열 이 나 는 사 고 를 일 으 킬 수 밖 에 없다.
그리고 세부 사항 과 영향 을 돌 이 켜 보고 제때에 소통 하고 보고 한다.
세 명의 구두장이 가 제갈량 을 대신 하여 순 전 히 객관 적 으로 일 을 분명하게 말 하여 결정 을 내리 도록 하 다.
마지막 으로 보완 전략 과 실시 세부 사항 을 확정한다.
여러 가지 상황 과 대책 을 고려 해 시행 전 조목조목 되풀이 한다.
관건 은 전체 과정 이 어떻게 보완 하 느 냐 에 달 려 있 고 책임 을 추궁 하거나 결 과 를 평가 해 서 는 안 된다 는 점 이다.

좋은 웹페이지 즐겨찾기