SQLLeader http://www.sqlleader.com/image/mainLogo.jpg http://www.sqlleader.com SQLLeader.com :: MSSQL Community Site ko Copyright 2006-2007 ADConsulting All Right Reserved. 2010-07-02T04:30:00.000 <![CDATA[ SQL Server 2000 DTS ÆÐŰÁö ¿¹¾à ÀÛ¾÷¿¡¼­ÀÇ ÆÐŰÁö À̸§ ã´Â ¹æ¹ý]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=3968 SQL Server 2000 DTS ÆÐŰÁö ¿¹¾à ÀÛ¾÷¿¡¼­ÀÇ ÆÐŰÁö À̸§ ã´Â ¹æ¹ý

 

Microsoft Premier Field Engineer

ÇѴ뼺

 

 

SQL Server 2000¿¡¼­ DTS ÆÐŰÁö¸¦ ¿¹¾à ¼³Á¤ÇÏ¸é ´ÙÀ½°ú °°ÀÌ dtsrun.exe µÚ¿¡ ÆÐŰÁö À̸§ÀÌ ¾Ïȣȭ µÇ¾î Ãß°¡µÈ´Ù.

 

 

 



 

ÆÐŰÁö¸¦ ¸¶À̱׷¹ÀÌ¼Ç Çϰųª ¿Å°Ü¾ß ÇÒ ¶§ ÀÌ ÀÛ¾÷¿¡ ¿¬°áµÈ À̸§À» ã´Â ¹æ¹ý

1) SQL Agent ³»¿¡ Á¤ÀÇµÈ À̸§À» º¹»çÇÑ´Ù.

2) ¸í·Éâ(cmd)¿¡ ºÙÀÎ ÈÄ, ¸¶Áö¸·¿¡ /!X /!C¸¦ Ãß°¡Çؼ­ ½ÇÇàÇÑ´Ù.
  /!X
´Â ½ÇÁ¦·Î ½ÇÇàÇÏÁö ¸»¶ó´Â ¼³Á¤À̸ç, /!C´Â ½ÇÇà ¹®À» Ŭ¸³º¸µå·Î º¹»çÇ϶ó´Â ¿É¼ÇÀÌ´Ù.


3)
¸Þ¸ðÀåÀ» ¿­°í ºÙ¿©³Ö±â(CTRL+V)¸¦ ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÆÐŰÁö ¸íÀÌ ³ªÅ¸³­´Ù.

 

]]>
SQL Server 2005 SSIS 2010-07-02T04:30:00.000
<![CDATA[ SSAS Cube PartitionÀ» Äõ¸®·Î ó¸®ÇÏ´Â ¹æ¹ý]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSAS&intSeq=3967

SSAS Cube PartitionÀ» Äõ¸® ¶Ç´Â ÇÁ·Î½ÃÀú µî¿¡¼­ Ã³¸®ÇÏ´Â ¹æ¹ý

Microsoft Premier Field Engineer

ÇѴ뼺 


ÀúÀå ÇÁ·Î½ÃÀú ¶Ç´Â Äõ¸®¸¦ ÅëÇØ Analysis ServicesÀÇ Å¥ºê¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù.

1.     SSIS ÆÐŰÁö¸¦ ¸¸µé°í, xp_cmdshell ¡®dtexec.exe ~~¡¯¸¦ ÀÌ¿ëÇØ¼­ ó¸®ÇÏ´Â ¹æ¹ý

2.     CLRÀ» ¸¸µé¾î È£ÃâÇÏ´Â ¹æ¹ý

3.     SSAS ¿¬°áµÈ ¼­¹ö¸¦ ¸¸µé°í Cube ProcessingÀ» ÇÏ´Â XMLA ¸í·ÉÀ» Á÷Á¢ ½ÇÇàÇÏ´Â ¹æ¹ý

 

ÀÌ Áß, ù ¹øÂ° ¹æ¹ýÀº

1)     xp_cmdshellÀ» Ȱ¼ºÈ­ ½ÃÄÑ¾ß ÇÏ´Â ºÎ´ãÀÌ ÀÖÀ¸¸ç

2)     cmd.exe¿Í dtexec.exe ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ¾î¾ß Çϸç,

3)     ÆÄÀÏ ¶Ç´Â msdb¿¡ ÀúÀåµÇ¾î ÀÖ´Â SSIS ÆÐŰÁö¸¦ ·ÎµåÇØ¾ß ÇÏ´Â ºÎÇϰ¡ ÀÖ´Ù.

 

µÎ ¹øÂ° ¹æ¹ýÀº CLRÀ» ¸¸µé°í ƯÁ¤ DB¿¡ µî·ÏÇØ¼­ »ç¿ëÇÏ¸é µÇÁö¸¸, °ü·ÃµÈ ¶óÀ̺귯¸®µéÀ» ·ÎµåÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ (È®½ÇÇÏÁö´Â ¾ÊÁö¸¸, ¿©·¯ ȯ°æ¿¡¼­ Å×½ºÆ® ÇØ º» °á°ú) SQL 2008 R2¿¡¼­´Â C:\Program Files\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll À» µî·ÏÇÒ ¶§ ´ÙÀ½°ú °°Àº ¿¡·¯°¡ ¹ß»ýÇϸ鼭 Assembly·Î µî·ÏÀÌ µÇÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ´Ù.

CREATE ASSEMBLY [AdomdClient]

AUTHORIZATION [dbo]

FROM 'C:\Program Files\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll'

WITH PERMISSION_SET = UNSAFE;

GO

/*

°æ°í: µî·Ï ÁßÀÎ SQL Server Ŭ¶óÀÌ¾ðÆ® ¾î¼Àºí¸® 'microsoft.analysisservices.adomdclient, version=10.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil.'Àº(´Â) SQL Server°¡ È£½ºÆÃµÈ ȯ°æ¿¡¼­ ¿ÏÀüÈ÷ Å×½ºÆ®µÇÁö ¾Ê¾Ò½À´Ï´Ù.

¸Þ½ÃÁö 10301, ¼öÁØ 16, »óÅ 1, ÁÙ 1

¾î¼Àºí¸® 'Microsoft.AnalysisServices.AdomdClient'ÀÌ(°¡) ÇöÀç µ¥ÀÌÅͺ£À̽º¿¡ ¾ø´Â ¾î¼Àºí¸® 'microsoft.sharepoint, version=14.0.0.0, culture=neutral, publickeytoken=71e9bce111e9429c.'À»(¸¦) ÂüÁ¶ÇÕ´Ï´Ù. SQL Server°¡ ÂüÁ¶ÇÏ´Â ¾î¼Àºí¸®¿Í °°Àº À§Ä¡¿¡¼­ ÂüÁ¶µÈ ¾î¼Àºí¸®¸¦ ã¾Æ ÀÚµ¿À¸·Î ·ÎµåÇÏ·Á°í ½ÃµµÇßÁö¸¸ ÇØ´ç ÀÛ¾÷ÀÌ ½ÇÆÐÇß½À´Ï´Ù(¿øÀÎ: 2(ÁöÁ¤µÈ ÆÄÀÏÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù.)). ÂüÁ¶µÈ  ¾î¼Àºí¸®¸¦ ÇöÀç µ¥ÀÌÅͺ£À̽º¿¡ ·ÎµåÇÏ°í ¿äûÀ» ´Ù½Ã ½ÃµµÇϽʽÿÀ.

*/

 

¸¶Áö¸· ¹æ¹ýÀº SQL Server¿¡¼­ Analysis Services¿¡ ¿¬°áµÈ ¼­¹ö¸¦ ¸¸µé°í Á÷Á¢ XML/A ¸í·ÉÀ» ½ÇÇàÇÏ´Â °ÍÀÌ´Ù.

1)     SSAS¿¡ ´ëÇÑ ¿¬°áµÈ ¼­¹ö¸¦ »ý¼ºÇÑ´Ù.

 

2)     ¼­¹ö ¿É¼Ç¿¡¼­ RPC ¹× RPC ³»º¸³»±â ¿É¼ÇÀ» True·Î ¼³Á¤ÇÑ´Ù.

 

3)     ¿¬°áÀÌ Á¦´ë·Î µÇ¾úÀ¸¸é ´ÙÀ½°ú °°ÀÌ Å¥ºê°¡ ºê¶ó¿ì¡ µÈ´Ù.

 

4)     ´ÙÀ½°ú °°Àº XML/A ¸í·ÉÀ» ½ÇÇàÇϸé 󸮰¡ µÈ´Ù.

declare @execStr as nvarchar(max)

set @execStr = N'

<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">

  <Parallel>

    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200">

      <Object>

        <DatabaseID>Adventure Works DW</DatabaseID>

        <CubeID>Adventure Works DW</CubeID>

        <MeasureGroupID>Fact Currency Rate</MeasureGroupID>

        <PartitionID>Currency_Rates</PartitionID>

      </Object>

      <Type>ProcessFull</Type>

      <WriteBackTableCreation>UseExisting</WriteBackTableCreation>

    </Process>

  </Parallel>

</Batch>'

exec (@execStr) AT KRDSHANAS

 

 

-³¡-

]]>
SQL Server 2005 SSAS 2010-07-02T04:22:00.000
<![CDATA[ µ¥ÀÌÅÍ ¿øº»¿¡ ÀúÀå ÇÁ·Î½ÃÀú »ç¿ëÇϱâ]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=3647

µ¥ÀÌÅÍ ¿øº»¿¡ ÀúÀå ÇÁ·Î½ÃÀú »ç¿ëÇϱâ

 

Microsoft Premier Field Engineer

ÇѴ뼺

 

¸ðó·³ ¿À·£¸¸¿¡ ±ÛÀ» ¿Ã¸®³×¿ä. ¿ì¿¬Âú°Ô ÁÁÀº ¹æ¹ýÀ» ¾Ë°Ô µÇ¾î °øÀ¯ÇϰíÀÚ ¿Ã¸³´Ï´Ù.

 

SSIS¿¡¼­ µ¥ÀÌÅÍ È帧 ÀÛ¾÷À» »ç¿ëÇÒ ¶§ ¿©·¯ Á¦¾à »çÇ×µé ¶§¹®¿¡ »ç¿ëÇϱⰡ ±î´Ù·Î¿î °æ¿ì°¡ ÀÖ¾úÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¿¹·Î µé¾îº¸°Ú½À´Ï´Ù.

CREATE PROC TestProc

AS

        CREATE TABLE #RESULT

        (

               SEQ INT,

               COL1 INT,

               COL2 INT

        )

 

        INSERT #RESULT VALUES(1,2,3)

        INSERT #RESULT VALUES(4,5,6)

 

        SELECT * FROM #RESULT

GO

 

EXEC dbo.TestProc

/*

SEQ         COL1        COL2

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

1           2           3

4           5           6

*/


Áö±ØÈ÷(?) Á¤»óÀûÀÎ ÇÁ·Î½ÃÀúó·³ º¸ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÇüÅ·ΠÇÁ·Î½ÃÀú¸¦ ¸¸µé¾î¼­ SSISÀÇ µ¥ÀÌÅÍ ¿øº»¿¡¼­ ¸· ¾µ·Á°í Çϸé,



ÀÌ¿Í °°Àº ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³ª¸é¼­ ¿­ Á¤º¸¸¦ ¼³Á¤ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ¾î¶»°Ôµç ¿­ Á¤º¸°¡ ³ª¿Í¾ß ¸ÅÇÎÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ» °ÍÀε¥ ¿­ Á¤º¸°¡ ³ªÅ¸³ªÁö ¾ÊÀ¸´Ï ´õ ÀÌ»ó ¾µ ¼ö°¡ ¾ø½À´Ï´Ù.

 

1. SET FMTONLY OFF ±¸¹®À» Ãß°¡

¿ì¼±, ´ÙÀ½°ú °°ÀÌ ÀúÀå ÇÁ·Î½ÃÀú¿¡ SET FMTONLY OFF ±¸¹®À» Ãß°¡ÇÏ°í ½ÇÇàÇØ º¾½Ã´Ù.

ALTER PROC TestProc

AS

 

SET FMTONLY OFF

 

        CREATE TABLE #RESULT

        (

               SEQ INT,

               COL1 INT,

               COL2 INT

        )

 

        INSERT #RESULT VALUES(1,2,3)

        INSERT #RESULT VALUES(4,5,6)

 

        SELECT * FROM #RESULT

GO



¿­ Á¤º¸°¡ Àß ³ªÅ¸³³´Ï´Ù. ~!

ÀÌ·¸°Ô 󸮵Ǵ ÀÌÀ¯¸¦ °£·«È÷ ¼³¸íÇÏÀÚ¸é ´ÙÀ½°ú °°½À´Ï´Ù.

A.     SSIS¿¡¼­ ¿­ Á¤º¸¸¦ Àоî¿Ã ¶§¿¡´Â ÀÚµ¿À¸·Î SET FMTONLY ON ¿É¼ÇÀ» ÄÒ »óÅ¿¡¼­ ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¿­ Á¤º¸¸¦ Àоî¿À°Ô µË´Ï´Ù. SET FMTONLY ON ¿É¼ÇÀº ¡°Å¬¶óÀ̾ðÆ®ÀÇ ¸ÞŸ Á¤º¸¸¸ ¹ÝȯÇÕ´Ï´Ù. Äõ¸®¸¦ ½ÇÁ¦·Î ½ÇÇàÇÏÁö ¾Ê°í ÀÀ´ä Çü½ÄÀ» Å×½ºÆ®ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.¡±·Î µµ¿ò¸»¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù.

B.     ¹®Á¦´Â SET FMTONLY ON ¿É¼ÇÀ¸·Î´Â Àӽà Å×À̺íÀÌ »ý¼ºµÇÁö ¾Ê´Â´Ù´Â Á¡ÀÔ´Ï´Ù. SET FMTONLY ON ¿É¼ÇÀ» ÄÒ »óÅ¿¡¼­ ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇϴϱñ Àӽà Å×À̺íÀÌ ¾È ¸¸µé¾îÁö°í, ÀÓ½ÃÅ×À̺íÀÌ ¾øÀ¸´Ï±ñ ¿­ Á¤º¸¸¦ ¸ô¶ó¼­ ¿­ ¸ÅÇÎÀÌ ½ÇÆÐÇÏ´Â °ÍÀÔ´Ï´Ù.

C.     ÇÁ·Î½ÃÀú ³»¿¡ °­Á¦·Î SET FMTONLY OFF ¸í·ÉÀ» ³Ö¾î¹ö·È½À´Ï´Ù. ÀÌ·¸°Ô Çϸé SSIS¿¡¼­ ¿­ Á¤º¸¸¦ Àо ¶§ SET FMTONLY ON ¸í·ÉÀ» ÄѼ­ µé¾î¿Ô´õ¶óµµ OFF ½ÃÄѼ­ Àӽà Å×À̺íÀ» ¸¸µé°í ÀÌ¿¡ ´ëÇÑ Á¤º¸¸¦ Àо ¼ö ÀÖ°Ô µË´Ï´Ù.

º¹ÀâÇϸé Åë°ú.. ÇÏÁö¸¸, ¿©±â¼­ ³¡Àº ¾Æ´Õ´Ï´Ù. ÀÌÁ¦ ÆÐŰÁö¸¦ ´ëÃæ ±¸¼ºÇؼ­ ½ÇÇà½ÃÄÑ º¾´Ï´Ù.





[OLE DB Source [1]]
¿À·ù: A rowset based on the SQL command was not returned by the OLE DB provider.

ÀÌÇØÇϱ⠽±Áö ¾ÊÀº ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµË´Ï´Ù. ¹Ì¸®º¸±â ÇØµµ Àß ³ª¿À°í ¿­ Á¤º¸µµ Àß ³ª¿À´Âµ¥ ¹¹°¡ ¹®Á¦¶õ ¸»Àΰ¡.

 

2. SET NOCOUNT ON ±¸¹®À» Ãß°¡

À̹ø¿¡µµ, ´ÙÀ½°ú °°ÀÌ ÀúÀå ÇÁ·Î½ÃÀú¿¡ SET NOCOUNT ON ±¸¹®À» Ãß°¡ÇÏ°í ½ÇÇàÇØ º¾½Ã´Ù.

ALTER PROC TestProc

AS

 

SET FMTONLY OFF

SET NOCOUNT ON

 

        CREATE TABLE #RESULT

        (

               SEQ INT,

               COL1 INT,

               COL2 INT

        )

 

        INSERT #RESULT VALUES(1,2,3)

        INSERT #RESULT VALUES(4,5,6)

 

        SELECT * FROM #RESULT

GO

 


Àß~~¼öÇàµË´Ï´Ù.

SET NOCOUNT ONÀº ´ëÃæ ¾î¶² ±â´ÉÀ» ÇÏ´ÂÁö ¾Æ½Ç °ÍÀÔ´Ï´Ù.

A.     SET NOCOUNT ON ¿É¼ÇÀ» ³ÖÁö ¾ÊÀº »óÅ¿¡¼­ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ½ÇÇà ½ÃŰ¸é ´ÙÀ½°ú °°ÀÌ Ã³¸® ´Ü°è¿¡¼­ ½ÇÇàµÈ °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù.

B.     SET NOCOUNT ON ¿É¼ÇÀ» ³ÖÀ¸¸é ´ÙÀ½°ú °°ÀÌ °á°ú¸¸ Ãâ·ÂµË´Ï´Ù.

C.     SSISÀÇ µ¥ÀÌÅÍ È帧¿¡¼­´Â ¡°¸î °³ ÇàÀÌ Ã³¸®µÇ¾ú½À´Ï´Ù.¡±¶ó´Â ¸Þ½ÃÁöµµ °á°ú°ªÀ¸·Î ÀνÄÇØ¼­ ó¸®ÇÏ°Ô µË´Ï´Ù. ÀÌ¹Ì ¿­ Á¤º¸¸¦ ÀÌ¿ëÇØ¼­ ¼¼ °³ÀÇ ¿­ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù¶ó°í ¼³Á¤ÇØ ³ù´Âµ¥ ÀÌ»óÇÑ(?) ¹®ÀÚ¿­(1 rows(s) affected)ÀÌ ¸ÕÀú ³ªÅ¸³ª´Ï±ñ ¿¡·¯¸¦ ¹ß»ý½ÃŲ °ÍÀÔ´Ï´Ù.

D.    SET NOCOUNT ON ¿É¼ÇÀ¸·Î Àú·± Á¤º¸ ¸Þ½ÃÁö¸¦ ³ªÅ¸³»Áö ¾Êµµ·Ï ÇÑ °ÍÀÔ´Ï´Ù. ÀÚ¿¬È÷ ¹Ì¸® Á¤ÇÑ ¿­ Á¤º¸ ¸ð¾ç´ë·Î Ãâ·ÂµÇ±â ¶§¹®¿¡ Á¤»óÀûÀ¸·Î ÆÐŰÁö°¡ ½ÇÇàµË´Ï´Ù.

 

 

SSIS Beta ¹öÀüºÎÅÍ ÇØ¿ÔÁö¸¸ Á¶±Ý Àü±îÁöµµ "SSIS¿¡¼­´Â ÀÌ°Ç ¾È µÇ´Â ±â´ÉÀ̾ß.¡±¶ó°í ´ÜÁ¤Çϰí ÀÖ¾ú´ø ³»¿ëÀÔ´Ï´Ù. Á¶±Ý ´õ ±íÀÌ »ìÆìºÃ´Ù¸é Á» ´õ ÀÏÂï ¾Ë ¼öµµ ÀÖ¾úÀ» ¼öµµ ÀÖ¾ú´Âµ¥. ÇÁ·ÎÁ§Æ® ÇÒ ¶§ À̰ÍÀÌ ¾ÈµÇ¼­ ´Ù¸¥ ¹æ½ÄÀ¸·Î °í»ý °í»ýÇØ¼­ ó¸®Çß´ø »ý°¢ÀÌ ³ª³×¿ä~~^^

 

]]>
SQL Server 2005 SSIS 2009-12-06T08:18:00.000
<![CDATA[ SQL Server 2008ÀÇ »õ·Î¿î ±â´É - Parameter Embedding Optimization]]> ¼ÛÇõ http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005TSQL&intSeq=3627 SQL Server 2008¿¡ Àç¹ÌÀÖ´Â ¿ÉƼ¸¶ÀÌÀú ±â´ÉÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù.

ÇÏÁö¸¸ ¹ö±×·Î ÀÎÇØ¼­ SP1 ¶Ç´Â RTM CU4ºÎÅÍ´Â ÀÌ ±â´ÉÀ» »ç¿ëÇÒ ¼ö ¾ø¾úÁö¸¸,

¾ó¸¶ Àü¿¡ ³ª¿Â SP1 CU5¿¡¼­ ¹ö±×¸¦ ¼öÁ¤ÇÏ¿© ÀÌ ±â´ÉÀ» ´Ù½Ã Á¦°øÇϰí ÀÖ½À´Ï´Ù.

 

Parameter Embedding OptimizationÀ̶ó°í ºÒ¸®¸ç, OPTION(RECOMPILE)À» »ç¿ëÇÏ´Â Äõ¸®ÀÇ °æ¿ì ½ÇÇà°èȹÀ» ÄÄÆÄÀÏ ÇÒ ¶§ ½ÇÁ¦ ¸Å°³º¯¼öÀÇ °ªÀ» °¡Áö°í ÄÄÆÄÀÏ ÇÏ´Â ±â´ÉÀÔ´Ï´Ù. ±×·¸´Ù¸é ºÐ¸í ±âÁ¸º¸´Ù È¿À²ÀûÀÎ Ç÷£À» ¸¸µé¾îÁÙ °Í ÀÔ´Ï´Ù. ¹¹ ´ç¿¬ÇÏ´Ù°í »ý°¢ÇÒ ¼ö µµ ÀÖÀ» °Í °°½À´Ï´Ù. Ç÷£ ij½Ã¸¦ Àç»ç¿ëÀ» Æ÷±âÇϸç recompile¿É¼Çµµ Ãß°¡Çߴµ¥~ Ç÷£±îÁö ÀÌ»óÇÏ´Ù¸é Á» ÀÌ»óÇϰÚÁÒ!

 

ÀÌ ±â´ÉÀÌ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Â °æ¿ì´Â Äõ¸®°¡ º¯¼ö¿¡ µû¶ó¼­ Ç÷£ÀÌ º¯°æµÇ¾î¾ß ÇÏ´Â °æ¿ì ÀÔ´Ï´Ù.
ÀԷµǴ º¯¼ö¿¡ µû¶ó WHERE Á¶°ÇÀÌ º¯°æµÇ´Â °æ¿ì SQL Server 2008 ÀÌÀü ¹öÀüÀ» »ç¿ëÇßÀ» ¶§ ÀûÀýÇÑ Ç÷£À¸·Î ó¸® µÇ±â À§Çؼ­´Â ¸ðµç °æ¿ì¿¡ µû¶ó ºÐ±â ¹® ¶Ç´Â SP¸¦ ºÐ¸®ÇÏ¿© »ç¿ëÇϰųª, Äõ¸® ¹®ÀÚ¿­À» Á¶ÇÕÇÏ´Â ÇüÅÂÀÇ µ¿Àû Äõ¸®¸¦ »ç¿ëÇÒ ¼ö ¹Û¿¡ ¾ø¾ú½À´Ï´Ù. µ¿Àû Äõ¸®´Â Ç÷£ Àç»ç¿ëµµ °ÅÀÇ ¾ÈµÇ¸é¼­ Ç÷£Ä³½Ã¿¡ »óÁÖÇÒ ¼ö Àֱ⿡ Ç÷£ ij½Ã°¡ ´Ã¾î³ª´Â ¹®Á¦¿Í º¸¾ÈÀûÀÎ ¹®Á¦¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. °æ¿ìÀÇ ¼ö¸¸Å­ ºÐ±â ¹®À» »ç¿ëÇÑ Äõ¸®´Â À¯Áö º¸¼ö¸¦ ÇϱⰡ Âü~ ¾î·Á¿ü½À´Ï´Ù.

 

±×·³ ÀÌ ±â´ÉÀ¸·Î Ç÷£ÀÌ ¾î¶»°Ô º¯°æµÇ´ÂÁö È®ÀÎÇØ º¸°Ú½À´Ï´Ù.

SQL Server 2008 SP1 + CU5¿Í SQL Server 2008 SP1 ¹öÀüÀ¸·Î ºñ±³ÇØ º¸¾Ò½À´Ï´Ù.

 

[Å×½ºÆ® 1] ÀԷµǴ º¯¼ö °ª¿¡ µû¶ó WHERE Á¶°ÇÀÌ º¯°æµÇ´Â °æ¿ì

SP1°ú SP1 + CU5ȯ°æ¿¡¼­ ½ÇÇàÇÏ¸é ¾Æ·¡¿Í °°Àº ½ÇÇà°èȹÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

SP1ÀÇ °æ¿ì´Â TABLE SCANÀ¸·Î Ç®·ÈÀ¸¸ç, SP1+CU5ÀÇ °æ¿ì´Â Index Seek + RID LookupÀ» »ç¿ëÇÏ¿´½À´Ï´Ù.

¾Æ·¡ Ç÷£¿¡¼­ ³ë¶õ»öÀ¸·Î Ç¥½ÃµÈ ºÎºÐÀ» º¸¸é SP1ÀÇ °æ¿ì Á¶°Ç Àý¿¡¼­ º¯¼ö·Î ºñ±³Çϸç, CU5ÀÇ °æ¿ì »ó¼ö·Î ºñ±³Çϰí ÀÖ½À´Ï´Ù.

±×·¡¼­ Ç÷£ÀÌ ¼­·Î ´Ù¸¥ ¸ð½ÀÀ» º¸¿©ÁÖ°í ÀÖÀ¸¸ç, CU5°¡ ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» °¡Áö°í Ç÷£À» »ý¼ºÇÏ¿© º¸´Ù È¿À²ÀûÀÎ Äõ¸® Ç÷£À» »ý¼ºÇß½À´Ï´Ù.

 

SQL Server 2008 SP1

Rows

Executes

StmtText

1

1

SELECT * FROM tbl90   WHERE    (col1 = @a AND @a IS NOT NULL)  OR (col2 = @a2 AND @a2 IS NOT NULL)  OR (col3 = @a3 AND @a3 IS NOT NULL) 

OR (col4 = @a4 AND @a4 IS NOT NULL)   OR (col5 = @a5 AND @a5 IS NOT NULL)  OR (col6 = @a6 AND @a6 IS NOT NULL)  OPTION(RECOMPILE)

1

1

|--Table Scan(OBJECT:([test].[dbo].[tbl90]), WHERE:([test].[dbo].[tbl90].[col1]=[@a] AND [@a] IS NOT NULL OR [test].[dbo].[tbl90].[col2]=[@a2] AND [@a2] IS NOT NULL OR [test].[dbo].[tbl90].[col3]=[@a3] AND [@a3] IS NOT NULL OR [test].[dbo].[tbl90].[col4]=[@a4] AND [@a4] IS NOT NULL

OR [test].[dbo].[tbl90].[col5]=[@a5] AND [@a5] IS NOT NULL OR [test].[dbo].[tbl90].[col6]=[@a6] AND [@a6] IS NOT NULL))

 

SQL Server 2008 SP1 + CU5

Rows

Executes

StmtText

1

1

SELECT * FROM tbl90   WHERE    (col1 = @a AND @a IS NOT NULL)  OR (col2 = @a2 AND @a2 IS NOT NULL)  OR (col3 = @a3 AND @a3 IS NOT NULL) 

OR (col4 = @a4 AND @a4 IS NOT NULL)  OR (col5 = @a5 AND @a5 IS NOT NULL)  OR (col6 = @a6 AND @a6 IS NOT NULL)  OPTION(RECOMPILE)

1

1

  |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))

1

1

       |--Index Seek(OBJECT:([tempdb].[dbo].[tbl90].[ix_tbl903]), SEEK:([tempdb].[dbo].[tbl90].[col3]=(1)) ORDERED FORWARD)

1

1

       |--RID Lookup(OBJECT:([tempdb].[dbo].[tbl90]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)

 

DROP TABLE tbl90

CREATE TABLE tbl90 (col1 INT NOT NULL, col2 INT ,col3 INT,col4 INT,col5 INT,col6 INT)

 

INSERT INTO tbl90

SELECT TOP 100000

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1))

FROM sys.sysindexes a,sys.sysindexes a1,sys.sysindexes a2,sys.sysindexes a3

 

CREATE INDEX ix_tbl90 ON tbl90 (col1)

CREATE INDEX ix_tbl902 ON tbl90 (col2)

CREATE INDEX ix_tbl903 ON tbl90 (col3)

CREATE INDEX ix_tbl904 ON tbl90 (col4)

CREATE INDEX ix_tbl905 ON tbl90 (col5)

-- CREATE INDEX ix_tbl906 ON tbl90 (col6)

GO

CREATE PROC UP_90

@a INT = NULL

,@a2 INT = NULL

,@a3 INT = NULL

,@a4 INT = NULL

,@a5 INT = NULL

,@a6 INT = NULL

AS

SELECT * FROM tbl90

WHERE

                  (col1 = @a AND @a IS NOT NULL)

OR (col2 = @a2 AND @a2 IS NOT NULL)

OR (col3 = @a3 AND @a3 IS NOT NULL)

OR (col4 = @a4 AND @a4 IS NOT NULL)                                                                                                                                                                                            

OR (col5 = @a5 AND @a5 IS NOT NULL)

OR (col6 = @a6 AND @a6 IS NOT NULL)

OPTION(RECOMPILE)

GO

 

SET STATISTICS PROFILE ON

exec up_90 @a3 = 3

 

[Å×½ºÆ® 2] ÀԷµǴ º¯¼ö °ª¿¡ µû¶ó Á¶È¸ÇÏ´Â Å×À̺íÀÌ º¯°æµÇ´Â °æ¿ì

UNION ALLÀ» ÅëÇØ¼­ º¯¼ö °ª¿¡ Á¶È¸ÇÒ Å×À̺íÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Â °æ¿ì ÀÔ´Ï´Ù.

¸¹ÀÌ »ç¿ëµÇ´Â Äõ¸® Áß ÇϳªÀä, SP1 + CU5¹öÀü¿¡¼­ RECOMPILE¿É¼ÇÀ»
Ãß°¡Çϸé ÀÔ·ÂµÈ º¯¼ö °ª¿¡ µû¶ó ½ÇÁúÀûÀ¸·Î Àоî¾ß ÇÒ Å×ÀÌºí¿¡ ´ëÇØ¼­¸¸ Á¶È¸¸¦ ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

 

SQL Server 2008 SP1 + CU5

Rows

Executes

StmtText

1

1

SELECT * FROM tbl90 WITH(NOLOCK) WHERE @a IS NOT NULL AND @a = col1  UNION ALL 

SELECT * FROM tbl91 WITH(NOLOCK) WHERE @a1 IS NOT NULL AND @a1 = col1  OPTION(RECOMPILE)

0

0

|--Compute Scalar(DEFINE:([Union1008]=[tempdb].[dbo].[tbl90].[col1], [Union1009]=[tempdb].[dbo].[tbl90].[col2], [Union1010]=[tempdb].[dbo].[tbl90].[col3],

[Union1011]=[tempdb].[dbo].[tbl90].[col4], [Union1012]=[tempdb].[dbo].[tbl90].[col5], [Union1013]=[tempdb].[dbo].[tbl90].[col6]))

1

1

       |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))

1

1

            |--Index Seek(OBJECT:([tempdb].[dbo].[tbl90].[ix_tbl90]), SEEK:([tempdb].[dbo].[tbl90].[col1]=(1)) ORDERED FORWARD)

1

1

            |--RID Lookup(OBJECT:([tempdb].[dbo].[tbl90]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)

 

SQL Server 2008 SP1

Rows

Executes

StmtText

1

1

SELECT * FROM tbl90 WITH(NOLOCK) WHERE @a IS NOT NULL AND @a = col1  UNION ALL 

SELECT * FROM tbl91 WITH(NOLOCK) WHERE @a1 IS NOT NULL AND @a1 = col1  OPTION(RECOMPILE)

1

1

  |--Concatenation

1

1

       |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))

1

1

       |    |--Filter(WHERE:(STARTUP EXPR([@a] IS NOT NULL)))

1

1

       |    |    |--Index Seek(OBJECT:([TEST2].[dbo].[tbl90].[ix_tbl90]), SEEK:([TEST2].[dbo].[tbl90].[col1]=[@a]) ORDERED FORWARD)

1

1

       |    |--RID Lookup(OBJECT:([TEST2].[dbo].[tbl90]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)

0

1

       |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1004]))

0

1

            |--Filter(WHERE:(STARTUP EXPR([@a1] IS NOT NULL)))

0

0

            |    |--Index Seek(OBJECT:([TEST2].[dbo].[tbl91].[ix_tbl91]), SEEK:([TEST2].[dbo].[tbl91].[col1]=[@a1]) ORDERED FORWARD)

0

0

            |--RID Lookup(OBJECT:([TEST2].[dbo].[tbl91]), SEEK:([Bmk1004]=[Bmk1004]) LOOKUP ORDERED FORWARD)

 

DROP TABLE tbl91

CREATE TABLE tbl91 (col1 INT NOT NULL, col2 INT ,col3 INT,col4 INT,col5 INT,col6 INT)

 

INSERT INTO tbl91

SELECT TOP 100000

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1)),

ROW_NUMBER() OVER(ORDER BY(SELECT 1))

FROM sys.sysindexes a,sys.sysindexes a1,sys.sysindexes a2,sys.sysindexes a3

 

CREATE INDEX ix_tbl91 ON tbl91 (col1)

CREATE INDEX ix_tbl912 ON tbl91 (col2)

CREATE INDEX ix_tbl913 ON tbl91 (col3)

CREATE INDEX ix_tbl914 ON tbl91 (col4)

CREATE INDEX ix_tbl915 ON tbl91 (col5)

CREATE INDEX ix_tbl916 ON tbl91 (col6)

GO

CREATE PROC UP_93

@a INT = NULL

,@a1  INT = NULL

AS

SELECT * FROM tbl90 WITH(NOLOCK) WHERE @a IS NOT NULL AND @a = col1

UNION ALL

SELECT * FROM tbl91 WITH(NOLOCK) WHERE @a1 IS NOT NULL AND @a1 = col1

OPTION(RECOMPILE)

GO

EXEC UP_93 @a = 1

 

 

Ãß°¡ÀûÀÎ Á¤º¸´Â ¾Æ·¡ ¸µÅ©¸¦ ÂüÁ¶Çϼ¼¿ä.

http://blogs.msdn.com/grahamk/archive/2009/11/18/changed-behaviour-of-option-recompile-syntax-in-sql-server-2008-sp1-cumulative-update-5.aspx

http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=244298

http://support.microsoft.com/kb/976603/

¼Û Çõ, SQL Server MVP
sqler.com // sqlleader.com
hyoksong.tistory.com

 

]]>
SQL Server 2005 TSQL 2009-11-25T01:17:00.000
<![CDATA[ Excel2003 À¸·Î Analysis Services 9.0(2005) ÀÌ»óÀÇ Å¥ºê Á¢¼Ó½Ã ¿À·ù ÇØ°á ¹æ¹ý]]> ÀÌÀç¿õ http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSAS&intSeq=3472 Excel 2003 À¸·Î Analysis Services 2005 ÀÇ Å¥ºê¿¡ Á¢¼ÓÇÒ °æ¿ì
'¼­¹ö¸¦ ãÀ» ¼ö ¾ø´Ù' ȤÀº '¼­¹öÀÇ ÀÚ¿ø »ç¿ë·üÀÌ ³ô´Ù(?)' ¶ó´Â ¿À·ù°¡ ¹ß»ýÇϸç Á¢¼ÓÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.
(¿À·ù ½ºÅ©¸°¼¦À» ¸ø Âï¾ú³×¿ä.)
ÀÌ¿¡ ÇØ°á ¹æ¹ýÀ» ¾Ë·Áµå¸³´Ï´Ù.

¿À·ùÀÇ ¿øÀÎÀº Analysis Services 9.0 OLE DB Provider
°¡ ¾ø¾î¼­ ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù.
Excel 2003 ¿¡´Â Microsoft SQL Server OLAP °ú Microsoft SQL Server OLAP 8.0 provider ¸¦ Á¦°øÇÕ´Ï´Ù.
SQL Server 2005 ÀÌ»óºÎÅÍ´Â Analysis Services ¶ó´Â À̸§À¸·Î °ø±ÞÀÚ¸¦ Á¦°øÇϰí ÀÖ±¸¿ä.
µû¶ó¼­ 
ÇØ´ç PC¿¡ MS Core XML Services 6.0 °ú Analysis Services 9.0 OLE DB Provider ¸¦ ¼³Ä¡ÇÏ½Ã¸é ¹Ù·Î ÇØ°áÀÌ µË´Ï´Ù.

 

°ü·Ã¸µÅ© : http://support.microsoft.com/kb/940167

MSXML(Microsoft Core XML Services 6.0 ´Ù¿î·Îµå : http://www.microsoft.com/downloads/details.aspx?FamilyId=d21c292c-368b-4ce1-9dab-3e9827b70604&displaylang=ko

Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB Provider ´Ù¿î·Îµå : http://download.microsoft.com/download/9/d/a/9da2c9c3-3638-4688-86db-b7eb390e299a/SQLServer2005_ASOLEDB9.msi

 

]]>
SQL Server 2005 SSAS 2009-08-31T09:52:00.000
<![CDATA[ SSRS 2008¿¡¼­ Analysis Services 2000 Å¥ºê ÀÌ¿ëÇϱâ]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSRS&intSeq=3459 SSRS 2008¿¡¼­ Analysis Services 2000 Å¥ºê µ¥ÀÌÅÍ ÀÌ¿ëÇϱâ

Microsoft Premier Field Engineer

ÇѴ뼺




 Question
2000 Analysis Server¿¡¼­ Å¥ºê¸¦ ¸¸µç°É 2008 Report Service¿¡¼­ µ¥ÀÌÅÍ ¿øº» ¿¬°áÈÄ ¸®Æ÷Æ®¸¦ ÀÛ¼ºÇÏ·Á°í Çϴµ¥¿ä.
Äõ¸®µðÀÚÀÎ ±â´ÉÀÌ ¾ÈµÇ´Â°Í °°¾Æ¼­¿ä.¼Óµµµµ ¹«Áö ´À¸°°Í °°±¸¿ä..
2000¿¡¼­ »ý¼ºµÈ Å¥ºê´Â 2008¿¡¼­ ¿¬°áÇÏ¿© »ç¿ëÇÒ¼ö ¾ø³ª¿ä?




1. ´ÙÀ½°ú °°ÀÌ ¿¬°á À¯ÇüÀ» Microsoft SQL Server Analysis Services°¡ ¾Æ´Ñ OLE DB·Î ¼±ÅÃÇÕ´Ï´Ù.
Microsoft SQL Server Analysis Services´Â SSAS 2005, SSAS 2008¿ë ÀÔ´Ï´Ù.




2. Provider¿¡¼­ ¾Æ·¡¿Í °°ÀÌ Microsoft OLE DB Provider for Analysis Services 9.0À» ¼±ÅÃÇÕ´Ï´Ù.



3. ¾Æ·¡¿Í °°ÀÌ ¼­¹ö ¸íÀ» ÁöÁ¤Çϰí Å×½ºÆ® ¿¬°áÀÌ µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù. Á¤»óÀûÀ¸·Î ¿¬°áµÉ °æ¿ì, ¾Æ·¡¿Í °°ÀÌ Initial Catalog°¡ ³ª¿É´Ï´Ù.
¸¸¾à Á¤»óÀûÀ¸·Î ³ª¿ÀÁö ¾ÊÀ» °æ¿ì, Á¢±Ù ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇØ º¸¼¼¿ä.. °£´ÜÈ÷ ½ÃÀÛ--> ½ÇÇà ¸Þ´º¿¡¼­ \\¼­¹ö¸í À¸·Î ³×Æ®¿öÅ© ¿¬°áÀÌ µÇ´ÂÁö, ±×¸®°í »ç¿ëÀÚ ¹× ¾ÏÈ£°¡ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎ



4. ¸íÈ®È÷ Çϱâ À§ÇØ Advanced ¹öưÀ» ´©¸¥ ÈÄ, ¾Æ·¡¿Í °°ÀÌ Provider°¡ MSOLAP.3À¸·Î ³ªÅ¸³ª´ÂÁö È®ÀÎ




º¸°í¼­¿¡¼­ Äõ¸®´Â * (All Columns)À» ¼±ÅÃÇÏ¸é ¾ÈµÇ°í, ÇÊ¿äÇÑ ¿­À» ¼±ÅÃÇϰųª Á¤È®ÇÑ MDX¹®À» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.



¿Ï¼ºµÈ º¸°í¼­ ¸ð½À







]]>
2009-08-27T14:51:00.000
<![CDATA[ ÆÐŰÁö ½ÇÇà ½Ã ¸Å°³º¯¼ö µ¿ÀûÀ¸·Î ÁÖ±â]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=3446

ÆÐŰÁö ½ÇÇà ½Ã ¸Å°³º¯¼ö µ¿ÀûÀ¸·Î ÁÖ±â

Microsoft Premier Field Engineer

ÇѴ뼺

 

 

 Question
job agent¿¡¼­ ÆÐŰÁö(SSIS)¸¦ È£ÃâÇÏ¿© ¸ÅÀÏ ½ÇÇà½ÃŰ´Â ÀÛ¾÷À» Ãß°¡ÇÏ¿´½À´Ï´Ù.
±Ùµ¥ SSIS¿¡¼­ ¸Å°³º¯¼ö¸¦ ¹Þ´Â°ÍÀÌ Àְŵç¿ä.
±× ¸Å°³º¯¼ö´Â ¸ÅÀÏ ½ÇÇàÇÏ´Â ¿ù.ÀÏ(20090817, 200908) ÀÔ´Ï´Ù.
ÀÌ·± ¸Å°³º¯¼ö°ªÀ» agentµî·Ï½Ã ¾î¶»°Ô ÁöÁ¤ÇÏ¿© ³Ö¾îÁÖ¾î¾ß Çϳª¿ä?
°ª ³Ö´Â °ÍÀº
\package.Variables[User::YYYYYMMDD].Value : ÀÓÀÇÀǰª
À̶õ °ÍÀ» ¾Ë°í ÀÖÁö¸¸ ÀÓÀÇÀÇ °ªÀÌ ¾Æ´Ñ µ¿ÀûÀÎ °ªÀ» ³Ñ±â°í ½Í½À´Ï´Ù.


1. SSIS ÆÐŰÁö ³»¿¡¼­ ³¯Â¥¿¡ ´ëÇÑ °ª ÁöÁ¤Çϱâ

ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î, ÀԷµǴ ³¯Â¥°¡ ¾ø´Â °æ¿ì¿¡´Â ÀÚµ¿À¸·Î ¿À´Ã ³¯Â¥ ¹× À̹ø ´ÞÀ» ÁöÁ¤Çϵµ·Ï ¸¸µå´Â °ÍÀÔ´Ï´Ù.

a.     ½ºÅ©¸³Æ® ÀÛ¾÷À» ÆÐŰÁöÀÇ °¡Àå óÀ½¿¡ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï Ãß°¡ÇÕ´Ï´Ù.

b.     ½ºÅ©¸³Æ® ÀÛ¾÷ÀÇ ReadWriteVariables ¿¡ User::YYYYMMDD,User:YYYYMM º¯¼ö¸¦ ÀÔ·ÂÇÕ´Ï´Ù.

 

c.     ´ÙÀ½°ú °°Àº ½ºÅ©¸³Æ®¸¦ ÀÔ·ÂÇÕ´Ï´Ù. (Main() ¾È¿¡)

public void Main()

        {

 

            if (Dts.Variables["YYYYMMDD"].Value.ToString() == "")

            {

                Dts.Variables["YYYYMMDD"].Value = DateTime.Today.ToString("yyyyMMdd");

                Dts.Variables["YYYYMM"].Value = DateTime.Today.ToString("yyyyMM");

            }

            Dts.TaskResult = (int)ScriptResults.Success;

        }


 

d.     °£´ÜÈ÷ °¢ º¯¼öÀÇ °ªÀ» Ãâ·ÂÇÏ´Â ÀÛ¾÷À» Çϳª Ãß°¡ÇÏ°í ÆÐŰÁö¸¦ Å×½ºÆ® ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¿À´Ã ³¯Â¥ ¹× À̹ø ´ÞÀÌ º¯¼ö °ªÀ¸·Î ÁöÁ¤µË´Ï´Ù.

 

e.      SQL Agent¿¡¼­´Â ¿À´Ã ³¯Â¥·Î ¼³Á¤ÇÒ °æ¿ì¿¡´Â \package.Variables[User::YYYYMMDD].ValueÀÇ ¼Ó¼º¿¡ ºó °ªÀ» ³ÖÀ¸¸é µË´Ï´Ù.

 

 

2. Shell Script¸¦ ÀÌ¿ëÇÏ¿© ³¯Â¥ °ª ÁöÁ¤

¸¸¾à ÆÐŰÁö¸¦ ¼öÁ¤ÇÒ ¼ö ¾ø´Â °æ¿ì¿¡´Â ´ÙÀ½°ú °°Àº ¹æ½ÄÀ» ÀÌ¿ëÇÕ´Ï´Ù.

a.     SQL Agent¿¡¼­ ½ÇÇàÇÒ ÆÐŰÁö¸¦ ÁöÁ¤Çϰí, YYYYMMDD, YYYYMM º¯¼ö¿¡ ÀÓÀÇÀÇ °ªÀ» ÁöÁ¤ÇÑ ÈÄ, ¸í·ÉÁÙ ÅÇ¿¡ ³ª¿À´Â ¸í·ÉÁÙ ºÎºÐÀ» º¹»çÇÕ´Ï´Ù.

         

b.     ¸Þ¸ðÀå¿¡ À§ÀÇ ¸í·ÉÀ» ºÙ¿© ³ÖÀº ´ÙÀ½, ¾Æ·¡¿Í °°ÀÌ ³¯Â¥ Á¤º¸¸¦ ¾ò¾î¿À´Â Shell Script¸¦ Ãß°¡ÇÑ ÈÄ È®ÀåÀÚ¸¦ cmd·Î ÀúÀåÇÕ´Ï´Ù.

echo off

 

REM Define the TODAY variable

REM Define the THISMONTH variable

 

REM ¿î¿µÃ¼Á¦°¡ ÇÑ±Û ¹öÀüÀÎ °æ¿ì

for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET TODAY=%%a%%b%%c

for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET THISMONTH=%%a%%b

 

REM ¿î¿µÃ¼Á¦°¡ ¿µ¹® ¹öÀüÀÎ °æ¿ì ¾Æ·¡ÀÇ REM Á¦°Å

REM for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET TODAY=%%c%%a%%b

REM for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET THISMONTH=%%c%%a%

 

"D:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\Temp\SSISProject\SSISProject\Package.dtsx" /CHECKPOINTING OFF /SET "\package.Variables[User::YYYYMMDD].Value";%TODAY% /SET "\package.Variables[User::YYYYMM].Value";%THISMONTH% /REPORTING E


ÁÖÀÇÇÒ °ÍÀº ³¯Â¥¸¦ °¡Á®¿À´Â ºÎºÐÀÌ OSÀÇ ±¹°¡º° ¾ð¾î ¼³Á¤¿¡¼­ ÁöÁ¤ÇÑ ³¯Â¥ ¹æ½Ä¿¡ µû¶ó ¾à°£ ´Ù¸¨´Ï´Ù. ¸¸¾à ¿î¿µÃ¼Á¦°¡ ¿µ¹®ÀÏ °æ¿ì, ¿µ¹® ¹öÀü¿¡ ¸Â°Ô ¼öÁ¤Çϼ¼¿ä.

±×¸®°í, °¡±ÞÀû ÆÐŰÁö¸¦ ½ÇÇà½ÃŰ´Â dtexec.exe´Â Àüü °æ·Î¸¦ ¸íÈ®È÷ ÁöÁ¤ÇØ ÁÖ¼¼¿ä. SQL 2005°¡ °°ÀÌ ¼³Ä¡µÇ¾î ÀÖÀ» °æ¿ì, ´Ü¼øÈ÷ dtexec.exe·Î ÁöÁ¤Çϸé SQL 2005 ¹öÀüÀÌ ½ÇÇàµÉ ¼öµµ ÀÖ½À´Ï´Ù.

 

c. ÆÐŰÁö¸¦ Å×ÀÌºí¿¡ ÀúÀåÇϵµ·Ï ¾à°£ ¼öÁ¤ÇÑ ÈÄ Å×½ºÆ® ÇØ º¸¸é ´ÙÀ½°ú °°ÀÌ Á¤È®È÷ ³¯Â¥°¡ ÀԷµ˴ϴÙ.

 



 


 

d.     ´Ù½Ã SQL Agent ÀÛ¾÷À¸·Î µ¹¾Æ°¡¼­, ÀÛ¾÷ À¯ÇüÀ» ¿î¿µ üÁ¦(CmdExec)·Î º¯°æÇÑ ÈÄ, ¾Æ·¡¿Í °°ÀÌ ¸í·É ºÎºÐ¿¡ À§¿¡¼­ »ý¼ºÇÑ ÆÄÀÏÀ» ÁöÁ¤ÇÕ´Ï´Ù.


          

-³¡-

]]>
SQL Server 2005 SSIS 2009-08-22T00:47:00.000
<![CDATA[ ¸¶½ºÅÍ ÆÐŰÁö·Î ¿©·¯ ÆÐŰÁöµéÀÇ ¿¬°á Á¤º¸ °ü¸®Çϱâ]]> ÇѴ뼺 http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=3432 ¸¶½ºÅÍ ÆÐŰÁö·Î ¿©·¯ ÆÐŰÁöµéÀÇ ¿¬°á Á¤º¸ °ü¸®Çϱâ

 

Microsoft Premier Field Engineer

ÇѴ뼺

 

´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ´Ü¼øÇÑ ÀÚ½Ä ÆÐŰÁö¸¦ Çϳª ¸¸µì´Ï´Ù.

a.     Servername À̶ó´Â String Çü º¯¼ö¸¦ Ãß°¡ÇÕ´Ï´Ù.

b.     ChildDBConnÀ̶ó´Â OLE DB ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù. º» ¿¹Á¦¿¡¼­´Âlocalhost\ss2005 ¼­¹ö¸¦ °¡¸®Å°´Â ¿¬°áÀ» ¸¸µì´Ï´Ù.

c.     ÀÌ ¿Ü¿¡ ¿©·¯ ÇüÅÂÀÇ ¿¬°áÀ» ¸¸µì´Ï´Ù. (¿É¼Ç »çÇ×ÀÓ.)

d.     SQL ½ÇÇà ÀÛ¾÷À» Ãß°¡ÇÑ ÈÄ, ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.



 

e.     ½ºÅ©¸³Æ® ÀÛ¾÷À» Ãß°¡ÇÑ ÈÄ, SQL ½ÇÇà ÀÛ¾÷°ú ¿¬°áÇϰí, ¼Ó¼ºÀÇ ReadOnlyVariables ºÎºÐ¿¡ ServernameÀ» ÀÔ·ÂÇÑ ÈÄ, ½ºÅ©¸³Æ® ÆíÁý±â¸¦ ¿­¾î ´ÙÀ½°ú °°Àº °£´ÜÇÑ ½ºÅ©¸³Æ®¸¦ ÀÔ·ÂÇÕ´Ï´Ù.

Imports System

Imports System.Data

Imports System.Math

Imports Microsoft.SqlServer.Dts.Runtime

 

Public Class ScriptMain

 

            Public Sub Main()

                       

                        MsgBox(Dts.Variables("Servername").Value.ToString)

 

                        Dts.TaskResult = Dts.Results.Success

            End Sub

 

End Class

 

f.      ¿Ï¼ºµÈ ÀÚ½Ä ÆÐŰÁö ¸ð½ÀÀÔ´Ï´Ù.

 

g.     ÆÐŰÁö¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ ±âº»À¸·Î ¼³Á¤µÈ OLE DBÀÇ ¼­¹ö ¸íÀÌ Ãâ·ÂµË´Ï´Ù.

 

 

´ÙÀ½°ú °°Àº »óȲÀ» »ý°¢ÇØ º¾½Ã´Ù.

1.     À§¿Í °°Àº ÇüÅÂÀÇ ÆÐŰÁö°¡ ¾ÆÁÖ ¸¹´Ù.

2.     ´ëºÎºÐ OLE DB ¿¬°á ¸íÀº ºñ½ÁÇϰųª µ¿ÀÏÇÏ´Ù.

3.     ÆÐŰÁö¸¦ ½ÇÇà ½Ãų ¶§, ´Ù¸¥ DB ¼­¹ö ¿¬°áÀ» ÁöÁ¤ÇÏ°í ½Í´Ù. Áï, À§ÀÇ ¿¹¿¡¼­ ChildDBConnÀ̶ó´Â ¿¬°áÀÌ localhost\SS2005·Î ÁöÁ¤µÇ¾î ÀÖÁö¸¸, localhost DB ¼­¹ö¿¡¼­ ½ÇÇàµÇµµ·Ï ÇÏ°í ½Í´Ù.

4.     SQL Agent³ª ÆÐŰÁö¸¦ ½ÇÇà½Ãų ¶§ Connection ÅÇ¿¡¼­ ÁöÁ¤ÇØÁÖ¸é µÇ°ÚÁö¸¸, ÆÐŰÁöµéÀÌ ¸¹¾Æ¼­ ¹ø°Å·Ó´Ù.

5.     ¶ÇÇÑ, DB ¼­¹ö¸¦ ÀϰýÀûÀ¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. ±×·¯¸é ´Ù½Ã ¸ðµç ÆÐŰÁöÀÇ ¿¬°á Á¤º¸¸¦ (Agent ÀÛ¾÷À̵ç, ÆÐŰÁö ½ÇÇà ½ºÅ©¸³Æ®À̵ç, SSIS ÆÐŰÁö ÀÚüÀ̵ç) ¹Ù²ãÁà¾ß ÇÑ´Ù.

6.     ÀÚ½Ä ÆÐŰÁöµéÀÌ ¸¹¾Æ¼­ ÀÏÀÏÀÌ ¾î¶² ±â´ÉÀ» Ãß°¡ÇÏ´Â °Íµµ ¾î·Æ´Ù.

 

ÀÌ·± °æ¿ì°¡ °¡²û¾¿ ÀÖ½À´Ï´Ù. Á¦ °³ÀÎÀûÀÎ °æÇèµµ ¼ö¹é °³ÀÇ ÆÐŰÁöÀÇ ¿¬°á Á¤º¸¸¦ °ü¸®ÇØ¾ß ÇÒ ¶§°¡ ÀÖ¾ú½À´Ï´Ù.

 

¸î °¡Áö ¿î¿µ ¹æ¹ýµéÀÌ ÀÖ°ÚÁö¸¸, ´ÙÀ½°ú °°Àº Á¶°ÇÀ» °¡Áö¸é¼­ ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» »ý°¢ÇØ ºÃ½À´Ï´Ù.

1.     ÀÚ½Ä ÆÐŰÁö(=±âÁ¸ ÆÐŰÁö)¸¦ ¼öÁ¤ÇÏÁö ¾Ê¾ÒÀ¸¸é ÁÁ°Ú´Ù.

2.     ¿¬°á Á¤º¸°¡ º¯°æµÇ´õ¶óµµ ÃÖ¼ÒÇÑÀÇ ÀÛ¾÷À¸·Î À̸¦ ¹Ý¿µÇÒ ¼ö ÀÖ¾úÀ¸¸é ÁÁ°Ú´Ù.

 

Á¦°¡ »ý°¢ÇØ º» ¹æ¹ýÀº ÀÏ¸í ¡º¸¶½ºÅÍ ÆÐŰÁö¡»¶ó´Â ÆÐŰÁö ½ÇÇàÀ» ´ã´çÇÏ´Â ºÎ¸ð ÆÐŰÁö¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

Á÷Á¢ AAA.dtsx¶ó´Â ÆÐŰÁö¸¦ ½ÇÇàÇÏ´Â ´ë½Å, Master.dtsx¶ó´Â ¸¶½ºÅÍ ÆÐŰÁö¿¡ AAA.dtsx¶ó´Â ÆÐŰÁö À̸§À» ´øÁ®ÁÖ¸é(¿ÜºÎ¿¡¼­ º¯¼ö °ªÀ» ÁöÁ¤ÇÏ´Â ¹æ½ÄÀ¸·Î) ¸¶½ºÅÍ ÆÐŰÁö¿¡¼­´Â ¿¬°á Á¤º¸¸¦ ¹Ù²ãÄ¡±â ÇÑ ÈÄ ÀÌ ÆÐŰÁö¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

 

 

´ÙÀ½°ú °°Àº ÇüÅ·Π¸¶½ºÅÍ ÆÐŰÁö¸¦ ¸¸µé¾î º¾½Ã´Ù.

a.     PackageNameStrÀ̶ó´Â StringÇü º¯¼ö¸¦ Ãß°¡Çϰí, ±âº»°ªÀ¸·Î ÀÚ½Ä ÆÐŰÁöÀÇ °æ·Î¸¦ ÀÔ·ÂÇÕ´Ï´Ù.

b.     ChildDBConn À̶ó´Â StringÇü º¯¼ö¸¦ Ãß°¡ÇÏ°í ´ÙÀ½°ú °°ÀÌ OLE DBÀÇ ¿¬°á ¹®ÀÚ¿­À» ÀÔ·ÂÇÕ´Ï´Ù. ÀÌ ¶§ÀÇ ¹®ÀÚ¿­Àº ÀÚ½Ä ÆÐŰÁöÀÇ ChildDBConn ¿¬°áÀÇ ¿¬°á ¹®ÀÚ¿­°ú´Â ´Ù¸£°Ô ÁöÁ¤ÇÕ´Ï´Ù. º» ¿¹¿¡¼­´Â localhost ¼­¹ö¸¦ °¡¸®Å°´Â DB ¿¬°á ¹®ÀÚ¿­À» ¼³Á¤ÇÕ´Ï´Ù.



c.     ½ºÅ©¸³Æ® ÀÛ¾÷À» Çϳª Ãß°¡ÇÑ ÈÄ, ÆíÁý±âÀÇ ReadOnlyVariables ¼Ó¼º¿¡ PackageNameStr,ChildDBConnÀ» ÀÔ·ÂÇÕ´Ï´Ù.

 

d.     ½ºÅ©¸³Æ® ÆíÁý±â¸¦ ¿¬ ÈÄ, ´ÙÀ½°ú °°Àº ½ºÅ©¸³Æ®¸¦ ÀÔ·ÂÇÕ´Ï´Ù.

Imports System

Imports System.Data

Imports Microsoft.SqlServer.Dts.Runtime

 

Public Class ScriptMain

 

    Public Sub Main()

 

        Dim pkg As String

        pkg = Dts.Variables("PackageNameStr").Value.ToString

 

        Dim app As Application = New Application()

        Dim p As Package = app.LoadPackage(pkg, Nothing) ' ÆÐŰÁö °³Ã¼¸¦ »ý¼º

 

        Dim con As ConnectionManager

 

        For Each con In p.Connections  ' ÆÐŰÁö ³»ÀÇ ¿¬°áµéÀ» Á¶»ç

 

            If con.AcquireConnection(Dts.Transaction).GetType.ToString = "System.__ComObject" Then ' OLEDB ¿¬°áÀÏ °æ¿ì

                If con.Name = "ChildDBConn" Then  ' ¿¬°á À̸§ÀÌ ChildDBConnÀÏ °æ¿ì, º¯¼ö°ªÀ¸·Î ´ëü

                    con.ConnectionString = Dts.Variables("ChildDBConn").Value.ToString

                End If

            End If

 

        Next

 

        p.Execute() ' ÆÐŰÁö ½ÇÇà

 

 

          Dim pkgError As DtsError

 

        If (p.Errors.Count > 0) Then ' ÀÚ½Ä ÆÐŰÁö¿¡¼­ ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì, ÀÌ Á¤º¸¸¦ ÀüÆÄ

            p.Dispose()

            For Each pkgError In p.Errors

                Dts.Events.FireError(pkgError.ErrorCode, pkgError.SubComponent, pkgError.Description, pkgError.HelpFile, pkgError.HelpContext)

            Next

 

            Dts.TaskResult = Dts.Results.Failure

        Else

            p.Dispose()

            Dts.TaskResult = Dts.Results.Success

        End If

    End Sub

 

End Class

 

 

¿¡·¯ ÀüÆÄ ºÎºÐÀ» Àá½Ã ¼³¸íÇϰڽÀ´Ï´Ù.

ÆÐŰÁö °³Ã¼¸¦ ¸¸µé¾î ÀÚ½Ä ÆÐŰÁö¸¦ ½ÇÇàÇÒ °æ¿ì, ÀÚ½Ä ÆÐŰÁö°¡ ¿¡·¯°¡ ³ª´õ¶óµµ ÀÌ Á¤º¸°¡ Àü´ÞÀÌ ¾ÈµË´Ï´Ù. Áï, ¹«Á¶°Ç ¼º°øÀ¸·Î º¸ÀÌÁö¿ä. µû¶ó¼­ À̸¦ °³¼±ÇϰíÀÚ Ãß°¡ÇÑ ºÎºÐÀÔ´Ï´Ù.

ÀÚ½Ä ÆÐŰÁö¸¦ ½ÇÇàÇÑ ÈÄ, Error Count°¡ 0º¸´Ù Å©´Ù¸é ¿¡·¯ Á¤º¸¸¦ ÇöÀç ÆÐŰÁö¿¡ Àü´Þ(FireError)ÇÏ´Â °ÍÀÔ´Ï´Ù.

e.     ÆÐŰÁö¸¦ ½ÇÇà½ÃÄÑ º¾½Ã´Ù.

 

f.      SQL Agent¿¡ ÆÐŰÁö¸¦ µî·ÏÇÒ °æ¿ì, ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.






°ª ¼³Á¤ ÅÇ¿¡¼­

            \Package.Variables[»ç¿ëÀÚ::PackageNameStr].Properties[Value] ¶ó´Â ¼Ó¼ºÀ» ÀÔ·ÂÇÏ°í °ª ºÎºÐ¿¡´Â

½ÇÇà ½Ãų ÆÐŰÁö ¸í(°æ·Î Æ÷ÇÔ)À» ÀÔ·ÂÇÔ.
             
     

 

 

º» ¿¹Á¦¿¡¼­´Â ´Ü¼øÈ÷ ¸¶½ºÅÍ ÆÐŰÁö¿¡ ÀÚ½Ä ÆÐŰÁö¿¡¼­ »ç¿ëÇÒ ¿¬°á Á¤º¸(ChildDBConn)¸¦ º¯¼ö¿¡´Ù°¡ ÀúÀåÇÏ´Â ½ÄÀ¸·Î ±¸ÇöÇßÁö¸¸, ¿¬°á Á¤º¸°¡ ¸¹°Å³ª ¿¬°á Á¤º¸µéÀ» º°µµÀÇ ÆÄÀÏÀ̳ª Å×ÀÌºí µî¿¡ °ü¸®ÇÒ °æ¿ì, RecordsetÀ» ÀÌ¿ëÇÏ¿© ADO °³Ã¼¿¡ ÀúÀåÇÏ°í ½ºÅ©¸³Æ® ÀÛ¾÷À» Á¶±Ý º¯°æÇؼ­ ¸ÅÇÎ & º¯°æ µÇµµ·Ï ¼³Á¤ÇÏ¸é µÇ°ÚÁö¿ä.

(±Û·Î ÀûÀ¸·Á´Ï±î ¹«ÁöÇÏ°Ô ±æ¾îÁö°í ¹«½¼ ¸»ÀÎÁö Àß ¸ð¸£°Ú³×¿ä.@.@)

 

]]>
SQL Server 2005 SSIS 2009-08-18T14:55:00.000
<![CDATA[ WMI °´Ã¼¸¦ Äõ¸®·Î Àоî¿À±â]]> ÀÌÀç¿õ http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005CLR&intSeq=3429 DB¼­¹ö¸¦ °ü¸®ÇÏ´Ù º¸¸é ¼º´ÉÄ«¿îÅ͸¦ ¼öÁýÇϰųª ¸ð´ÏÅ͸µ ÇÏ´Â ÀÏÀÌ ¸¹½À´Ï´Ù.

¼º´É ¸ð´ÏÅ͸¦ »ç¿ëÇØ¼­ ¼öÁý ¹× ¸ð´ÏÅ͸µÀ» ÇÒ ¼öµµ ÀÖ°í ½áµåÆÄÆ¼ÅøÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

 



SQL 2005
ºÎÅÍ´Â DMV µîÀ» ÅëÇØ¼­ ¼º´É Ä«¿îÅ͸¦ ¸ð´ÏÅ͸µ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  

SELECT  * FROM SYS.DM_OS_PERFORMANCE_COUNTERS

WHERE REPLACE(RIGHT([OBJECT_NAME], PATINDEX('%:%', REVERSE([OBJECT_NAME]))-1), ' ', '') = 'GeneralStatistics'


 




±×·¯³ª DMV µµ ¸ðµç WMI Ä«¿îÅ͸¦ Á¦°øÇÏÁö´Â ¾Ê½À´Ï´Ù.

ƯÈ÷ Çϵåµð½ºÅ©ÀÇ ¿ë·® °°Àº ¹°¸®ÀûÀÎ ºÎºÐÀ̳ª OS ´ÜÀÇ Ä«¿îÅÍ Áß Á¦°ø ¾È ÇÏ´Â °ÍµéÀÌ ÀÖ½À´Ï´Ù.

ÀÌ ºÎºÐÀ» µû·Î WMI Åø·Î ¸¸µé¾î¼­ º¼ ¼öµµ ÀÖ½À´Ï´Ù¸¸ ÀÌ°É CLR·Î µî·ÏÇØ¼­ Äõ¸®·Î ¹Ù·Î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

WMI °³¹ß¿¡ °ü·ÃµÈ ÀÚ·á´Â ½±°Ô ã¾Æº¼ ¼ö°¡ ÀÖ°í ÄÚµå±îÁö ¸¸µé¾îÁÖ´Â Åøµµ ÀÖ½À´Ï´Ù.

¿¹Àü¿¡ ÇѴ뼺´ÔÀÌ ¡®Scriptomatic2¡¯ µµ ¼Ò°³ÇØÁּ̽À´Ï´Ù¸¸ À̹ø¿£ ¡®WMICodeCreator¡¯ À̶ó´Â Åø·Î ÇØº¸°Ú½À´Ï´Ù. (#ÆÄÀÏ÷ºÎ)

¿øÇÏ´Â WMIŬ·¡½º¿Í °´Ã¼¸¦ ¼±ÅÃÇÏ¸é ¹Ù·Î VB ¶Ç´Â C# Äڵ带 ¸¸µé¾îÁÝ´Ï´Ù. Condition ¼³Á¤µµ °¡´ÉÇÕ´Ï´Ù.

 



ÀÌ·¸°Ô ¸¸µé¾îÁø Äڵ带 °¡Áö°í CLR·Î µî·ÏÇØ¼­ FunctionÀ¸·Î ¸¸µé¾î Á÷Á¢ Äõ¸®¸¦ ³¯·Áº¸°Ú½À´Ï´Ù.

ÀÌ Äڵ带 CLR·Î µî·ÏÇÏ·Á¸é »çÀü¿¡ ÇѰ¡Áö ¼³Á¤À» ÇØ¾ß µË´Ï´Ù.

 

WMI µ¥ÀÌÅ͸¦ Àбâ À§Çؼ± System.management ³×ÀÓ½ºÆäÀ̽ºÀÇ Å¬·¡½ºµéÀ» »ç¿ëÇÕ´Ï´Ù.

±×·¡¼­ µ¥ÀÌÅͺ£À̽º¿¡ »çÀü¿¡ System.Management ¾î¼Àºí¸®°¡ µî·ÏµÇ¾î ÀÖ¾î¾ß µË´Ï´Ù.
 

USE TEST

GO

 

--CLR ENABLE

EXEC SP_CONFIGURE 'clr enabled', 1

RECONFIGURE WITH OVERRIDE

GO

 

--TRUSTWORTHY ON

ALTER DATABASE TEST SET TRUSTWORTHY ON

GO

 

--System.Management µî·Ï

IF EXISTS(SELECT 1 FROM SYS.ASSEMBLIES WHERE NAME = 'System.Management')

BEGIN

             DROP ASSEMBLY [System.Management]

END

GO

CREATE ASSEMBLY [System.Management]

             AUTHORIZATION [dbo]

             FROM 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll'

             WITH PERMISSION_SET = UNSAFE

GO


 

System.Management ¾î¼Àºí¸®°¡ µî·ÏµÇÁö ¾ÊÀº »óÅ¿¡¼­ ÄÄÆÄÀÏÀ» ÇÒ °æ¿ì ¾Æ·¡¿Í °°Àº ¿À·ù¸¦ ¸¸³ª°Ô µË´Ï´Ù.

 


ÀÌ ºÎºÐ ¿Ü¿¡ ´Ù¸¥ ¼³Á¤Àº º¸Åë CLR ¸ðµâÀ» µî·ÏÇÏ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù.

±èÁ¾¿­´Ô²²¼­ ´Ù¸¥ °­Á¿¡¼­ ¸¹ÀÌ º¸¿©Áּ̱⠶§¹®¿¡ »ý·«Çϵµ·Ï ÇϰڽÀ´Ï´Ù..


ºñÁê¾ó ½ºÆ©µð¿À¿¡¼­ C# SQL Server ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇϽŠÈÄ µ¥ÀÌÅͺ£À̽º ÂüÁ¶¸¦ ¼³Á¤ÇϽðí

¾Æ·¡ ¼Ò½º¸¦ ºÙ¿© ³ÖÀ¸½Ã±â ¹Ù¶ø´Ï´Ù.

  

using System;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using Microsoft.SqlServer.Server;

using System.Management;

using System.Net;

using System.Net.Sockets;

using System.Collections;

 

public partial class UserDefinedFunctions

{

    [Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName="fillTable", TableDefinition="Name nvarchar(20), Value nvarchar(20)")]

    public static IEnumerable UDF_WMI(string srvname, string username, string password, string wmiClass, string wmiName, string wmiValue, string condition)

    {

      

        //¼­¹ö ¿¬°á

        ManagementScope scope = ConnServer(srvname, username, password);

 

        //Á¶È¸ Äõ¸®(WQL) »ý¼º

        if (condition.Length > 0)

        {

            condition = " WHERE " + condition;

        }

 

        try

        {   

          

            ObjectQuery query = new ObjectQuery("SELECT " + wmiName + ", " + wmiValue + " FROM " + wmiClass + condition);

 

            //°³Ã¼ Ä÷º¼Ç °Ë»ö

            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

            ManagementObjectCollection oCollection = searcher.Get();

 

            //return º¯¼ö ¼±¾ð

            string[] retArray = new string[oCollection.Count];

 

            //Ä÷º¼Ç ¿­°ÅÀÚ

            ManagementObjectCollection.ManagementObjectEnumerator

                oEnumerator = oCollection.GetEnumerator();

            oEnumerator.MoveNext();

 

            //return º¯¼ö ÀÔ·Â

            for (int i = 0; i < oCollection.Count; i++)

            {

                ManagementObject o = (ManagementObject)oEnumerator.Current;

                retArray[i] = Convert.ToString(o[wmiName]) + "," + Convert.ToString(o[wmiValue]);

                oEnumerator.MoveNext();

            }

            return (retArray);

        }

        catch (ManagementException e)

        {

            Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);

            return "-1";

        }

    }

 

    public static ManagementScope ConnServer(string srvname, string username, string password)

    {

        try

        {

            //·ÎÄÃÀÎÁö È®ÀÎ

    &n