MS-SQL 에서 메일 발송
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 다중 포트 접속 방법
[ 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 |
MS-SQL Express 자동 백업 스크립트
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'"
'Database > MS-SQL' 카테고리의 다른 글
MS-SQL 에서 메일 발송 (0) | 2016.07.21 |
---|---|
MS-SQL 다중 포트 접속 방법 (0) | 2016.07.20 |
SQL Management Studio 2014 다운로드 (0) | 2016.07.20 |
MS-SQL Attatch, Detach (0) | 2016.07.20 |
MS-SQL 특정 DB 의 용량 확인 및 MDF, LDF 축소 (기본) (0) | 2016.07.20 |