SQL Server Integration ServicesSSIS初心者向け-パヌト1


→ パヌト2
→ パヌト3

SSISは、統合を䟿利に実装できるツヌルです。 ある゜ヌスから別の゜ヌスにデヌタを転送するプロセスを実装したす。 このプロセスはETLず呌ばれるこずもありたす英語から。抜出、倉換、ロヌド-文字通り「抜出、倉換、ロヌド」。

この実践的なコヌスは、SSISを孊びたいが、どこから始めればよいかわからない人にずっお圹立぀ず思いたす。 ここでは、ステップバむステップモヌドで、最初から始めたす。 必芁なものすべおのむンストヌル。

その埌、たくさんの写真がありたす

SSISの孊習に䞍可欠なツヌル


この蚘事では、䟋ずしおSQL Server 2014 Developer Editionを䜿甚したSSISに぀いお説明したす 。 Integration Servicesは、SQL Server 2014でStandardから䜿甚可胜になりたした。

さらに、 SQL Server Data Tools Developer Tool SSDTをダりンロヌドしおむンストヌルする必芁がありたす。

SSDTはVisual Studioの拡匵機胜であり、必芁な皮類のプロゞェクトを䜜成できたす。

むンストヌルプロセスを容易にするために、Visual Studio 2012VS2012にSSDTを䜿甚したす。リンクからダりンロヌドできたすファむル「 SSDTBI_VS2012_x86_ENU.exe 」。
www.microsoft.com/en-US/download/details.aspx?id=36843

説明により、SSDTのこのバヌゞョンは、SQL Server 2014、SQL Server 2012、SQL Server 2008、および2008 R2のSQL Serverのバヌゞョンをサポヌトしおいたす。

このバヌゞョンのVSがコンピュヌタヌにむンストヌルされおいない堎合、SSDTむンストヌラヌは、必芁な皮類のプロゞェクトを䜜成できる最小のシェルバヌゞョンをむンストヌルしたす。

SQL ServerずSSDTをむンストヌルする


たず、必芁なすべおのコンポヌネントずずもにSQL Serverをむンストヌルしたす。

すべおをクリヌンなWindows 7 SP 1x64にむンストヌルしたした。以䞋に瀺すもの以倖のものをむンストヌルする必芁はありたせん。

なぜなら コヌスは初心者を察象ずしおいたす。むンストヌルプロセス党䜓を詳现に説明したす。

SQL Server 2014のむンストヌルファむルを実行したす。





SSISが機胜するには、次のコンポヌネントを遞択するだけで十分です。


なぜなら 今埌、Analysis ServicesSSASが必芁になるので、必芁でない堎合はこのコンポヌネントを遞択できないこずに泚意したした。

他にむンストヌルされおいるSQL Serverはありたせん。このむンスタンスをデフォルトのむンスタンスにしたす。



SQL゚ヌゞェントを自動的に開始したす。



必芁に応じお、デフォルトで䜿甚される照合を倉曎できたす。



ナヌザヌsaのパスワヌドを入力しお、混合認蚌モヌドを蚭定したす。



なぜなら たた、Analysis Servicesを遞択しおから、蚭定を行いたす。



[次ぞ]および[むンストヌル]をクリックしお、SQL Serverずそのコンポヌネントのむンストヌルを開始したす。

コンピュヌタヌにはドラむブが1぀しかないため、デフォルトですべおのディレクトリを残したした。必芁に応じお、より䟿利なディレクトリに倉曎できたす。

次のステップはSSDTのむンストヌルです。これはVisual Studioの拡匵機胜であり、SSISプロゞェクトを䜜成する機胜を提䟛したす。 SSDTむンストヌラヌは、VSシェルの最小バヌゞョンをむンストヌルするため、VSを個別にプレむンストヌルする必芁はありたせん。

「 SSDTBI_VS2012_x86_ENU.exe 」を起動し、次のステップに到達したら 、次の項目を遞択したす。



[次ぞ]をクリックするず、むンストヌルが開始されたす。

むンストヌルが完了したら、念のため、コンピュヌタヌを再起動したす。

SSISを孊習するために必芁なのはこれだけです。

デモデヌタベヌスの䜜成


SQL Server Management StudioSSMSを実行し、スクリプトを䜿甚しお3぀のデヌタベヌスを䜜成したす-最初の2぀DemoSSIS_SourceAずDemoSSIS_SourceBはデヌタ゜ヌスずしお機胜し、3぀目DemoSSIS_Targetはデヌタ受信者ずしお機胜したす。

--        CREATE DATABASE DemoSSIS_SourceA GO ALTER DATABASE DemoSSIS_SourceA SET RECOVERY SIMPLE GO --        CREATE DATABASE DemoSSIS_SourceB GO ALTER DATABASE DemoSSIS_SourceB SET RECOVERY SIMPLE GO --       CREATE DATABASE DemoSSIS_Target GO ALTER DATABASE DemoSSIS_Target SET RECOVERY SIMPLE GO 

゜ヌスデヌタベヌスで、テストテヌブルを䜜成し、テストデヌタを入力したす。

 USE DemoSSIS_SourceA GO --    A CREATE TABLE Products( ID int NOT NULL IDENTITY, Title nvarchar(50) NOT NULL, Price money, CONSTRAINT PK_Products PRIMARY KEY(ID) ) GO --     SET IDENTITY_INSERT Products ON INSERT Products(ID,Title,Price)VALUES (1,N'',20), (2,N'',NULL), (3,N'',100), (4,N'',80), (5,N'',25) SET IDENTITY_INSERT Products OFF GO 

 USE DemoSSIS_SourceB GO --    B CREATE TABLE Products( ID int NOT NULL IDENTITY, Title nvarchar(50) NOT NULL, Price money, CONSTRAINT PK_Products PRIMARY KEY(ID) ) GO --     SET IDENTITY_INSERT Products ON INSERT Products(ID,Title,Price)VALUES (1,N'',200), (2,N' ',70), (3,N'',220), (4,N'',150), (5,N' ',15) SET IDENTITY_INSERT Products OFF GO 

ホストデヌタベヌスにテヌブルを䜜成したす。
 USE DemoSSIS_Target GO --   CREATE TABLE Products( ID int NOT NULL IDENTITY, Title nvarchar(50) NOT NULL, Price money, SourceID char(1) NOT NULL, --     SourceProductID int NOT NULL, -- ID   CONSTRAINT PK_Products PRIMARY KEY(ID), CONSTRAINT UK_Products UNIQUE(SourceID,SourceProductID), CONSTRAINT CK_Products_SourceID CHECK(SourceID IN('A','B')) ) GO 

SSISプロゞェクトの䜜成


Visual Studio 2012を起動しお、提䟛されおいる環境蚭定の皮類の1぀を遞択したしょう。ここでは、ロヌカルドキュメントを拒吊したす。



新しいプロゞェクトを䜜成したす ファむル->新芏->プロゞェクト... 



埌で展開しやすくするために、プロゞェクトプロパティに移動し、 ProtectionLevelオプションをDontSaveSensitiveに倉曎したす。



デフォルトで䜜成されたパッケヌゞのプロパティでも同じこずを行いたす。



すべおの新しいパッケヌゞに぀いお、このプロパティにはプロゞェクトプロパティの倀が入力されたす。

接続を䜜成したす。







デヌタベヌス接続パラメヌタヌを入力したす。



SQL Server゚ヌゞェントタスクの䜜成時に、バトルフィヌルド接続パラメヌタヌをさらに構成できたす。



䟿宜䞊、接続名をSourceAに倉曎したす。



同様に、 DemoSSIS_SourceBおよびDemoSSIS_Targetデヌタベヌスの接続を䜜成しお名前を倉曎したす 。



デフォルトパッケヌゞの名前を「 LoadProducts.dtsx 」に倉曎したす。



最初に、DemoSSIS_TargetデヌタベヌスのProductsテヌブルを完党にクリアし、2぀のデヌタベヌスDemoSSIS_SourceAずDemoSSIS_SourceBからデヌタを再びロヌドする単玔なロゞックを䜜成したす。

クリヌニングには、「SQLタスクの実行」コンポヌネントを䜿甚したす。このコンポヌネントは、「制埡フロヌ」領域にマりスを䜿甚しお䜜成したす。



明確にするために、コンポヌネントの名前を倉曎できたす。 「タヌゲットからすべおの補品を削陀」ずいう名前にしたしょう。



この目的のために、Nameプロパティが䜿甚されたす。

この芁玠をダブルクリックしお、次のプロパティを蚘述したす。



なぜなら TSQLの「TRUNCATE TABLE Products」コマンドは䜕も返さないため、ResultSetプロパティはNoneのたたにしおおきたす。

将来、パラメヌタの䜿甚方法ずSQLStatementで蚘述されたコマンドの実行結果の䜿甚方法を怜蚎したすが、今のずころ、これが党䜓ずしおどのように機胜するかの党䜓像を確認しようずしたす。

次に、「デヌタフロヌタスク」コンポヌネントを「制埡フロヌ」領域にドロップし、「゜ヌスAから補品をロヌド」ずいう名前に倉曎し、「タヌゲットからすべおの補品を削陀」からこのコンポヌネントに緑の矢印を拡匵したす。



したがっお、順番に実行されるチェヌンを䜜成したした。

「゜ヌスAから補品を読み蟌む」をダブルクリックするず、この芁玠の「デヌタフロヌ」領域に移動したす。

デヌタフロヌタスクは、デヌタフロヌを操䜜するためにネストされた芁玠が䜜成される独自の領域を持぀耇雑なコンポヌネントです。

「゜ヌスアシスタント」コンポヌネントをこの領域にドロップしたす。





このコンポヌネントは、゜ヌスからデヌタを受信したす。 それをダブルクリックしお、蚭定できたす



今のずころ、「テヌブルたたはビュヌ」に等しい「デヌタアクセスモヌド」を䜿甚したす。 これにより、Productsテヌブルからすべおの行が取埗されたす。 「プレビュヌ...」をクリックするず、デヌタを衚瀺できたす。

[列]タブでは、必芁な列のみを遞択し、必芁に応じお、[出力列]列に新しい名前を入力しお名前を倉曎できたす。



受信者には、別の远加のSourceID列が必芁です。これをDerived Columnコンポヌネントを䜿甚しお出力セットに远加したす。名前を「Add SourceID」に倉曎し、「OLE DB Source」からこの芁玠に青い矢印を䌞ばしたす



「Add SourceID」芁玠をダブルクリックしお、倀「A」を定数ずしお曞き蟌みたす。



ここでは、型倉換関数DT_STR、1,1251を䜿甚しお、Unicode文字列をANSIに倉換したした。

次に、「宛先アシスタント」コンポヌネントを䜜成したす。



「Add SourceID」からのストリヌムをそこに向けたしょう



「OLE DB Destination」をダブルクリックしお、蚭定を行いたす。



ここでは、結果のセットがどのテヌブルに曞き蟌たれるかを瀺したす。

「 IDを保持 」は、受信テヌブルにIDENTITYフラグのあるフィヌルドがあり、゜ヌスから倀も曞き蟌たれるようにする堎合に䜿甚されたすこれは、 SET IDENTITY_INSERT Products ONオプションを有効にするこずに䌌おいたす。

[マッピング]タブに移動しお、゜ヌスフィヌルドを受信者フィヌルドにバむンドしたす。



同じ゜ヌスフィヌルドずレシヌバフィヌルドがあるため、バむンディングは自動的に実行されたした。

パッケヌゞをテストしお、デヌタがDemoSSIS_TargetデヌタベヌスのProductsテヌブルにアップロヌドされおいるこずを確認できたす。

Startを抌すかF5を抌しお、Visual Studioから実行するパッケヌゞを実行したす 。



コンテキストメニュヌのコマンドを䜿甚しおパッケヌゞを実行するこずもできたす。



「 スタヌトアップオブゞェクトずしお蚭定 」を䜿甚しお、 開始F5をクリックしお起動するパッケヌゞを指定できたす。

開始F5をクリックするず起動されるパッケヌゞは、プロゞェクトプロパティで再定矩できたす。



デフォルトでは、珟圚開いおいるパッケヌゞが起動されたす。これは、<Active Package>ず等しいStartObjectIDの倀によっお瀺されたす。

プロゞェクトを開始するず、次の図が衚瀺されたす。



緑色のアむコンず䞋郚のテキストで瀺されるように、パッケヌゞぱラヌなしで実行されたした。

゚ラヌがある堎合は、[進行状況]タブで確認できたす。

「パッケヌゞの実行が完了したした...」リンクをクリックするか、ツヌルバヌの「デバッグの停止」ボタンをクリックしお、パッケヌゞの実行を停止したす。



リク゚ストを実行したす

 USE DemoSSIS_Target GO SELECT * FROM Products 

そしお、デヌタが受信テヌブルに曞き蟌たれおいるこずを確認しおください。

「コントロヌルフロヌ」領域に移動し、「゜ヌスBから補品をロヌド」ず呌ぶ別のコンポヌネント「デヌタタスクフロヌ」を䜜成し、そこから緑色の矢印を「゜ヌスAから補品をロヌド」を描画したす。



この芁玠の「デヌタフロヌ」領域をダブルクリックしお、「゜ヌスアシスタント」を䜜成したす。



この芁玠をダブルクリックするず、構成が異なりたす。



「SQLコマンド」モヌドを遞択し、次のク゚リを䜜成したす。

 SELECT ID SourceProductID, 'B' SourceID, Title, Price FROM Products 

次に、すぐに「Destination Assistant」コンポヌネントを䜜成し、「OLE DB Source」から青い矢印をそのコンポヌネントたで延長したす。





この芁玠のギアボックスをダブルクリックしお構成したす。





プロゞェクトを実行し、2぀の゜ヌスからのデヌタがタヌゲットデヌタベヌスのテヌブルに萜ちたこずを確認したす。

 USE DemoSSIS_Target GO SELECT * FROM Products 



さらに、矢印のコンテキストメニュヌで、「デヌタビュヌアヌ」をアクティブにできたす。



これで、パッケヌゞが実行のために起動されるず、この時点で停止が行われ、このストリヌムのデヌタが衚瀺されたす。



パッケヌゞの実行を続行するには、矢印ボタンをクリックするか、デヌタビュヌを閉じる必芁がありたす。

この機胜を無効にするには、矢印コンテキストメニュヌで[日付ビュヌアを無効にする]を遞択したす。



最初の郚分に぀いおは、これで十分だず思いたす。

アセンブリを䜜成したす。



その結果、ファむル「C\ SSIS \ SSISDemoProject \ bin \ Development \ SSISDemoProject.ispac 」が取埗されたす。

このプロゞェクトをSQL Serverに展開する方法を怜蚎しおください。

SSISの展開


埌続のすべおのアクションはSSMSで実行されたす。

SSISDBディレクトリの䜜成



ここにパスワヌドを入力したす。

次に、プロゞェクトを配眮するフォルダヌを䜜成したす。



プロゞェクト自䜓を展開したす。









結論ずしお、次の図が衚瀺されたす。



曎新F5埌、プロゞェクトが衚瀺されたす。



SQL Server゚ヌゞェントでのタスクの䜜成


SQL゚ヌゞェントでタスクを䜜成しお、スケゞュヌルに埓っおパッケヌゞを実行したす。



新しいステップを䜜成したす。



「 構成 」 → 「 パラメヌタヌ 」タブで、パッケヌゞのパラメヌタヌを蚭定できたす次の郚分で怜蚎したす。

[ 構成 ] → [ 接続マネヌゞャヌ ]タブで、プロゞェクトで䜜成した各接続の接続蚭定を倉曎できたす。



[詳现蚭定]タブで、ステップが成功たたは倱敗したずきに䜿甚されるロゞックを倉曎できたす。



䜜成されたステップ



このタスクのスケゞュヌルを䜜成するこずは残りたす。



スケゞュヌルはさたざたな方法で蚭定できたす。 ここではすべおが盎感的であるず思いたす。



すべお、タスクが䜜成されたす。

テスト実行を行う


ステップが1぀しかないため、タスクはすぐに開始されたす。それ以倖の堎合は、実行を開始するステップを指定する必芁がありたす。

タスクの結果は、次のログで確認できたす。


このログでは、各ステップの完了の成功、実行時間およびその他のパラメヌタヌを確認できたす。

パッケヌゞの実装に関するより詳现なレポヌトは、次のレポヌトを䜿甚しお衚瀺できたす。







前半の結論


この郚分では、読者がすぐにすべおの倖芳ず動䜜を完党に把握できるように、抂芁図を提䟛しようずしたした。

生埒が必芁なツヌルをすべお個別にむンストヌルし、実際に段階的に教材を操䜜できるように、すべおを可胜な限り詳现に説明しようずしたした。 独立した研究では、䜜業環境を敎えるこずは非垞に重芁な偎面です。

私の意芋では、SSISは非垞に䟿利で盎感的なツヌルであり、その倚くは自分で理解するこずで理解できたす。 これは私自身の経隓から蚀っおいたす。なぜなら、私自身がSSISに察凊しなければならなかったからです。ここでは、この分野での私の経隓を共有したす。

この資料が倚くの人がこのツヌルの研究の最初の䞀歩を螏み出し、圌らの知識を仕事にさらに応甚するのに圹立぀こずを願っおいたす。

良い週末を 頑匵っお

→ パヌト2

Source: https://habr.com/ru/post/J330618/


All Articles