'DataBase/Advance'에 해당되는 글 2건
- 2008.01.02 :: 3.“equal to 연산의 데이터 정렬 충돌을 해결할 수 없습니다 ” 오류 2
- 2007.12.18 :: 2.MSSQL DB 이관
“equal to 연산의 데이터 정렬 충돌을 해결할 수 없습니다” 라는 오류 해결.
보통 조인되는 두 컬럼의 정렬이 틀리게 되어 있어 나타는 현상이다.
정렬 형식은 sp_help 테이블명 하면 collation 항목에 나타난다.
이럴때는 EM의 테이블 디자인에서나 Alter Table 구문으로 정렬 형식을 맞춰 주면 된다.
Alter table tbMembers
Alter column hakbun varchar(8) collate Korean_Wansung_CI_AS
cheers
=========================================================================================
A-SQLServer SQL Server에 존재하는 Migrate 데이터베이스를 B-SQLServer SQL Server로 동일한 데이터베이스명으로 이관하고 사용자(MigDBUser)가 접근 할 수 있도록 권한 처리를 한다.
-
이관하려는 데이터베이스를 백업
-
데이터베이스 백업
- Microsoft SQL Server Management Studio 실행
- A-SQLServer 서버에 연결한다.
- Migrate 데이터베이스를 좌측 개체 탐색기에서 선택 후 우측 마우스 버튼 클릭
- [작업] - [백업] 선택
- 데이터베이스 백업 대화상자가 열린다.
- [일반] 페이지 - [대상] Section 의 추가, 제거 버튼을 클릭하여 백업할 위치지정 (파일명 예: Migrate.bak)
-
[확인] 버튼을 클릭
-
-
백업 데이터베이스 확인
-
Migrate.bak 파일이 생성되었는지 확인한다.
-
-
B-SQLServer 서버에 데이터베이스 이관
- Migrate.bak 파일을 이관 B-SQLServer가 존재하는 PC 로컬 디스크에 복사 한다
- Microsoft SQL Server Management Studio에서 B-SQLServer 서버 연결
- 좌측 개체 탐색기에 존재하는 DB중 아무거나 선택하고 우측 마우스 버튼을 클릭
- [작업] - [복원] - [데이터베이스]를 선택
- 데이터베이스 복원 대화상자가 열린다.
- [일반] 페이지 - [복원에 사용할 원본] Section의 라디오 버튼 중(데이터베이스, 장치) 장치를 선택하고 우측의 버튼을 클릭한다.
- 백업 지정 대화상자가 열린다.
- 백업 위치 영역 우측의 버튼 중 "추가"(맨 위) 버튼을 클릭한다.
- Migrate.bak 파일을 찾아 선택하고 확인 버튼을 클릭한다.
- 백업 지정 대화상자의 확인 버튼을 클릭하여 지정을 완료한다.
- 장치 지정이 이뤄지면 복원에 사용할 백업 세트 선택 영역에 복원 대상 목록이 표현된다.
- 최근 버전에 해당하는 데이터베이스 좌측의 체크박스를 선택한다.
- [일반]페이지 - [복원 대상] Section의 데이터베이스를 Migrate (생성하려는 데이터베이스명)로 지정한다.
-
[옵션]페이지 - [복원 옵션] Section의 데이터베이스 복원 위치를 지정한다.
- Mdf(데이터베이스 파일), ldf(로그 파일) 의 위치 및 파일명을 선택한다.
- 이전에 존재하는 데이터베이스 일 경우, [옵션] 페이지 - [복원 옵션] Section의 최상위 체크 박스인 기존 데이터베이스 덮어쓰기를 선택한다.
- 위의 설정을 수행하고 확인 버튼을 클릭한다.
- 데이터베이스의 용량에 따라 수초에서 수분이 걸릴 수 있다.
-
작업이 완료되면 생성되었다는 메시지가 뜬다.
-
권한 설정 (삭제)
-
이관한 데이터베이스는 시스템이 틀리므로 이름이 동일하더라도 내부적으로 가지고 있는 SID값이 틀려 프로그램으로 접근이 불가능 하다.
- SELECT * FROM maste..syslogins, SELECT * From Migrate..sysusers
- 위의 쿼리를 입력하면 틀린 SID값을 확인할 수 있다.
-
먼저 이관한 데이터베이스의 전체 권한을 제거한다.
-
권한 제거는 다른 UI에서 처리할 수가 없으며, 쿼리를 수행하여 삭제할 수 있다.
- sp_dropuser 'MigDBUser'
-
- 좌측 개체 탐색기에서 이관한 데이터베이스를 선택하고 우측 마우스 버튼을 클릭한다.
- [속성]을 선택한다.
- 데이터베이스 속성대화상자가 열린다.
- [사용 권한] 페이지 선택을 클릭한다.
-
[사용자 또는 역할] 영역에 MigDBUser가 삭제되었는지 확인하고, 기타 다른 계정도 2) 항목과 같이 삭제 처리한다.
-
-
권한 설정 (추가)
- 좌측 개체 탐색기에서 [보안] - [로그인]을 선택하고 우측 마우스 버튼을 클릭한다.
- [새 로그인]을 선택한다.
- 로그인 - 신규 대화상자가 열린다.
- [일반] 페이지 선택을 클릭하고 로그인 이름에 MigDBUser를 입력한다.
- SQL Server 인증으로 체크하고 암호를 입력한다.
- 암호 정책 강제 적용 등 옵션을 선택하고 기본 데이터베이스(Migrate)를 지정, 기본 언어 선택을 한다
- [사용자 매핑] 페이지 선택을 클릭하고 우측에 접근할 데이터베이스 체크한다.
- [데이터베이스 역할 맴버 자격] Section에서 db_datareader, db_owner등 권한에 맞도록 체크를 한다.
- [확인] 버튼을 클릭하여 계정 생성을 완료한다.
=========================================================================================
MSSQL2000 에서 백업 받은 DB를 다른 서버에 있는 MSSQL2000 에 복원 시켰을때 해당 DB의 사용자가 있는데 로그인 이름이 없어 로그인이 안되는 문제가 있다.
이 문제는 해당 DB를 사용하는 사용자의 GUID가 syslogins.sid 테이블에 있는 것돠 다르기때문이다.
EM에서 사용자에 가 보면 사용자 이름은 있는데 로그인 이름은 비어 있을 것이다.이것을 해결하기 위해서는 새 서버의 로그인 계정과 복원한 DB의 사용자 를 연결해야 한다.
먼저 쿼리매니저에서 연결되지 않은 계정을 확인한다.
sp_change_users_login 'Report'
go;하면 사용자는 있는데 연결되지 않은 사용자의 아이디가 나온다.
나오는 이름을 확인하고
sp_change_users_login 'Update_one', 'username', 'username'
go;
를 하면 연결 작업이 끝난다. EM에서 사용자를 보면 로그인 이름이 생겨있다.
이제 DB에 해당 사용자로 연결이 되는지 확인하면 된다.
http://www.baragi.pe.kr/