SQL서버에서 sp_OACreate를 활용한 메일발송 예제

www.wssplex.net다음 Query는 SQL Server에서 메일을 발송하는 예제입니다. 이 쿼리는 IIS-SMTP 서비스가 실행되고 있어야 합니다. 아래 코드는 CDONTS 컴포넌의 객체를 생성하여 보내는 방법입니다.

 

 

DECLARE @SenderAddress varchar(100)
DECLARE @RecipientAddress varchar(100)
DECLARE @Subject varchar(200)
DECLARE @Body varchar(8000)
DECLARE @oMail int --Object reference
DECLARE @resultcode int

SET @SenderAddress = 'serverinfo@serverinfo.pe.kr'
SET @RecipientAddress= 'webmaster@serverinfo.pe.kr'
SELECT @Subject = '이벤트 발생날짜 ' + CAST(getdate() AS varchar(12))
SET  @Body = 'This is the body of my email'

EXEC @resultcode = sp_OACreate 'CDONTS.NewMail', @oMail OUT
IF @resultcode = 0
BEGIN
   EXEC @resultcode = sp_OASetProperty @oMail, 'BodyFormat', 0
   EXEC @resultcode = sp_OASetProperty @oMail, 'MailFormat', 0
   EXEC @resultcode = sp_OASetProperty @oMail, 'Importance', 1
   EXEC @resultcode = sp_OASetProperty @oMail, 'From',@SenderAddress
   EXEC @resultcode = sp_OASetProperty @oMail, 'To',@RecipientAddress
   EXEC @resultcode = sp_OASetProperty @oMail, 'Subject',@Subject
   EXEC @resultcode = sp_OASetProperty @oMail, 'Body', @Body
   EXEC @resultcode = sp_OAMethod @oMail, 'Send', NULL
   EXEC sp_OADestroy @oMail
END

INSERT 문에 SELECT 하위 쿼리를 사용하여  초간단 설명

--Book2 에 Book에 대한 값을 넣어줍니다

INSERT INTO Book2 
SELECT  PostID, BookName, BookContent 
FROM     Book 

이때 Book  과 Book2  는 필드가 일치해야 합니다

--Book2 에 Book에 대한 특정 필드값을 넣어줍니다

INSERT INTO Book2 
               (BookName) 
SELECT  Book.BookName 

--Book2와 에 Book에서 일치하는 값을 넣어줍니다

--아래는 PostID 가 들어가있다는 가정하에  서로 PostID  일치하는 Book2에 데이터를 넣어주는 부분입니다

INSERT INTO Book2 
               (BookName) 
SELECT  Book.BookName 
FROM     Book INNER JOIN 
               Book2 AS Book2_1 ON Book.PostID = Book2_1.PostID 

----------------------------------------------------------------------------------------------------------------------

INSERT 문에 SELECT 하위 쿼리를 사용하여 하나 이상의 다른 테이블이나 뷰에서 테이블로 값을 추가할 수 있습니다. 또한 SELECT 하위 쿼리를 사용하여 동시에 여러 행을 삽입할 수 있습니다.

다음 예제에서 INSERT 문은 AdventureWorksSales.SalesReason 테이블에서 SalesReasonMarketing인 모든 행의 일부 데이터를 별도의 테이블로 삽입합니다.

USE AdventureWorks;
GO
CREATE TABLE MySalesReason (
    SalesReasonID int NOT NULL,
    Name nvarchar(50),
    ModifiedDate datetime);
GO
INSERT INTO MySalesReason
    SELECT SalesReasonID, Name, ModifiedDate
    FROM AdventureWorks.Sales.SalesReason
    WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate 
FROM MySalesReason;
GO

하위 쿼리의 SELECT 목록은 INSERT 문의 열 목록과 일치해야 합니다. 열 목록을 지정하지 않을 경우 SELECT 목록은 삽입될 테이블이나 뷰의 열과 일치해야 합니다.

INSERT...SELECT 문으로 SQL Server 2005 외부에 있는 원본의 데이터를 삽입할 수도 있습니다. INSERT 문에 SELECT를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 네 부분으로 이루어진 이름을 사용하여 연결된 서버에서 원격 테이블을 참조합니다. 자세한 내용은 연결된 서버 이름을 사용하여 데이터 원본 확인을 참조하십시오.
  • OPENROWSET를 사용하여 원격 테이블을 참조합니다. 자세한 내용은 임시 이름을 사용하여 데이터 원본 확인을 참조하십시오.
  • 원격 서버에서 실행되는 쿼리의 결과 집합을 사용합니다. 자세한 내용은 통과 쿼리를 테이블로 사용을 참조하십시오.

잘 돌아가던  웹호스팅 사이트가 특정테이블 쿼리가 안되었따 샤~앙

당삼 사이트도 안뜬다

아무리 봐도 소스는 건드린게 없꼬 호스팅 업체에 전화하니깐 MS SQL 서버는 문제가 없단다

샹..

혹시나 해서 쿼리분석기에서 테이블 셀렉트 하니깐

"데이터 공급자나 기타 서비스가 E_FAIL 상태를 반환했습니다."

라는 메세지 발생

E_FAIL

An error occurred. Error information is available from the rowset's error interfaces.

다시 전화해서 이런 이런 에레니깐  MS SQL 재부팅해달라꼬 했따

잘된다 ㅡㅡ;;;;;;;  하긴 무턱대고 재부팅해주는것도 오바지 ㅋㅋㅋ

행이 10개이면 10개안에서 의의의 값을 가지고 옵니다.!

select top 1 * from TEST  order by newid()

 

image

select * from (

select 'a' as tableID, * from a

union all

select 'b' as tableID, * from b

) as test

+ Recent posts