--다음 예에서는 AdventureWorks 데이터베이스에 있는 Employee 테이블의 현재 ID 값을 1로 설정합니다.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 1);
GO

 

DBCC CHECKIDENT ( table_name, NORESEED )

현재 ID 값을 다시 설정하지 않습니다. DBCC CHECKIDENT는 ID 열의 현재 ID 값과 현재 최대값을 반환합니다. 두 값이 같지 않으면 ID 값을 다시 설정하여 잠재적 오류를 방지하고 값이 간격 없이 순서대로 지정되도록 해야 합니다.

DBCC CHECKIDENT ( table_name)

또는

DBCC CHECKIDENT ( table_name, RESEED )

테이블의 현재 ID 값이 ID 열에 저장된 최대 ID 값보다 작을 경우 ID 열의 최대값을 사용하여 다시 설정됩니다.

DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )

현재 ID 값이 new_reseed_value로 설정됩니다. 테이블이 생성된 후 삽입된 행이 없는 경우에는 DBCC CHECKIDENT를 실행한 후에 처음 삽입되는 행이 new_reseed_value를 ID로 사용하게 됩니다. 그렇지 않으면 다음에 삽입된 행은 new_reseed_value + 현재 증분 값을 사용합니다.

테이블이 비어 있지 않은 경우 ID 값을 ID 열의 최대값보다 작은 숫자로 설정하면 다음 조건 중 하나가 발생할 수 있습니다.

  • ID 열에 PRIMARY KEY 또는 UNIQUE 제약 조건이 있으면 생성된 ID 값이 기존 값과 충돌하므로 나중에 테이블에 삽입 작업을 수행할 때 오류 메시지 2627이 생성됩니다.
  • PRIMARY KEY 또는 UNIQUE 제약 조건이 없으면 나중에 삽입 작업을 수행할 때 중복 ID 값이 생성됩니다.

 

 

다음예제는 날짜 형식을 받을때  생기는 오류를 체크해서 NULL 로 삽입하고 있습니다.

DECLARE @생년월일 SMALLDATETIME

BEGIN  TRY	
		SELECT @생년월일 = 생년월일 FROM INSA WHERE 사번='000206'	
END TRY
BEGIN CATCH
		PRINT '날짜변경오류'
		SET @생년월일 = NULL
END CATCH
참고로 SQL 2005 부터 사용가능합니다.

 

오류났을때 메세지 보여주기(추가된 코드)

SELECT    ERROR_LINE() AS 'ERROR_LINE'
SELECT    ERROR_MESSAGE() AS 'ERROR_MESSAGE'
SELECT    ERROR_NUMBER() AS 'ERROR_NUMBER'
SELECT    ERROR_PROCEDURE() AS 'ERROR_PROCEDURE'
SELECT    ERROR_SEVERITY()  AS 'ERROR_SEVERITY'
SELECT    ERROR_STATE()  AS 'ERROR_STATE'

오류가 났을때 표시되는 결과값

image

다음예제는 날짜 형식을 받을때  생기는 오류를 체크해서 NULL 로 삽입하고 있습니다.
또한 오류가 발생하면 오류정보를 표시하고 있는중

DECLARE @생년월일 SMALLDATETIME

BEGIN  TRY	
		SELECT @생년월일 = 생년월일 FROM INSA WHERE 사번='000206'	
END TRY
BEGIN CATCH
		PRINT '날짜변경오류'
		SET @생년월일 = NULL
	SELECT	ERROR_LINE() AS 'ERROR_LINE'
	SELECT	ERROR_MESSAGE() AS 'ERROR_MESSAGE'
	SELECT	ERROR_NUMBER() AS 'ERROR_NUMBER'
	SELECT	ERROR_PROCEDURE() AS 'ERROR_PROCEDURE'
	SELECT	ERROR_SEVERITY()  AS 'ERROR_SEVERITY'
	SELECT	ERROR_STATE()  AS 'ERROR_STATE'


END CATCH

참고할 만한 사항

http://technet.microsoft.com/ko-kr/library/ms179296(SQL.90).aspx

 

변경 내용을 저장할수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다.

[테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함]옵션을 설정했습니다.

image

이런메세지가 뜬다면;;;

 

image

 

 

image

테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 체크해제!

image

/*
** Retrieve the owner object(s) of a given property
*/
create procedure dbo.dt_getobjwithprop_u
@property varchar(30),
@uvalue nvarchar(255)

as

set nocount on

if (@property is null) or (@property = '')
begin
  raiserror('Must specify a property name.',-1,-1)
  return (1)
end

if (@uvalue is null)
  select objectid id from dbo.dtproperties
   where property=@property

else
  select objectid id from dbo.dtproperties
   where property=@property and uvalue=@uvalue

GO

기본적인 구조

--커서네임 CUR_CHECK_MEMBER 

--커서로 추가할 라인 검색
DECLARE CUR_CHECK_MEMBER CURSOR FOR

       SELECT  *  FROM  FRIENDS_EVENT

OPEN CUR_CHECK_MEMBER
FETCH NEXT FROM CUR_CHECK_MEMBER

WHILE @@FETCH_STATUS = 0
        BEGIN
         PRINT 'FETCH LOOP'
FETCH NEXT FROM CUR_CHECK_MEMBER  --요거 안해주면 무한루프 ㅋㅋ

        END

CLOSE CUR_CHECK_MEMBER

DEALLOCATE CUR_CHECK_MEMBER

커서마다 idx(필드네임) 값 가져오기

DECLARE @IDX INT <--- 가져오 필드네임

DECLARE CUR_CHECK_MEMBER CURSOR FOR

       SELECT  IDX  FROM  FRIENDS_EVENT

OPEN CUR_CHECK_MEMBER
FETCH NEXT FROM CUR_CHECK_MEMBER INTO @IDX

WHILE @@FETCH_STATUS = 0
        BEGIN
         PRINT @IDX

FETCH NEXT FROM CUR_CHECK_MEMBER INTO @IDX

        END

CLOSE CUR_CHECK_MEMBER

DEALLOCATE CUR_CHECK_MEMBER

커서가 뭐냐면...
회원정보를 하나 하나 가져와서
분석하고 처리해야하는데... 이거는 ASP 레코드셋처럼
한행 단위로 처리할수있다 ㅎㅎㅎㅎㅎ
편하다.....~
--커서선언부분
DECLARE cur_konan_Test CURSOR
FOR
SELECT idx , member_id FROM member_payment --커서에 담을 테이블 선택
--커서 오픈
OPEN cur_konan_Test
--변수 선언
DECLARE @idx int
DECLARE @member_id varchar(50)
FETCH NEXT FROM cur_konan_Test INTO @idx, @member_id --이게 레코드셋이라 생각하믄됨
* 참고 하셈-----------------------------------------------------------------------------
while @@FETCH_STATUS =0 으로 돌고있음
한마디로 말해서 에러가 없을때 까지 돌아란 말.... ㅎㅎㅎ 쉽따
0 FETCH 문은 성공적이었습니다.
-1 FETCH 문은 실패했거나 행이 결과 집합의 범위를 벗어났습니다.
-2 반입된 행이 없습니다.
----------------------------------------------------------------------------------------
WHILE @@FETCH_STATUS = 0
BEGIN
print @idx
print @member_id
FETCH NEXT FROM cur_konan_Test INTO @idx, @member_id --다음 커서로 이동~
END
--커서 CLOSE
CLOSE cur_konan_Test
--커서 DEALLOCATE
DEALLOCATE cur_konan_Test

레코드들 중에 특수문자 와 한글을 제거
SELECT  *  FROM      "테이블명"  WHERE     ("필드명" LIKE '%[^a-z^0-9]%')

숫자만 나오게 하는 방법

SELECT * FROM      members   WHERE     (email LIKE '[^a-z]%') <--첫글자 숫자만 나오게  LIKE '%[^a-z]%')  제거

EXECUTE  사용시 벨류값 리턴받기

DECLARE @STR nVARCHAR(200)
DECLARE @IDX NVARCHAR(100)
DECLARE @OUT INT

SET @STR ='SELECT @idx = MEMBER_IDX FROM CLUB_BOARDS_CATEGORY_CONTENT WHERE  club_idx=77 and category_idx=143 and idx=43 '
SET @IDX =@IDX INT OUTPUT'

EXECUTE  sp_executesql  @STR   , @IDX , @IDX = @OUT OUTPUT

결과

SELECT @OUT

select A.COUNT_ID , A.MAKEDATE , A.MEMBER_ID FROM
( SELECT MEMBER_ID , COUNT(MEMBER_ID) AS COUNT_ID , CONVERT(VARCHAR(10), MAKEDATE ) AS MAKEDATE
FROM community_renew GROUP BY MEMBER_ID , CONVERT(VARCHAR(10), MAKEDATE )
) A
LEFT OUTER JOIN
(SELECT MEMBER_ID , COUNT( MEMBER_ID )AS COUNT_ID , CONVERT(VARCHAR(10), MAKEDATE ) AS MAKEDATE
FROM community_renew GROUP BY MEMBER_ID , CONVERT(VARCHAR(10), MAKEDATE )
) B
ON A.MEMBER_ID = B.MEMBER_ID AND A.MAKEDATE = B.MAKEDATE

간단한 예제

방문자수 대비 가입자수(OUTER JOIN)

그룹바이를 위해서 하위쿼리를 사용했습니다 꼭있는 자료에게LFET 를 위로 없을수 있는 자료를 오른쪽에다가 하세요
ISNULL(a.pageView , 0 ) <-- 값이 Null 일때 0으로 표시입니다
*/

--//실제 가입한 회원수
select ISNULL(a.pageView , 0 ) as pageView , b.makedate , b.with_member , b.entry_member from
(
select count(with_member) as entry_member , convert(varchar(10) , makedate ) as makedate , with_member from with_entry_member

group by convert(varchar(10) , makedate ) , with_member

)b --//a로 별칭 주다..

--//페이지 뷰
left outer join
(
select count(with_member_id) as pageView , convert(varchar(10) , makedate ) as makedate , with_member_id from FETISH_WITH_CONNECT
group by convert(varchar(10) , makedate ) , with_member_id

) a
on a.with_member_id = b.with_member

(INNER JOIN)

TALBE 두개의 값을 동시에 가지고 올때 사용합니다
SELECT * FROM REVIEW
INNER JOIN PRODUCT
ON

REVIEW.product_num =PRODUCT.product_num

SELECT REVIEW.product_num , COUNT(REVIEW.product_num) ,PRODUCT.product_name FROM REVIEW
INNER JOIN PRODUCT
ON
REVIEW.product_num =PRODUCT.product_num
GROUP BY REVIEW.product_num , PRODUCT.product_name

HOWTO: SQL Server에서 SQL 메일을 사용하지 않고 전자 메일 보내기

이 문서가 적용되는 제품 보기.

기술 자료 ID
:
312839

마지막 검토
:
2007년 8월 13일 월요일

수정
:
10.1

이 문서는 이전에 다음 ID로 출판되었음: KR312839

이 페이지에서

요약

Microsoft Windows NT Server용 CDO(CDONTS)를 사용하는 방법

스마트 호스트 구성

CDONTS 전자 메일을 보내는 저장 프로시저 만들기

Microsoft Windows 2000용 CDO(CDOSYS)를 사용하는 방법

CDOSYS 메일을 보내는 저장 프로시저 만들기

참조

요약

SQL 메일을 사용하면 Microsoft SQL Server에서 손쉽게 전자 메일을 보내거나 읽을 수 있지만 SQL 메일이 MAPI 응용 프로그램이므로 서버에 MAPI 하위 시스템이 있어야 합니다. Microsoft Windows NT 4.0에서는 Windows Messaging을 설치할 때 MAPI 하위 시스템이 설치됩니다. 그러나 Microsoft Windows 2000에서는 MAPI 하위 시스템이 제공되지 않습니다. 따라서 SQL 메일을 사용하려면 Microsoft Outlook과 같은 MAPI 클라이언트를 설치해야 합니다.
SQL Server에서 직접 SMTP(Simple Mail Transfer Protocol) 전자 메일을 보내는 다른 방법을 사용할 수 있습니다. 예를 들어 CDONTS(NT Server용 Collaboration Data Objects)나 CDOSYS(Windows 2000용 Collaboration Data Objects)를 sp_OA SQL Server OLE 자동화 저장 프로시저와 함께 사용할 수 있습니다. 이 문서에서는 이러한 기술을 사용하여 인터넷 메일 서버에 전자 메일을 보내는 방법을 예제를 통해 설명합니다. 이러한 기술을 수정하여 보다 강력한 메일 시스템을 구축할 수도 있습니다. 예를 들어 오류 처리 코드를 추가할 수 있습니다. 이 예제에 사용된 방법으로는 전자 메일을 읽거나 처리할 수 없습니다.
참고 이러한 프로그래밍 예제는 Transact-SQL에서 CDO 개체 모델을 호출하는 데 사용할 수 있는 기술을 보여 줍니다. 이러한 예제를 프로그래밍 방식으로 확장하거나 프로덕션 환경에서 코드를 실행하는 데 필요한 스트레스 테스트를 수행할 책임은 사용자에게 있습니다.
Microsoft는 모든 보증(상품, 특정 목적에 대한 적합성 및 비침해에 대한 묵시적인 보증을 포함하며 이에 제한되지 않음)을 배제하며 예를 보여 주기 위한 목적으로만 이 프로그래밍 예제를 제공합니다. 본 문서의 내용은 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 절차를 구성하지는 않습니다. 프로그래밍에 익숙하지 않은 사용자는 MCP(Microsoft Certified Partner)의 도움을 받거나 Microsoft 고객기술지원부(02-508-0040)로 문의하십시오. MCP에 대한 자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.

https://solutionfinder.microsoft.com/ (https://solutionfinder.microsoft.com/)

Microsoft에서 제공하는 지원 서비스에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

기술지원 서비스 안내 (http://support.microsoft.com/default.aspx?scid=fh;ko;serviceoverview)

위로 가기

Microsoft Windows NT Server용 CDO(CDONTS)를 사용하는 방법
CDONTS는 웹 기반 응용 프로그램에 메시징 기능을 제공하는 SMTP 전용 OLE 서버이므로, HTML 기반 전자 메일을 보내는 기능을 지원합니다. SQL 메일과 같은 MAPI 기반 응용 프로그램은 이러한 기능을 지원하지 않습니다. Microsoft Internet Information Server(IIS) 4.0 이상에서는 기본적으로 CDONTS가 설치됩니다. Microsoft Windows 2000에서는 기본적으로 Microsoft Internet Information Server(IIS) 5.0이 설치됩니다.
CDONTS에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

177850 (http://support.microsoft.com/kb/177850/) INFO: CDO 1.2와 CDONTS의 차이점

CDONTS는 SMTP를 통해 로컬 서버에 전자 메일을 보냅니다. 로컬 서버에 SMTP 서버가 없으면 IIS에서 설치한 SMTP 가상 서버를 사용하여 SMTP 전자 메일을 해당 SMTP 메일 서버로 라우팅할 수 있습니다. CDONTS를 사용하여 SQL Server에서 전자 메일을 보내려면 다음과 같이 하십시오.

1.
SQL Server를 실행하는 컴퓨터에 IIS를 설치하여 실행합니다.

2.
IIS SMTP 서비스가 로컬 서버에 수신되는 모든 SMTP 전자 메일을 SMTP 메일 서버에 자동으로 라우팅하도록 SMTP 메일 서버를 "스마트 호스트"로 지정합니다.

3.
SQL Server에서 전자 메일을 보내는 데 사용할 수 있는 저장 프로시저를 만듭니다.

SQL 메일 대신 CDONTS를 사용할 때는 SQL Server를 실행하는 컴퓨터에 Microsoft Outlook과 같은 메일 클라이언트를 설치할 필요가 없으며 Microsoft Exchange 서버도 필요하지 않습니다. SMTP 전자 메일을 지원하는 모든 메일 서버를 "스마트 호스트"로 사용할 수 있습니다. 하지만 CDONTS를 사용하면 SQL Server를 실행하는 컴퓨터에 수신되는 전자 메일을 읽거나 처리할 수 없으며 SQL 에이전트 메일 기능을 대체할 수도 없습니다.
다음 방법에서는 Microsoft Windows 2000이 사용됩니다. 컴퓨터에 IIS 4.0이 설치되어 있으면 Microsoft Windows NT 4.0을 다음 방법과 비슷하게 구성할 수 있지만 절차가 약간 다릅니다.
Microsoft Windows NT 4.0에서 "스마트 호스트"를 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

230235 (http://support.microsoft.com/kb/230235/) XCON: SMTP 메일을 릴레이하도록 IIS SMTP 서비스를 구성하는 방법

스마트 호스트 구성

1.
시작을 누르고 프로그램, 관리 도구를 차례로 가리킨 다음
인터넷 서비스 관리자를 눌러 IIS 관리자를 엽니다.

2.
서버 트리를 엽니다. 기본 SMTP 가상 서버를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.

3.
배달 탭으로 이동한 다음 고급을 누릅니다.

4.
스마트 호스트 입력란에 SMTP 메일 서버의 이름을 입력합니다. SMTP 메일 서버의 이름을 모르면 메일 관리자에게 문의하십시오.

5.
SMTP 서비스가 실행되고 있는지 확인합니다. SMTP 서비스는 IIS 관리 서비스의 일부이므로 IIS 관리 서비스도 실행되고 있어야 합니다.

CDONTS 전자 메일을 보내는 저장 프로시저 만들기
참고 이 문서에 사용된 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 및 이벤트 등은 실제 데이터가 아닙니다. 어떠한 실제 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 이벤트와도 연관시킬 의도가 없으며 그렇게 유추해서도 안됩니다.
다음과 유사한 코드를 사용하면 master 데이터베이스에서 SQL Server OLE 자동화 저장 프로시저로 CDONTS 개체 모델을 호출하여 전자 메일을 보내는 저장 프로시저를 만들 수 있습니다.
CREATE PROCEDURE [dbo].[sp_send_cdontsmail] 
@From varchar(100),
@To varchar(100),
@Subject varchar(100),
@Body varchar(4000),
@CC varchar(100) = null,
@BCC varchar(100) = null
AS
Declare @MailID int
Declare @hr int
EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT
EXEC @hr = sp_OASetProperty @MailID, 'From',@From
EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body
EXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCC
EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC
EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject
EXEC @hr = sp_OASetProperty @MailID, 'To', @To
EXEC @hr = sp_OAMethod @MailID, 'Send', NULL
EXEC @hr = sp_OADestroy @MailID

그런 다음 이 저장 프로시저를 사용하고 올바른 매개변수를 제공하십시오.
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
참고sysadmin 고정 서버 역할의 구성원만이 OLE 자동화 저장 프로시저를 실행할 수 있습니다. SQL Server가 sysadmin 고정 서버 역할의 구성원이 아닐 경우 예제에 설명되어 있는 저장 프로시저를 사용하여 전자 메일을 보낼 수 없습니다. 이러한 상황에서는 CDONTS를 사용하여 전자 메일을 보내는 클라이언트 응용 프로그램을 개발해야 합니다. 예를 들어 Microsoft Visual Basic 응용 프로그램을 사용할 수 있습니다.
CDONTS는 SMTP 로컬 가상 서버에 전자 메일을 보냅니다. 그러면 서버는 스마트 호스트 입력란에 지정된 SMTP 메일 서버로 전자 메일을 라우팅합니다. SMTP 메일 서버는 To: 인수에 지정된 전자 메일 주소(이 예제의 경우 "someone2@example.com")로 메일을 보냅니다. From: 인수에 지정된 이름은
제목이 "Test of CDONTS"이고 메시지 본문이 "It works"인 전자 메일을 보낸 사람(이 예제의 경우 "someone@microsoft.com")으로 나타납니다. CC 또는 BCC 필드에는 인수를 제공하지 않았기 때문에 전자 메일이 아무에게도 복사되지 않습니다.
이 예제를 수정하여 HTML 기반 전자 메일이나 첨부 파일을 보낼 수 있습니다. CDONTS에 대한 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://msdn.microsoft.com/library (http://msdn.microsoft.com/library)
왼쪽 창에서 Messaging and Collaboration, Collaboration Data Objects, CDO 1.2.1을 차례로 확장하십시오.
SQL Server OLE 자동화 저장 프로시저에 대한 자세한 내용은 SQL Server 2000 온라인 설명서를 참조하십시오.

위로 가기

Microsoft Windows 2000용 CDO(CDOSYS)를 사용하는 방법
CDOSYS는 Microsoft Windows 2000에서 메시징 응용 프로그램을 개발하는 데 사용되는 개체 모델을 제공하고 기존의 CDONTS(Windows NT Server용 CDO) 라이브러리 기능을 향상시킵니다. CDOSYS를 사용하려면 Windows 2000과 로컬 또는 원격 SMTP 서버가 있어야 합니다.
프로그래밍 방식으로 SMTP 서버를 가리키도록 CDOSYS를 구성하여 개발자의 SMTP 서버 구성 작업에 대한 융통성을 높일 수 있습니다.
CDOSYS에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

195683 (http://support.microsoft.com/kb/195683/) INFO: 1.x CDO 라이브러리와 CDOSYS.DLL의 관계

CDOSYS가 원격 SMTP 서버에 전자 메일을 보낼 수 있으므로 SQL Server를 실행하는 컴퓨터에 Internet Information Server를 설치하여 실행할 필요가 없으며 SMTP 가상 서버를 구성할 필요도 없습니다. SQL Server에서 전자 메일을 보내는 데 사용할 수 있는 저장 프로시저를 만들기만 하면 됩니다.
SQL 메일 대신 CDOSYS를 사용할 때는 SQL Server를 실행하는 컴퓨터에 Microsoft Outlook과 같은 메일 클라이언트를 설치할 필요가 없으며 Exchange 서버도 필요하지 않습니다. SMTP 메일을 원격 SMTP 메일 서버로 지원하는 모든 메일 서버를 사용할 수 있습니다. 하지만 CDOSYS를 사용하면 SQL Server에 수신되는 전자 메일을 읽거나 처리할 수 없으며 SQL 에이전트 메일 기능을 대체할 수도 없습니다.
CDOSYS를 SQL Server OLE 자동화 개체와 함께 사용하면 SQL Server OLE 자동화를 통해 CDOSYS 개체 모델이 호출되는데, 이는 SQL Server 2000 서비스 팩 1(SP1)과 SQL Server 2000 서비스 팩 2(SP2)에서 테스트되었습니다. Microsoft는 SQL Server 2000 SP1 이전에 릴리스된 SQL Server 서버 버전에서 OLE 자동화 저장 프로시저로부터 CDOSYS를 호출할 수 있다고 보증하지 않습니다.


CDOSYS 메일을 보내는 저장 프로시저 만들기
다음과 유사한 코드를 사용하면 master 데이터베이스에서 SQL Server OLE 자동화 저장 프로시저로 CDOSYS 개체 모델을 호출하여 전자 메일을 보내는 저장 프로시저를 만들 수 있습니다.
CREATE PROCEDURE [dbo].[sp_send_cdosysmail] 
   @From varchar(100) ,
   @To varchar(100) ,
   @Subject varchar(100)=" ",
   @Body varchar(4000) =" "
/*********************************************************************

This stored procedure takes the parameters and sends an e-mail. 
All the mail configurations are hard-coded in the stored procedure. 
Comments are added to the stored procedure where necessary.
References to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/ 
   AS
   Declare @iMsg int
   Declare @hr int
   Declare @source varchar(255)
   Declare @description varchar(500)
   Declare @output varchar(1000)

--************* Create the CDO.Message Object ************************
   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address. 
-- Replace MailServerName by the name or IP of your SMTP Server.
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'MailServerName' 

-- Save the configurations to the message object.
   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
   IF @hr <>0 
     select @hr
     BEGIN
       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
       IF @hr = 0
         BEGIN
           SELECT @output = '  Source: ' + @source
           PRINT  @output
           SELECT @output = '  Description: ' + @description
           PRINT  @output
         END
       ELSE
         BEGIN
           PRINT '  sp_OAGetErrorInfo failed.'
           RETURN
         END
     END

-- Do some error handling after each step if you have to.
-- Clean up the objects created.
   EXEC @hr = sp_OADestroy @iMsg
   go
그런 다음 이 저장 프로시저를 사용하고 올바른 매개변수를 제공하십시오.
   declare @Body varchar(4000)
   select @Body = 'This is a Test Message'
   exec sp_send_cdosysmail 'someone@example.com','someone2@example.com','Test of CDOSYS',@Body
참고sysadmin 고정 서버 역할의 구성원만이 OLE 자동화 저장 프로시저를 실행할 수 있습니다. SQL Server가 sysadmin 고정 서버 역할의 구성원이 아닐 경우 예제에 설명되어 있는 저장 프로시저를 사용하여 전자 메일을 보낼 수 없습니다. 이러한 상황에서는 CDOSYS를 사용하여 메일을 보내는 클라이언트 응용 프로그램을 개발해야 합니다. 예를 들어 Microsoft Visual Basic 응용 프로그램을 사용할 수 있습니다.
CDOSYS는 cdoSMTPServerName으로 지정된 원격 SMTP 메일 서버에 전자 메일을 보냅니다.
SMTP 메일 서버는 To: 인수에 지정된 전자 메일 주소(이 예제의 경우 "someone2@example.com")로 메일을 보냅니다. From: 인수에 지정된 이름은 제목이 "Test of CDONTS"이고
@sHTML 변수에 포함된 HTML 형식의 전자 메일을 보낸 사람(이 예제의 경우 "someone@microsoft.com")으로 나타납니다.
이 예제를 수정하여 텍스트 기반 전자 메일이나 첨부 파일을 보낼 수도 있습니다. CDOSYS에 대한 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
MSDN Library (http://msdn.microsoft.com/library)
왼쪽 창에서 Messaging and Collaboration, Collaboration Data Objects, CDO for Windows 2000을 차례로 확장하십시오.

위로 가기

참조

SQL Server OLE 자동화 저장 프로시저에 대한 자세한 내용은 SQL Server 2000 온라인 설멍서의 "SQL Server OLE 자동화 저장 프로시저" 관련 항목을 참조하십시오.
그래도 원하는 정보를 찾을 수 없으면 다음 Microsoft SQL Server 뉴스 그룹을 방문하십시오. Microsoft SQL Server 뉴스 그룹(영문) (http://support.microsoft.com/newsgroups/)
이 문서나 다른 Microsoft SQL Server 기술 자료 문서에 대한 의견이 있으면 SQLKB@Microsoft.com (mailto:sqlkb@microsoft.com)으로 보내주시기 바랍니다.

1.게시하려는 데이터베이스 보안에

인터넷게스트계정과  에이젼트 계정을 설정한다

2.스냅샷 계정에는 에이젼트 계정에 대한 읽기 쓰기 권한을 부여해야한다

(인터넷계정도 마찬가지)

 

image

3.사용자 맵핑은 배포도 꼭체크해주어야 한다

 

image

스냅샷 폴더에는

에이젼트 사용자와

인터넷 게스트 계정을 읽고 쓰기가 가능하도록 설정한다

image

게시속성에 폴더는 다이렉트로 안가고

네트워크 경로로 찾아간다

에이젼트 계정을 지정하지 않았을떈 \\TEM4\SQLServer2005SQLAgentUser$Team4$MSSQLSERVER

계정에 속성을 지정해준다

웹 동기화 구성마법사에서 공유 디렉토리는

\\Team4\D$\KOJAEDOO\MOBILE 이런씩으로 가면안되고

\\Team4\MOBILE 이렇게 실제 공유 경로로 찾아가야 한다

image

+ Recent posts