次の方法で共有


ForEachSMOEnumerator.GetEnumerator メソッド

定義

ActiveX データ オブジェクト (ADO) オブジェクトを反復処理できる IEnumerator インターフェイスを返します。

public:
 override System::Object ^ GetEnumerator(Microsoft::SqlServer::Dts::Runtime::Connections ^ connections, Microsoft::SqlServer::Dts::Runtime::VariableDispenser ^ variableDispenser, Microsoft::SqlServer::Dts::Runtime::IDTSInfoEvents ^ events, Microsoft::SqlServer::Dts::Runtime::IDTSLogging ^ log);
public override object GetEnumerator (Microsoft.SqlServer.Dts.Runtime.Connections connections, Microsoft.SqlServer.Dts.Runtime.VariableDispenser variableDispenser, Microsoft.SqlServer.Dts.Runtime.IDTSInfoEvents events, Microsoft.SqlServer.Dts.Runtime.IDTSLogging log);
override this.GetEnumerator : Microsoft.SqlServer.Dts.Runtime.Connections * Microsoft.SqlServer.Dts.Runtime.VariableDispenser * Microsoft.SqlServer.Dts.Runtime.IDTSInfoEvents * Microsoft.SqlServer.Dts.Runtime.IDTSLogging -> obj
Public Overrides Function GetEnumerator (connections As Connections, variableDispenser As VariableDispenser, events As IDTSInfoEvents, log As IDTSLogging) As Object

パラメーター

connections
Connections

タスクで使用される Connections のコレクションです。

variableDispenser
VariableDispenser

変数をロックするための VariableDispenser オブジェクトです。

events
IDTSInfoEvents

IDTSInfoEvents インターフェイスを実装するオブジェクト。

log
IDTSLogging

IDTSLogging インターフェイスを実装するオブジェクト。

戻り値

オブジェクト。

次のコード例では、ForEachLoop と SMO 列挙子を作成し、SMO 列挙子を ForEachEnumeratorHost でホストして、ForEachEnumerator として ForEachLoop に追加します。 ForEachSMOEnumerator が返され、SMOEnumeratorSystem.Collections.IEnumerator として作成し、MoveNextCurrent を使用して繰り返し処理します。 コレクションの末尾を越えたら、Reset を使用して、反復子をリセットします。

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;  
using Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO;  

namespace SMOEnumerator  
{  
    class Program  
    {  
        const string PACKAGEFILENAME = @"\SamplePackage.dtsx";  

        static void Main(string[] args)  
        {  
            // Create the SSIS application  
            Application application = new Application();  

            // Create the new package  
            Package package = new Package();  
            package.PackageType = DTSPackageType.DTSDesigner100;  
            package.Name = "SMOEnumerator Sample";  
            package.Description = "This is a sample for SMOEnumerator";  
            package.CreatorComputerName = @"MACHINENAME"; // System.Environment.MachineName;  
            package.CreatorName = @"USERNAME"; //System.Environment.UserName;  

            // Adds the ADO.NET connection manager to the package  
            Connections connections = package.Connections;  
            ConnectionManager connectionManager = connections.Add("ADO.NET:SQL");  
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName);  
            connectionManager.Name = @"localhost.AdventureWorks";  
            connectionManager.ConnectionString = @"Data Source=localhost;"  
                + "Initial Catalog=AdventureWorks;"  
                + "Integrated Security=True;";  

            // Create ForEach SMO Loop task  
            Executables executables = package.Executables;  
            ForEachLoop forEachLoop = executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;  
            forEachLoop.Name = "Foreach Loop Container";  
            forEachLoop.Description = "Foreach Loop Container";  

            ForEachEnumeratorInfo forEachEnumeratorInfo = application.ForEachEnumeratorInfos["Foreach SMO Enumerator"];  
            ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();  
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost;  

            // Setup the SMO enumerator  
            ForEachSMOEnumerator forEachSMOEnumerator = forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator;  
            forEachSMOEnumerator.EnumURN = @"RuntimeServer[@Connection='"  
                + connectionManager.ID + @"']/Server[@Name='localhost']"  
                + @"/Database[@Name='AdventureWorks']"  
                + @"/SMOEnumObj[@Name='Tables']"  
                + @"/SMOEnumType[@Name='ObjectsPP']";  

            System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(  
            connections, null, null, null);  
            Console.WriteLine("The collection contains the following values:");  
            int i = 0;  
            while ((smoEnumerator.MoveNext()) && (smoEnumerator.Current != null))  
                Console.WriteLine("[{0}] {1}", i++, smoEnumerator.Current);  

             smoEnumerator.Reset();  

            // Validate the layout of the package  
            DTSExecResult status = package.Validate(package.Connections, null, null, null);  
            Console.WriteLine("Validation result: " + status);  

            // Save the package  
            String currentDirectory = Environment.CurrentDirectory;  
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, null);  
            Console.WriteLine(@"Package saved to " + currentDirectory + PACKAGEFILENAME);  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO  

Namespace SMOEnumerator  
    Class Program  
        const String PACKAGEFILENAME = "\SamplePackage.dtsx"  

        Shared  Sub Main(ByVal args() As String)  
            ' Create the SSIS application  
            Dim application As Application =  New Application()   

            ' Create the new package  
            Dim package As Package =  New Package()   
            package.PackageType = DTSPackageType.DTSDesigner100  
            package.Name = "SMOEnumerator Sample"  
            package.Description = "This is a sample for SMOEnumerator"  
            package.CreatorComputerName = "MACHINENAME" ' System.Environment.MachineName;  
            package.CreatorName = "USERNAME" 'System.Environment.UserName;  

            ' Adds the ADO.NET connection manager to the package  
            Dim connections As Connections =  package.Connections   
            Dim connectionManager As ConnectionManager =  connections.Add("ADO.NET:SQL")   
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName)  
            connectionManager.Name = "localhost.AdventureWorks"  
            connectionManager.ConnectionString = "Data Source=localhost;"  
                + "Initial Catalog=AdventureWorks;"  
                Dim "Integrated Security=True;" As +  

            ' Create ForEach SMO Loop task  
            Dim executables As Executables =  package.Executables   
            Dim forEachLoop As ForEachLoop =  executables.Add("STOCK:FOREACHLOOP") as ForEachLoop   
            forEachLoop.Name = "Foreach Loop Container"  
            forEachLoop.Description = "Foreach Loop Container"  

            Dim forEachEnumeratorInfo As ForEachEnumeratorInfo =  application.ForEachEnumeratorInfos("Foreach SMO Enumerator")   
            Dim forEachEnumeratorHost As ForEachEnumeratorHost =  forEachEnumeratorInfo.CreateNew()   
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost  

            ' Setup the SMO enumerator  
            Dim forEachSMOEnumerator As ForEachSMOEnumerator =  forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator   
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"  
                + connectionManager.ID + "']/Server[@Name='localhost']"  
                + "/Database[@Name='AdventureWorks']"  
                + "/SMOEnumObj[@Name='Tables']"  
                Dim "/SMOEnumType[@Name='ObjectsPP']" As +  

            System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(  
                connections, Nothing, Nothing, Nothing)  
            Console.WriteLine("The collection contains the following values:")  
            Dim i As Integer =  0   
            While (smoEnumerator.MoveNext()) &&(smoEnumerator.Current <> Nothing)  
            Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1  
            End While  

             smoEnumerator.Reset()  

            ' Validate the layout of the package  
            Dim status As DTSExecResult =  package.Validate(package.Connections,Nothing,Nothing,Nothing)   
            Console.WriteLine("Validation result: " + status)  

            ' Save the package  
            Dim currentDirectory As String =  Environment.CurrentDirectory   
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, Nothing)  
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME)  
        End Sub  
    End Class  
End Namespace  

適用対象