Skip to main content

2 posts tagged with "mssql"

View All Tags

MSSQL(SQL Server) 2022 설치 및 구성 방법

· 3 min read

image

MSSQL(SQL Server) 서버 설치 및 구성 방법에 대해서 공유합니다.

저는 무료로 이용하기 때문에 Developer버전으로 설치했습니다.

우선 아래 링크에서 mssql 설치 파일을 다운로드합니다.

https://www.microsoft.com/ko-kr/sql-server/sql-server-downloads

image

링크에 접속하면 위와 같은 화면이 나오는데 개발자 지금 다운로드 버튼을 누르면 다운로드를 진행합니다.

다운로드가 다 되면 설치 파일을 실행해 설치를 진행합니다.

설치 시 아래와 같이 여러 옵션이 있는데 기본 옵션을 선택해 설치하셔도 됩니다.

image

설치를 완료하고 나면 아래와 같이 Database Client 기능을 하는 SSMS(SQL Server Management Studio) 를 다운받아 설치하면 좋습니다. 설치 완료 후 서버를 재시작 해주는 것이 좋습니다.

image

설치를 완료하고 나면 하단의 window icon을 누른 뒤 configuration manager를 검색해 실행한 뒤 현재 실행 상태를 확인합니다.

image

아마 이미 실행중으로 되어 있겠지만 실행중이 아니라면 마우스 오른쪽 버튼을 눌러 SQL Server, 에이전트를 시작해 주면 됩니다.

그리고 외부에서 서버로 프로토콜에 따라 접속할 수 있도록 아래와 같이 마우스 오른쪽을 클릭해 Enable 해줍니다.

image

TCP/IP로 접속하려면 위 캡처와 같이 TCP/IP가 Enable 되어 있어야 합니다.

그리고 SQL Server 설치 시 기본 포트로 설정되는 1433 포트에 대해 Firewall 설정을 해줄 수 있습니다.

제어판에서 Windows Defender Firewall을 누른 뒤 Advanced Settings를 클릭합니다.

image

그럼 아래와 같이 rule setting이 가능한 창이 보일텐데, 여기서 왼쪽 탭에 Inbound Rules를 클릭 후 New Rule을 클릭합니다.

image

그런 뒤 아래 캡처 순서대로 입력해 주면 됩니다.

image

image

image

위 캡처에서 좀 더 보안을 강화하기 위해 block the connection 옵션을 선택한 후 추후에 rule 설정을 수정해 접속 가능한 ip나 ip 대역을 설정해 줄 수도 있습니다. 하지만 저의 경우 클라우드 서비스를 이용한 Firewall 설정이 더 편하기 때문에 클라우드에서 설정하고 여기서는 모든 connection을 허용해주기로 합니다. 그러고 다음으로 넘어가면 🚀

image

image

위와 같이 이름과 설명을 마음대로 작성하고 완료하면 설정이 완료됩니다.

그리고 위에서 설치한 SSMS를 실행하고 Windows Authentication mode로 로그인한 후 접속한 데이터베이스에서 마우스 우클릭해 properties를 클릭한 뒤 다른 서버에서 계정을 통해 로그인할 수 있도록 SQL Server and Windows Authentication mode 로 변경합니다.

image

그리고 Security 폴더에 Login 목록에서 sa(기본 생성 계정)의 properties로 진입해 status의 Login 설정을 아래와 같이 Enabled로 변경합니다. 물론 패스워드도 이 때 같이 설정해 주면 좋습니다.

image

이렇게 하면 서버 내에서 할 수 있는 로그인 설정은 끝났다고 보면 됩니다.

이 외에는 클라우드나 온프레이스 환경에서의 인프라 레벨에서의 네트워크 설정을 통해 source ip -> destination ip(inbound 설정)로 진입할 수 있도록 설정해 주면 됩니다.

How To Move Database Files To New Volume In MSSQL Server

· 3 min read
Alex Han
Software Engineer

image

IT 계열로 넘어온 후 스타트업을 전전하다가 재택근무를 위해 이직을 하다가 갑자기 꽤 큰 규모의 회사에 들어왔다.

스타트업은 개발자들이 입사를 잘 하지 않아 생각보다 많은 우대를 해줬구나를 느낀다. 

지금 다니는 회사는 개발이 메인인 회사가 아니다 보니 사실 서비스를 엑셀로도 제공하기도 하고 그런다...;

스타트업에서는 돈을 아끼기 위해서인지 무료 데이터베이스들만 사용해 왔다. Postgresql, Mysql, MongoDB 이런 데이터베이스들에 익숙해진 상태였다. 서버도 항상 리눅스 계열의 서버만 이용했고 사실 그마저도 중요하지 않았던 건 데이터베이스들은 매니지드 데이터베이스 서비스들을 이용해 와서 알아서 관리되고 있었고 가끔 복구가 필요할 때 주기적으로 스냅샷 저장해 둔 것을 토대로 복구하면 됐다.

그러나 이 회사는 내가 해 온 개발과 결이 많이 달랐다. 모든 것이 수동이다. 데이터베이스 서버 구성도 수동으로 EC2 같은 서버를 띄워두고 데이터베이스도 볼륨에 저장해 둔 뒤 용량이 가득차면 새 볼륨을 만들어 다른 볼륨에 추가해주는 방식으로 운영되어 왔다.

이것 외에도 파일 storage를 따로 두지 않고 EC2 서버에 저장해 가며 쓰는 방식도, 사람들마다 다른 언어로 만들어 놓은 개발 구조도 모든 구조를 새로 마이그레이션 해야 하지만 그 이전에 운영을 위해 용량이 가득 찬 드라이브의 데이터베이스 파일들을 신규 드라이브에 옮겨 다시 데이터베이스와 연결해 주는 작업을 해야 했다.

image

먼저 해야 할 일은 클라우드 대시보드에서 볼륨을 추가해 주고 서버와 그 볼륨을 연결해 주는 작업이다. 이런 작업들은 대시보드를 제공하는 회사들에서는 메뉴얼로 제공해주는 형태가 보통이기 때문에 그리 어렵지 않게 해결된다.

image

이제 윈도우 서버로 돌아가보자. 윈도우 서버에서 제어판을 열고 관리도구 -> 컴퓨터 관리 -> 저장소 -> 디스크 관리 순서대로 따라 오면 방금 전 대시보드에서 추가한 신규 볼륨이 보입니다.

그럼 해당 디스크는 컴퓨터 입장에서 신규로 생긴 디스크이니 디스크 초기화 및 할당을 통해 내 컴퓨터에서 들어갈 수 있도록 만듭니다.

image

데이터베이스를 다시 살펴보면 sys.master_files 테이블을 조회해 보자. 여기서는 데이터베이스에 연결된 모든 파일들의 정보를 확인할 수 있다. 간단하게는 용량이 부족하다는 것을 알게 된 데이터베이스에서 마우스 오른쪽 클릭해 속성에 들어가면 어떤 파일에 연결되어 있고 max_size가 unlimited인지 limited인지 알 수 있다. (limited라면 디스크 용량을 확인하고 unlimited로 변경해 더 많이 디스크에 할당하면 됨)

일단 unlimited 상태라서 자동으로 디스크 할당이 증가하지만 그 디스크 용량 자체가 가득 찬 상태

라면 더 이상 늘릴 수 없는 상태가 된다.

이제 새로 생성한 볼륨에 데이터베이스 파일들(mdf, ldf)을 복사해 줄 때가 됐다. 

image

우선 사전준비를 시작하자!

아까 확인한 데이터베이스 파일들이 있는 위치로 이동하고 새 디렉토리를 열어 데이터베이스 파일들을 옮길 폴더의 위치로 이동한다.

데이터베이스 파일들을 옮길 폴더 위에 마우스 오른쪽을 클릭해 속성 -> advanced -> security 에서 유저를 추가해 준다.

유저 추가 시 NT SERVICE\MSSQLSERVER 입력 후 이름 확인 후 OK 하고 적용해 준다.

그리고 복사하기 이전에 다시 데이터베이스 클라이언트로 가서 아래와 같이 코드를 입력해 준다.

# master로 실행해야 함
USE master
# 우선 데이터베이스를 오프라인시킴
ALTER DATABASE [데이터베이스 이름] SET OFFLINE
# 파일 위치를 변경함. 위의 과정 중 SQL에서 확인된 FileLogicalName을 활용해 이름 입력.
# 그리고 실제 복사한 데이터베이스 파일들의 속성 / advanced 에서 compress contents to save disk space 를 체크해제 해주는 것도 꼭 해야 함.
ALTER DATABASE [데이터베이스 이름] MODIFY FILE ( NAME='[데이터베이스 이름]', FILENAME='G:\SQLServer\DATA\[데이터베이스 이름].mdf' )
ALTER DATABASE [데이터베이스 이름] MODIFY FILE ( NAME='[데이터베이스 이름]_log', FILENAME='G:\SQLServer\DATA\[데이터베이스 이름]_log.ldf' )
# 데이터베이스 원상복귀
ALTER DATABASE [데이터베이스 이름] SET ONLINE;

이제 위의 코드에서 데이터베이스 오프라인까지 진행한 뒤,

원하는 폴더로 데이터베이스 파일들을 복사해 준다. 복사한 데이터베이스 파일들에서 하나씩 마우스 오른쪽을 클릭해 속성 -> advanced에서 compress contents to save disk space 를 체크 해제해 준다.

그런 뒤 위의 남은 쿼리들을 실행시켜 다시 정상화 해준다.

생각보다 간단하게 마무리 됐지만 데이터베이스 파일들을 옮겨 보는 일은 처음이고 데이터베이스 작업은 항상 신중히 진행해야 하기 때문에 시간이 오래 걸렸다. 다른 사람들은 이런 수고를 덜었으면 좋겠다.