독까의 이야기

1.  구축 방법

  -  1.  메일계정 생성
     ->  SSMS 실행 - 관리 - 데이터베이스 메일 선택 - 우클릭
     ->  데이터베이스 메일 구성 실행
     ->  데이터베이스 메일 계정 및 프로필 관리 선택 후 새 계정 만들기
     ->  계정 이름, SMTP 설정 (메일주소, 메일서버), SMTP 인증 정보 입력 (예: 기본인증 선택 후 사용자 이름, 암호 입력)
     ->  여기 입력한 메일서버를 통해서 메일을 발송하는 것임

  -  2.  프로필 생성
     ->  데이터베이스 메일 구성 실행
     ->  "다음 태스크를 수행하여 데이터베이스 메일 설치" 선택
     ->  프로필 이름 입력하고 위에서 만든 메일 계정을 추가
     ->  공개 프로필 또는 개인 프로필 선택
         (공개 프로필로 지정해 놓으면 SQL 서버의 모든 사용자들이 이 프로필을 이용하여 메일을 발송할 수 있음)

  -  3.  SQL Server 에이전트 구성
     ->  SQL Server 에이전트 선택 - 우클릭 - 속성
     ->  경고 시스템 선택
     ->  메일세션에서 메일 프로필 설정을 체크하고 2에서 만든 프로필을 지정
     ->  확인 후 SQL Server 에이전트 서비스 재시작 (SQL Server 구성 관리자에서 서비스 재시작 가능)

  -  4.  운영자 등록
     ->  SQL Server 에이전트에서 운영자 추가
     ->  이름, 전자메일 주소 등록

  -  5.  테스트
     ->  메일 정상 발송 확인



2.  테스트 서버에 MS-SQL 설치
  -  MS-SQL 2008 R2 에서 메일 발송 테스트
     ->  SSMS 실행 - 관리 - 데이터베이스 메일 - 우클릭 - 데이터베이스 메일 구성
     ->  "다음 태스크를 수행하여 데이터베이스 메일 설치"
     ->  프로필 이름 : 프로필 이름을 선택하여 메일을 발송하기 때문에 정확한 프로필 기입 필수
                       프로필 : gunnm
     ->  SMTP 계정 - 추가 - 새계정
     ->  계정 이름 : gunnm / 설명 : gunnm
     ->  보내는 메일 서버(SMTP)
     ->  전자 메일 주소 : test@naver.com
     ->  표시 이름 : 메일 수신자가 확인 가능한 이름 / "정주원"
     ->  회신 전자 메일 : gunnm@tistory.com
     ->  서버 이름 : 192.168.10.101 / 포트 번호 25  (서버 이름에는 서버의 IP 주소를 입력)
     ->  SMTP 인증 : 기본 인증 : gunnm / 1234 (로컬 계정에 등록되어 있지 않더라도 상관 없음)
                     (어떠한 방식을 선택하여도 메일 발송은 되었음)
     ->  프로필 보안 관리 : 공개 프로필 / 개인 프로필 선택 가능
                            Default 는 공개 프로필

     ->  SQL Server 에이전트 - 우클릭 - 속성 - 경고 시스템
     ->  메일 프로필 설정 체크 - 메일 시스템 : 데이터베이스 메일 - 메일 프로필 : jjw - 확인

     ->  메일 발송 테스트
     ->  데이터베이스 메일 - 우클릭 - 테스트 전자 메일 보내기
     ->  데이터베이스 메일 프로필 : gunnm
     ->  받는 사람 : gunnm@tistory.com
     ->  제목 : SQL 메일 테스트
     ->  본문 : 이 메일은 SQL 에서 발송하는 테스트 메일 입니다.
     ->  메일 계정 들어가서 수신 확인

     ->  쿼리문으로 작성하여 메일 발송
     ->  USE msdb
     GO
     EXEC sp_send_dbmail @profile_name='gunnm', -- SQL 에서 보내는 프로필
         @recipients='gunnm@tistory.com', -- 받는 사람 메일 주소
     @subject='SQL 메일 테스트', -- 제목
     @body='이 메일은 테스트 메일 입니다.' -- 본문

     ->  업무용 데스크탑에서 192.168.10.101 의 MS-SQL 접속
     ->  원격 접속 후 메일 발송 테스트 진행
     ->  메일 발송 정상 확인

     ->  메일 계정 삭제 전에, 프로필을 먼저 삭제해야 계정 삭제가 진행 됨


3.  외부 메일 서버를 이용하여 메일 발송 (구글 메일 사용)
  -  데이터베이스 메일 계정 생성만 수정
     ->  전자 메일 주소: Google 메일 계정 입력(@gmail.com 포함)
     ->  표시 이름: 자기 이름
     ->  회신 전자 메일: 답장을 받을 메일 계정(생략 가능)
     ->  서버 이름: smtp.gmail.com
     ->  포트: 587
     ->  이 서버에는 보안 연결(SSL)이 필요합니다: 체크
     ->  기본 인증: 선택
     ->  사용자 이름: Google 메일 계정 입력(@gmail.com 포함)
     ->  암호: 메일 계정 암호
     ->  암호 확인: 메일 계정 암호 확인


4.  Reporting Services 를 이용한 보고서 메일 구독 방법
  -  시작 - SQL 2008 R2 - 구성도구 - Reporting Services 구성 관리자
     ->  전자 메일 설정
     ->  보낸 사람 주소 : 구글 메일 계정 등록
     ->  현재 SMTP 배달 방법 : SMTP 서버 사용
     ->  SMTP 서버 : smtp.gmail.com

  -  Reporting Services 구성 관리자 - 보고서 관리자 URL
     ->  링크 걸려 있는 도메인 클릭
     ->  웹브라우저 확장 되면서 보고서 관리자 페이지 출력
     ->  보고서 작성기 클릭
     ->  보고서 작성기 실행 - 새 보고서 - 테이블 또는 행렬 마법사 - 데이터 집합 만들기 - 새로 만들기
     ->  일반 탭 : 이름 : report1 - 연결 유형 선택 : MS-SQL Server - 연격 테스트
     ->  자격 증명 : 현재 윈도우 사용자를 사용 하십시오.
     ->  연결 테스트 - "연결 되었습니다." 확인
     ->  데스크탑 PC 의 웹브라우저에서
         http://192.168.10.101/reports 입력 하여 보고서 관리자 페이지 호출
         id : 관리자계정 / pw : 패스워드

'Database > MS-SQL' 카테고리의 다른 글

오토픽스 Auto Fix  (0) 2016.07.21
sa 계정 패스워드 초기화  (0) 2016.07.21
MS-SQL 다중 포트 접속 방법  (0) 2016.07.20
MS-SQL Express 자동 백업 스크립트  (0) 2016.07.20
SQL Management Studio 2014 다운로드  (0) 2016.07.20

[ MS-SQL 다중 포트 접속 방법 1]

MS-SQL 의 미러링 구성 테스트를 위하여 다중 포트 접속 시스템 설정

1.  SQL 설치 서버 접속

2.  시작 - 모든 프로그램 - SQL 폴더 - 구성 도구 - SQL Server 구성 관리자

3.  SQL Server 네트워크 구성 - MSSQLSERVER에 대한 프로토콜 - TCP/IP - IP 주소 탭

4.  스크롤 최하단으로 이동 후 IPALL 카테고리의 TCP 포트에 추가 접속할 포트를 입력

5.  1433, 14335, 14336 입력 후 확인

6.  SQL Server 서비스 - SQL Server 재시작

7.  서버 방화벽에서 추가 입력한 포트 인바운드 추가

8.  SSMS 에서 접속 방법
     ->  192.168.10.101,14335
     ->  계정 / 패스워드
     ->  정상 접속 확인 

 

[ MS-SQL 다중 포트 접속 방법 2]

다중 아이피 사용 중인 서버에서, 아이피마다 다른 접속 포트를 사용하게 구성

1.  SQL 설치 서버 접속

2.  시작 - 모든 프로그램 - SQL 폴더 - 구성 도구 - SQL Server 구성 관리자

3.  SQL Server 네트워크 구성 - MSSQLSERVER에 대한 프로토콜 - TCP/IP - 프로토콜 탭 - 모두 수신 : 아니요

4.  SQL Server 네트워크 구성 - MSSQLSERVER에 대한 프로토콜 - TCP/IP - IP 주소 탭
4-1.  IP 1 : 192.168.1.101 / TCP 포트 1433 / 사용 : 예
4-2.  IP 3 : 192.168.1.103 / TCP 포트 14335 / 사용 : 예

5.  스크롤 최하단으로 이동 후 IPALL TCP 포트 삭제 후 확인

6.  SQL Server 서비스 - SQL Server 재시작

7.  서버 방화벽에서 추가 입력한 포트 인바운드 추가

8. SSMS 접속 테스트
8-1. 192.168.1.101:1433 접속 성공 / 192.168.1.101:14335 접속 불가
8-2. 192.168.1.103:14335 접속 성공 / 192.168.1.103:1433 접속 불가

'Database > MS-SQL' 카테고리의 다른 글

sa 계정 패스워드 초기화  (0) 2016.07.21
MS-SQL 에서 메일 발송  (0) 2016.07.21
MS-SQL Express 자동 백업 스크립트  (0) 2016.07.20
SQL Management Studio 2014 다운로드  (0) 2016.07.20
MS-SQL Attatch, Detach  (0) 2016.07.20

Express 버전의 경우 서버 에이젼트가 설치되지 않아 작업스케쥴링을 설정 불가

배치파일("sqlcmd")과 프로시져를 이용한 백업 스크립트 작성 및 윈도우 작업 스케쥴을 통해 DB 자동 백업을 실행 가능

참조

http://support.microsoft.com/kb/2019698/en-us


1. 백업을 위한 프로시져 생성

// Copyright ⓒ Microsoft Corporation.  All Rights Reserved.
// This code released under the terms of the
// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
USE [master]
GO
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabases] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
-- =============================================
-- Author: Microsoft
-- Create date: 2010-02-06
-- Description: Backup Databases for SQLExpress
-- Parameter1: databaseName
-- Parameter2: backupType F=full, D=differential, L=log
-- Parameter3: backup file location
-- =============================================
 
CREATE PROCEDURE [dbo].[sp_BackupDatabases]
            @databaseName sysname = null,
            @backupType CHAR(1),
            @backupLocation nvarchar(200)
AS
 
       SET NOCOUNT ON;
           
            DECLARE @DBs TABLE
            (
                  ID int IDENTITY PRIMARY KEY,
                  DBNAME nvarchar(500)
            )
           
             -- Pick out only databases which are online in case ALL databases are chosen to be backed up
             -- If specific database is chosen to be backed up only pick that out from @DBs
            INSERT INTO @DBs (DBNAME)
            SELECT Name FROM master.sys.databases
            where state=0
            AND name=@DatabaseName
            OR @DatabaseName IS NULL
            ORDER BY Name
           
            -- Filter out databases which do not need to backed up
            IF @backupType='F'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','AdventureWorks')
                  END
            ELSE IF @backupType='D'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE IF @backupType='L'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE
                  BEGIN
                  RETURN
                  END
           
            -- Declare variables
            DECLARE @BackupName varchar(100)
            DECLARE @BackupFile varchar(100)
            DECLARE @DBNAME varchar(300)
            DECLARE @sqlCommand NVARCHAR(1000)
        DECLARE @dateTime NVARCHAR(20)
            DECLARE @Loop int                
                       
            -- Loop through the databases one by one
            SELECT @Loop = min(ID) FROM @DBs
 
      WHILE @Loop IS NOT NULL
      BEGIN
 
-- Database Names have to be in [dbname] format since some have - or _ in their name
      SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'
 
-- Set the current date and time n yyyyhhmmss format
      SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),'/','') + '_' +  REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')
 
-- Create backup filename in path\filename.extension format for full,diff and log backups
      IF @backupType = 'F'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'D'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'L'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN'
 
-- Provide the backup a name for storing in the media
      IF @backupType = 'F'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
      IF @backupType = 'D'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
      IF @backupType = 'L'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
 
-- Generate the dynamic SQL command to be executed
 
       IF @backupType = 'F'
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                  END
       IF @backupType = 'D'
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'      
                  END
       IF @backupType = 'L'
                  BEGIN
               SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'      
                  END
 
-- Execute the generated SQL command
       EXEC(@sqlCommand)
 
-- Goto the next database
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
 
END


2. 백업 프로시져 호출을 위한 bat 파일 생성

-- 전체 백업 , 윈도우 인증을 통한 SQL EXPRESS의 모든 대상 백업.
sqlcmd -S .\EXPRESS ?E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"

-- 차등 백업 ,  Login 인증을 통한 SQL EXPRESS의 모든 대상 백업.
sqlcmd -U SQLLogin -P password -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType=’D’"

-- 로그 전체 백업 , 윈도우 인증을  SQL EXPRESS의 모든 대상 백업.
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"

-- 전체 백업 , 지정된 DB 를 윈도우 인증을 통해 백업
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"