본문으로 바로가기
시놀로지 MSSQL 설치 따라하기 #2 (22년 6월) - SSMS에서 데이터 가져오기 - 바보처럼코딩하기

시놀로지 MSSQL 설치 따라하기 #2 (22년 6월) - SSMS에서 데이터 가져오기

반응형

이전 편 링크: 시놀로지 MSSQL 설치 따라하기 #1 (22년 6월) -SQL 2022 버전

 

안녕하세요 오늘은 2편입니다. 저번 편까지 우리는 시놀로지안에서 SSH를 이용해서 이미지를 풀링해와서 MS-SQL서버를 설치했고, SSMS에서 만들었습니다. 이제 기존 데이터를 가져와야하는데 여기도 자잘 자잘하게 놓치는 부분들 때문에 멘붕이 오지요. 따라하기 형태로 다시 시작을 해보겠습니다.

 

 

 

 SQL 2022로는 collation이 Korean_Wansung_CI_AS 로 먹히는데 2019에서는 좀 문제가 있었습니다.

그래서 좀 해멧는데...

 

여기부터 마크된 부분까지는 고난의 여정 기록을 남긴것이고, 1편에서 편하게 진행하시려는 부분은 큰 글씨로 마킹한 다음부분부터 이어서 읽어주세요.

고난의 여정 (시작)----------------------------------

서버 데이터 정렬이 두가지가 있다는걸 알게됐고, 시스템 collation과 DB collation이 있습니다.
DB collation에 관련된 글은 많고 ssms에서 수정하기 쉬운데, master DB쪽의 collation은 도통 찾기가 어려웠습니다. 둘다 맞춰줘야 한글 검색이 제대로 됩니다.

도커 환경변수 

2019로 같은 환경변수를 주고 하는중..단, 폴더를 새로 만들었는데 도커 중지됨.

 

2022로 실험중.. 닭이 먼저일까? 달걀이 먼저일까?

계정 생성이 먼저일까? 로그인 생성이 먼저일까?

 

우선 SA로 접속후, 아무것도 안건드리고 DB생성

그 뒤 새 로그인 생성: 기본 DB는 생성한 DB 선택 언어는 English-us_english

사용자 매핑에서 사용자는 생성한 계정으로 스키마는 dbo로 설정

 

다시 다 지우고 로그인 먼저 생성 : 기본 DB는 master 선택 언어는 English-us_english (확인 누르고)

옵션에서 데이터 정렬만 Korean_Wansung_CI_AS 으로 설정

파일에서 소유자를 새 계정으로 만들면 로그인계정 매핑에서 dbo로 나온다.

 

계정과 DB추가 에서 한번 봐둬야할 부분

1) DB 생성

 

2) 로그인 계정 생성

새로운 DB에도 사용자로 등록됐음.

후아 이제 계설설정 끝...

 

추가. 테이블 옮기기를 하는데 오류 발행 Hresult 0x80004005 

docker 에서 볼륨부분에 폴더 추가해주고 재 실행해봄. 역시 폴더가 없어서 발생한 문제...이제 백업이 잘됨

 

아래는 고민의 흔적.. 쭉 밑으로 가서 고난의 여정 끝 뒤로 읽어주세요.

 

https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms-19?view=sql-server-ver16 

 

Download SQL Server Management Studio (SSMS) 19 - SQL Server Management Studio (SSMS)

Download the latest version of SQL Server Management Studio (SSMS) 19.

docs.microsoft.com

 

잠정 결론은 server collation 을 할수 있는 방법을 찾아야 한다는 결론을 내려서 방법을 찾는중입니다.

N 과 %를 사용하는 방법이 있지만, 코드를 만들때마다 반복을 하고 싶진 않기때문에 도전해보려합니다.

 

일단 2022버전에서는 서버 collation이 가능하지만 ssms가 버전이 안맞습니다. 19 프리뷰 버전이 있긴한데 이건 영문버전이라 또 매칭이 안되더군요. 현시점에서는 서버2019 버전에 맞는 ssms 18버전으로 매칭을 해야한다는 추측을 해보고 그에 맞춰서 찾아보고 있는 중입니다.

 

 

또 다른 레퍼런스

https://docs.microsoft.com/ko-kr/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash 

 

Docker: SQL Server on Linux의 컨테이너 설치 - SQL Server

이 빠른 시작에서 Docker를 사용하여 Linux에서 SQL Server 2017 및 2019 컨테이너 이미지를 실행하는 방법을 보여 줍니다. 데이터베이스에 연결하고 쿼리를 실행합니다.

docs.microsoft.com

 

 

또 다른 레퍼런스

https://docs.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-server-collation?view=sql-server-ver16 

 

Set or Change the Server Collation - SQL Server

Set or Change the Server Collation

docs.microsoft.com

 

결국 삽질하다가 발견

시스템 collation을 korean_wansung_ci_as로 드디어 변경했다.

잊기 전에 메모해두기...

 

단계별로

푸티로 도커페이지에서 풀링해옴

docker pull mcr.microsoft.com/mssql/server:2019-latest

 

그 뒤에 푸티에서  이렇게 실행시키고 ssms에서 확인했음. (sudo 명령이 안먹혔던 이유가 중간에  패스워드에 !가 있어서 명령어를 못찾았던것, !는 명령어라서 텍스트 중간에 !가 들어가면 안됨)
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(@)Password" -e "MSSQL_COLLATION=Korean_Wansung_CI_AS"  -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest

 

재밋는건 시놀로지 도커상에서 집어넣으려면 에러가 나던 환경변수가 떡하니 들어가 있는데...이게 안되서 그 삽질을 했는데... 다시 한번 찾아봐야겠다.

이제 name 부분 설정만 코드(아래와 같이)로 하던지 아니면 편집을 해보던지 해야겠다.

sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(@)Password" -e "MSSQL_COLLATION=Korean_Wansung_CI_AS"  -p 1433:1433 --name slq1 -d mcr.microsoft.com/mssql/server:2019-latest

 

 

실험1) 환경변수만 저 대로놓고 실험을 해봤는데 접속이 안됐다.

실험2) 푸티에서 도커런을 시키면 볼륨부분은 비어 있다. 접속이 된다.

실험3) 볼륨을 비우고 위와 같이 실행을 해보겠다. 접속이 됐다가 서버가 중지됐다.

 

여기까지 결론은 위의 코드를 써서 도커를 실행시켜야 제대로 작동된다.

고난의 여정 (끝)----------------------------------

 

 

 

B11. 잘되는걸 확인했으니 SSMS에 접속하겠습니다. SSMS에서 원래 사용하던 서버에 접속을 하시고 플러그모양(빨간 동그라미)를 클릭하면 

B12. 다시 로그인 창이 뜨고 서버이름에 내가 만든 서버를 넣고 B7에서

MSSQL_SA_PASSWORD 를 만들고 넣었다는 점 기억하시지요? 중간에 SA가 로그인의 SA입니다.

입력했던 비밀번호를 넣고 연결을 해줍니다.

B13. SSMS를 보시면 두개의 서버가 연결됐다는걸 볼 수 있습니다.

B14.  DB생성을 위해서, 백업 타겟이 될 데이터베이스 폴더를 우클릭하고 새 테이터베이스(2)를 클릭해줍니다.

B15. 원하는 DB이름을 데이터베이스 이름 칸에 적고, 확인을 누르면 됩니다.

아래 초록색이 3줄인 이유는 데이터베이스 이름을 치면 논리적이름이 자동으로 똑같이 만들어집니다. (= 그냥 이름만 적으시면 됩니다.)

B16. DB가 생성됐습니다. 뭐뭐2022로 지었습니다.

B17. 이제 1번을 원본 DB, 2번을 타겟DB로 부르겠습니다.

B18. 원본DB 우클릭 > 태스트 > 데이터 내보내기 '클릭'

B19. NEXT

B20. 데이터원본(1) 클릭  (2) SQL Server Native Client 11.0 선택

B21.  데이터 원본 부분을 선택하면 (1)과 (5)은 자동 선택됩니다.

(1)은 원본 서버, (2) SQL server 인증을 선택해주시고, (3) 원본접속 아이디 (4) 원본접속 비번 을 넣으시고

(5) 원본DB명이 나옵니다. 

* (1) 서버 이름 부분을 클릭하면 잠깐 멈추는 현상이 나오는데, 기다리시면 풀리고 서버이름부분(1)은 그냥 잘 들어가있는지 확인만 하시면 됩니다. 이렇게 설정이 끝났으면 NEXT

B22. 대상선택창이 뜨면 마찬가지로 SQL Server Native Client 11.0 선택합니다.

*이 다음 부터는 글을 잘 읽으시고 순서대로 하세요. 

B23. 적힌 번호대로만 만지세요. 우선 SQL server 인증사용만 클릭해줍니다. 

B24. 서버이름 부분의 드랍다운은 누르지 마시고 (눌러도 아무것도 안나오고 한참 기다려야합니다.) 

서버이름의 텍스트 필드 부분을 클릭해서 프롬프트가 뜨게 만들어줍니다. 

B25. 위의 1번자리에 타겟 서버이름을 적습니다. 

B26. 사용자이름(1), 암호(2)를 적고 데이터베이스(3)을 선택해줍니다. 그 다음 NEXT

B27. next

B28. 저 처럼 전체를 보내고 싶다면 (1) 클릭하고 next, 아니면 원하는 테이블만 선택해서 next

B29. next

B30. finish

B31. 작업이 수행됩니다.

B32. close

B33. 서버에 모든 테이블이 복사된걸 볼 수 있습니다. 끝! 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유