X 행에 데이터가 커밋되지 않았습니다.
1. MS-SQL 2000 에서 2014 로 DB 이전 했는데 DML 정상 작동하지 않음
2. MS 에서 안내한 바로는 SQL 2005 이상부터 아래와 같은 오류가 출력 된다고 함
오류 메시지 1
결과 창을 마지막으로 검색한 이후 데이터가 변경되었습니다. 지금 변경 내용을 저장하려면 하시겠습니까?
(낙관적 동시성 제어 오류)
그래도 데이터베이스 변경 내용을 커밋할 예 를 클릭하십시오.
변경 내용을 취소하고 이 행에 대한 현재 데이터를 검색하려면 아니요 를 클릭하십시오.
편집을 계속하려면 취소 [NULL]를 클릭하십시오.
참고예 이 오류 메시지 대화 상자에서 행은 제대로 업데이트됩니다.
오류 메시지 2
행이 업데이트되었습니다.
X 행에 데이터가 커밋되지 않았습니다.
오류 원본: Microsoft.VisualStudio.DataTools.
오류 메시지: 해당 행 값이 업데이트되거나 하나가 삭제된 행의 고유 만들지 마십시오 또는 여러 개의 행 (N 행) 변경합니다.
오류를 수정한 및 다시 시도 또는 해당 변경 내용을 취소하려면 Esc 키를 누릅니다.
참고 이 메시지 대화 상자가 나타나면 행을 업데이트할 수 없습니다.
다음 조건에 해당하면 이 문제가 발생합니다.
* text 또는 ntext 데이터 형식의 열이 하나 이상의 테이블에 들어 있습니다.
* 이러한 열 중 하나의 값을 다음 문자가 포함되어 있습니다.
*
* 백분율 기호 (%)
* 밑줄 (_)
* 왼쪽된 대괄호 ()
* 테이블에 기본 키가 포함되어 있지 않습니다
3. text 형식으로 구성된 열을 찾아서 varchar(max) 로 변경하고 DML 진행
4. DML 정상 작동 확인
'Database > MS-SQL' 카테고리의 다른 글
현재 사용 중인 DB 중 제한 없는 DB 확인 쿼리 (0) | 2016.07.25 |
---|---|
DDL, DML, DCL (0) | 2016.07.25 |
DB 오프라인, 온라인 (0) | 2016.07.25 |
DB 내의 특정 구문 일괄 삭제 (0) | 2016.07.25 |
MS-SQL 모든 사용자 연결 끊기 (0) | 2016.07.25 |
DB 오프라인, 온라인
USE master
'Database > MS-SQL' 카테고리의 다른 글
DDL, DML, DCL (0) | 2016.07.25 |
---|---|
X 행에 데이터가 커밋되지 않았습니다. (0) | 2016.07.25 |
DB 내의 특정 구문 일괄 삭제 (0) | 2016.07.25 |
MS-SQL 모든 사용자 연결 끊기 (0) | 2016.07.25 |
php + MS-SQL 연동시 확인 사항 (0) | 2016.07.22 |
DB 내의 특정 구문 일괄 삭제
SQL Injection 또는 외부 침입으로 인하여 DB 에 비정상 자료 등록되는 경우가 발생함
스팸게시글 등록 또는 광고 웹페이지 경로 등록 등 게시글 등록시 일괄 삭제 필요함
순서 1
프로시저 생성
CREATE PROCEDURE [DB_DEL_TEXT]
AS
DECLARE @TP int;
DECLARE @TBL varchar(255), @CLN varchar(255), @DEL_STR varchar(255);
SET @DEL_STR='광고광고광고<script src=http://fuckingchina.com></script>' -- 여기의 ' ' 안의 내용이 삭제 될 예정인 내용
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name ,b.xtype
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR b.xtype = 35 OR b.xtype = 231 OR b.xtype = 167 OR b.xtype=175 OR b.xtype=239 );
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN, @TP;
WHILE (@@FETCH_STATUS = 0) BEGIN
IF @TP > 100
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE('+ @CLN+' , '''+@DEL_STR +''','''' )');
END
ELSE
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE(CONVERT(varchar(8000),'+ @CLN+') , '''+@DEL_STR +''','''' )');
END
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN,@TP;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO
순서2
일괄 삭제를 진행 할 DB 접근하여 새 쿼리 실행 후 생성 된 프로시저 실행
Exec DB_DEL_TEXT
'Database > MS-SQL' 카테고리의 다른 글
X 행에 데이터가 커밋되지 않았습니다. (0) | 2016.07.25 |
---|---|
DB 오프라인, 온라인 (0) | 2016.07.25 |
MS-SQL 모든 사용자 연결 끊기 (0) | 2016.07.25 |
php + MS-SQL 연동시 확인 사항 (0) | 2016.07.22 |
SQL 2014 로 DB 이전 후 테이블 행 편집시 나오는 에러 문구 (0) | 2016.07.21 |