집에서 운영하는 서버에 DB를 저장하는 하드가 맛이 갔는지 툭하면 인식이 되지 않습니다. (참고 : MSSQL이 시작되지 않을때 ) 어쩔수 없이 다른 드라이브로 위치를 병경해야 되서 하는 김에 정리해 둡니다. 이전버전에서는 master 같은 시스템db를 옮길때 단독모드로 했어야 합니다만 2008부터는 단독모드가 아니여도 작업을 할수 있습니다. 단지 디비를 재시작해야 적용되죠 ㅎㅎㅎ (참고 : MSDN - 시스템 데이터베이스 이동) 다른 시스템 디비를 옮기시고 싶으시면 다음글을 참고해 주세요 (참고 - [MSSQL2008] 시스템 DB 옮기기 ) 1.옮길 파일의 이름 찾기파일위치는 매니지먼트 스튜디오에서 확인 할수 있습니다. 쿼리로도 확인 가능합니다. SELECT name, physical_name AS ..
MSSQL에서는 쿼리 결과를 xml로 출력 해주는 기능이 있습니다. 다행이 MSDN에 자세한 내용이 있으니 걱정없이 고고씽~ MSDN - RAW 모드 사용 1.기본 출력참 간편하게 쿼리에 끝에 'For XML Raw' 만 붙이면 되죠. 그런데 쿼리를 해보면 쿼리 결과 우리가 일반적으로 보던 XML과 좀 다릅니다. 우리는 보통 아래와 같은 모양의 XML을 많이 보죠. 10 10 100 1 30 10 20 10 200 2.속성(attribute)을 요소(element) 바꾸기일단 어트리뷰트로 값이 들어간것을 엘리먼트로 빼겠습니다. 일반적으로 쿼리결과는 속성값이 아니라 요소값으로 쓰기 때문입니다. 물론 아닌경우도 있죠 ㅡ.-;; 그럴땐 수작업해야 하는데 일단 이글의 끝에서 수작업 하는 법을 알려 드리겠습니다...
sa계정에 디폴트 디비를 지정하는 경우가 얼마나 흔한지는 모르겠지만 저 같은 경우 sa는 사용하지 않고 sa에게 권한을 부여받은 계정을 주로 사용하기 때문에 디폴트 디비를 지정해주는 경우가 종종 있습니다. 그런데 모든 계정은 디폴트디비가 삭제되면 로그인이 되지 않습니다 ㅡ,.ㅡ; 사용자 기본 데이터베이스를 열 수 없습니다. cannot open user default database. login failed 이런 에러가 발생합니다. 1. 윈도우 인증을 확인해 보자 이런 경우 제일 먼저 해봐야 할 것은 '윈도우 인증'으로 로그인이 되나 입니다. 되면 해당 계정의 DB를 다시 지정하면 되는 것이니까요. 보안 > 로그인 > sa계정 속성 2. 'sqlcmd'를 이용한 방법 문제는 '윈도우 인증도 막혔다면?' ..
저번에 디비 이관작업하다가 대박 사고가 나니 "역시 디비옮길땐 파일을 옮기는것 만큼 좋은게 없구나" 라는 생각을 더 욱 하고 있습니다 ㅜㅡ 1. 파일 정보 확인 '.bak'로 통빽업을 했다면 안에 'mdf'파일과 'ldf'파일이 그대로 있으니 너무 걱정하지 않으셔도 됩니다. (하지만 증분빽업된거라면? 명복을 ㅎㅎㅎ) 복원하기전에 아래 명령을 사용하여 백업파일의 정보를 확인해야 합니다. --1) DB 백업 파일 정보 restore filelistonly from disk='[경로]' --mdf와 ldf파일의 이름을 확인한다. 2. 복구 위에서 얻은 정보를 이용해 아래 명령을 실행합니다. -- 2-1) DB 복구 restore database [넣을DB 이름] from disk='[경로]' with move..
DB를 옮겨야하는 내보내기하면 계속 오류나고 해서 일단 데이터만 옮기고 테이블은 스크립팅 하여 저당해두었습니다. 장비를 반납해야 하는거라 시간이 없어서 '데이터 가져오기 및 내보내기'로 일단 데이터만 후다닥 내보낸거였는데 복구를 하려고 보니 뷰가 테이블이 되어있네? 뷰가 데이터 테이블로 변환되어있는 현장 그러니 다시 내보내기를 하면 뷰에다 인서트를 하니 에러가 나고 있던 것입니다.(원래 뷰에 인서트가 가능은 합니다만 내보내기할때 뷰는 경우가 다르니 넘어갑시다 ㅋㅋㅋ) 거기다 뷰는 따로 정렬이 되기때문에 "왜 테이블 생성이 안되지?" 라는 생각을 하면 수동으로 생성해보니 이미 있는 이름이라고 나오고 '드롭 테이블' 하면 테이블이 아니라는 에러가 나는 겁니다. -_-; 이런경우 자기가 구성한 DB가 아니면 ..
이미 사용중이 테이블에 ID 사양(Identity Specification)이 지정되있지 않아 지정했더니 "작업을 실행하는데 오래 걸릴수 있다"라는 식의 경고가 뜨길례 "그래라"하고 살포시 무시 했는데... 테이블을 수정할 수 없습니다. 제한 시간이 만료되었습니다. 작업을 완료하기 전에 제한 시간이 경과되었거나 서버가 응답하지 않았습니다. Unable to modify table. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 오 쉣!!! 검색해봐도 그렇다할 답이 안나오네 ㅡ,.ㅡ;; 그런던중 발견한것이 "트렌잭션 시간 늘려보시죠?" 오홍 sql 서..
MS는 그래도 다른 회사들에 비하면 도움말이 잘되 있는 편입니다. 오류가 발생했는데 원인을 모르겠으면 MSDN부터 뒤지는 이유기도 하죠. MSSQL을 옮기려고 내보내기를 하다가 알수 없는 오류들의 향현을 보고 검색을 했으나....이거뭐 검색격과도 그렇고 원인조차 모르겠다는 것입니다-_-; 오류메시지는 완전 수수께끼고 검색결과는 없고 하다 찾은것이 '오류 이벤트 참조' 입니다. 참고 : Microsoft - SSIS 오류 및 이벤트 참조 여전이 확실한 답을 얻을수 있는건 아니지만 나름 괜찬은 힌트를 얻을수 있는 리스트 입니다. 이정도만 되도 최소한 답답한 마음은 줄긴 하네요. 뭐...여전이 답은 모르겠지만 말이죠 OTL
1. 잘못된 증상, 잘못된 진단 'sa'계정 비밀번호를 바꾸고 나서 갑자기 서비스에 'SQL Server (MSSQLSERVER)'이 시작되지 않는 현상이 일어났습니다. 2. '이벤트 뷰어' 확인하기 이럴 때는 '이벤트 뷰어'를 확인해야 합니다. '이벤트 뷰어'에 보니 다음 오류로 인해 SQL Server (MSSQLSERVER) 서비스를 시작하지 못했습니다. 지정된 파일을 찾을 수 없습니다. 파일을 찾을 수 없다고? 그럴 리가? 그래서 몇칠을 삽질한 끝에...... MSSQL데이터가 생성되는 하드디스크가 인식되지 않는 걸 확인하였습니다;;; 어쩐지 인터넷을 뒤져보니 이 에러는 일반적으로 'master' 데이터베이스가 손상됐을 때라고 설명하는데 파일 자체를 찾을 수 없을 때도 발생하는군요 ㅎㅎ;;; 마무..
사실 제가 직접 sql서버를 관리할일이 없기 때문에 스케줄러의 필요성에 대해 신경을 안쓰고 있다가 이러면 안되겠다 싶어 스케줄러 사용방법을 정리해 봅니다 ㅎㅎㅎ 개체 탐색기 > SQL Server 에이전트 > 작업 > 오른쪽클릭 > 새 작업 을 눌릅니다. 범주는 '데이터베이스 유지 관리'로 넣으시고 나머지 항목들을 입력합니다. 그런다음 왼쪽에서 '단계'를 누릅니다. '단계'에서 '새로 만들기'를 누릅니다. 단계 이름을 주고 명령을 넣습니다. 여기서 명령은 저장프로시저에 넣는 스크립트와 동일 합니다. 아래는 백업용 스크립트의 샘플입니다. 자신에게 맞게 수정하셔서 쓰시면 됩니다. Declare @sFileName varchar(50) Declare @dateNow datetime Select @dateNow..
'MSSQL 2005' 때와는 다른 문제로 사용자가 삭제되지 않습니다..... [MSSQL 2005] 데이터베이스 사용자를 삭제할 수 없는 현상 [MSSQL 2008] 또 사용자가 삭제되지 않아! 1. 원인 지우려는 사용자가 스키마를 소유하고 있으면 지워지지 않습니다. 사용자를 생성할 때 연결되었든 사용하기 위해 연결되었든 하나라도 남아있으면 안 됩니다. 2. 해결 방법 해당 DB > 보안 > 스키마 > 확인한 스키마 확인한 스키마의 속성을 보면 스키마 소유자가 안 지워지는 녀석 이름으로 돼있습니다. 이걸 다른 걸로 바꿔주면 지워집니다. 마무리 이거 툭하면 안 지워지네-_-;;;