For Loop Container در SSIS
For Loop Container در SSIS وظیفه تکرار کارهای SQL Integration Services را به تعداد مشخصی دفعات تا زمانی که شرط دادهشده نادرست (False) شود، بر عهده دارد. این عملکرد مشابه For Loop در هر زبان برنامهنویسی است. در این بخش، ما رویکرد گام به گام برای پیکربندی For Loop Container در SSIS همراه با مثال را به شما نشان خواهیم داد.
قبل از اینکه شروع به کار با SSIS For Loop Container کنیم، اجازه دهید یک جدول خالی در SQL Server ایجاد کنم:
-- For Loop Container Example
CREATE TABLE [dbo].[SSISForLoopExample](
[Key] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CounterNumber] [int] NULL,
[LoopNumber] [varchar](50) NULL,
[LastUpdated] [datetime] NULL,
)
GO
پیکربندی For Loop Container در SSIS
در این مثال، ما یک متغیر ایجاد خواهیم کرد. سپس قصد داریم این متغیر را با استفاده از For Loop به مقدار 1 افزایش دهیم و سپس آن مقدار را در جدولی که در بالا ایجاد کردیم ذخیره کنیم. برای انجام این کار، ابتدا باید SSIS For Loop Container را به منطقه Control Flow بکشید و رها کنید.

با دوبار کلیک کردن روی آن، SSIS For Loop Editor باز میشود. شما میتوانید از این ویرایشگر برای پیکربندی آن استفاده کنید. برای درک جریان برنامهنویسی For Loop به صورت گام به گام، به For Loop در زبان C مراجعه کنید. حتی اگر زبان C را نمیدانید، این به شما کمک میکند تا مفهوم حلقه را بهتر درک کنید.
InitExpression: حلقه For با دستور initialization شروع میشود. بنابراین، مقداردهی اولیه متغیر شمارنده باید ابتدا انجام شود (به عنوان مثال، @counter = 1 یا @i = 1).
EvalExpression: مقدار متغیر شمارنده با شرط مقایسه میشود. اگر شرط درست باشد، حلقه For اجرا خواهد شد. در غیر این صورت، حلقه For خاتمه مییابد.
AssignExpression: این عبارت پس از پایان هر تکرار اجرا میشود. این کمک میکند تا متغیر شمارنده را مطابق با نیاز ما افزایش یا کاهش دهیم.
در بخش General از SSIS For Loop Container، لطفاً یک نام و توضیحات معتبر و معنیدار وارد کنید.

به نظر میرسد که فراموش کردهام متغیری را که باید در For Loop استفاده کنم، ایجاد کنم. بنابراین، اجازه دهید ویرایشگر For Loop را ببندم و روی طراحی راستکلیک کنم تا منوی زمینه باز شود. لطفاً گزینه Variables را انتخاب کنید.

همانطور که در اسکرینشات زیر مشاهده میکنید، ما یک متغیر به نام CounterNumber از نوع Integer ایجاد کردهایم و مقدار پیشفرض آن را 0 قرار دادهایم.

حال، ویرایشگر For Loop را باز کنید و مقادیر مناسب را اختصاص دهید. طبق تنظیمات زیر، حلقه For از مقدار 0 شروع میشود، تا زمانی که به 10 برسد اجرا خواهد شد، و در هر تکرار، مقدار CounterNumber به میزان 1 افزایش مییابد.

روی OK کلیک کنید تا SSIS For Loop Container بسته شود. حالا باید Execute SQL Task را داخل For Loop Container بکشید و رها کنید. ما قصد داریم از این Execute SQL Task برای درج دادهها (INSERT) به داخل جدول استفاده کنیم.

با دوبار کلیک روی آن، Execute SQL Task Editor باز میشود تا بتوانید آن را پیکربندی کنید. حالا باید Connection Type را به ADO.NET Connection انتخاب کنید، که به پایگاه داده SQL Tutorial متصل است. سپس، از آنجایی که ما از Direct Input به عنوان دستور SQL استفاده میکنیم، روی دکمه … کلیک کنید.

لطفاً دستور SQL سفارشی خود را در اینجا وارد کنید. همانطور که در اسکرینشات زیر مشاهده میکنید، ما یک دستور INSERT نوشتهایم تا دادهها را در جدول SSIS For Loop Example وارد کنیم.
-- For Loop Container Example
INSERT INTO [dbo].[SSISForLoopExample]
([CounterNumber]
,[LoopNumber]
,[LastUpdated])
VALUES
(@CounterNumber
,'Loop Number' + CAST(@CounterNumber AS VARCHAR(50))
,getdate())

تنظیمات باقیمانده SSIS For Loop Container را بررسی کنید.

حال، به تنظیمات پارامترهای For Loop Container بروید تا پارامتری که در دستور SQL استفاده کردیم را اختصاص دهید. همانطور که مشاهده میکنید، متغیر User (متغیری که از For Loop دریافت میکنیم) را به Parameter Name اختصاص دادهایم (این نامی است که در دستور SQL استفاده کردهایم).

روی OK کلیک کنید تا پیکربندی Execute SQL Task Parameter Mapping تمام شود. حالا میتوانیم پکیج SSIS For Loop Container را اجرا کنیم.

اجازه دهید SQL Server Management Studio را باز کنم و بررسی کنم که آیا رکوردها با مقادیر شمارنده مختلف به جدول مقصد با استفاده از For Loop Container وارد شدهاند یا خیر.

دیدگاهتان را بنویسید