Partilhar via


SMODataFileEnumerator.MoveNext Method

Advances the enumerator to the next element of the collection.

Namespace: Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
Assembly: Microsoft.SqlServer.ForEachSMOEnumerator (in microsoft.sqlserver.foreachsmoenumerator.dll)

Syntax

'Declaration
Public Function MoveNext As Boolean
public bool MoveNext ()
public:
virtual bool MoveNext () sealed
public final boolean MoveNext ()
public final function MoveNext () : boolean

Return Value

true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.

Example

The following code example creates a ForEachLoop, creates a SMO enumerator and hosts it in a ForEachEnumeratorHost, where it is then added as the ForEachEnumerator in the ForEachLoop. Returning a ForEachSMOEnumerator, a SMODataFileEnumerator is created as a System.Collections.IEnumerator and iterated over using MoveNext and Current. After the index has passed the end of the collection, the Reset is used to reset the iterator.

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

namespace SmoDataFileEnumerator
{
    class Program
    {
        const string PACKAGEFILENAME = @"\SmoDataFileEnumeratorPackage.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.DTSDesigner;
            package.Name = "SMODataFileEnumerator Sample";
            package.Description = "This is a sample for SMODataFileEnumerator";
            // Use System.Environment.MachineName; in the following line of code.
            package.CreatorComputerName = @"MACHINENAME";
            // Use System.Environment.UserName; in the following line of code.
            package.CreatorName = @"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";

            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName);
            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='DataFiles']"
                + @"/SMOEnumType[@Name='Locations']";

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

            smoDataFileEnumerator.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 SmoDataFileEnumerator
    Class Program
        const String PACKAGEFILENAME = "\SmoDataFileEnumeratorPackage.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.DTSDesigner
            package.Name = "SMODataFileEnumerator Sample"
            package.Description = "This is a sample for SMODataFileEnumerator"
            ' Use System.Environment.MachineName; in the following line of code.
            package.CreatorComputerName = "MACHINENAME"
            ' Use System.Environment.UserName; in the following line of code.
            package.CreatorName = "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"
 
            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName)
            ForEachEnumeratorInfo forEachEnumeratorInfo
                Dim  As =
            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='DataFiles']"
                Dim "/SMOEnumType[@Name='Locations']" As +
 
            System.Collections.IEnumerator smoDataFileEnumerator = forEachSMOEnumerator.GetEnumerator(
            connections, Nothing, Nothing, Nothing) as System.Collections.IEnumerator
            Console.WriteLine("The collection contains the following values:")
            Dim i As Integer =  0 
            While (smoDataFileEnumerator.MoveNext()) &&(smoDataFileEnumerator.Current <> Nothing)
                Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
            End While

            smoDataFileEnumerator.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

Thread Safety

Any public static (Shared in Microsoft Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

Target Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

See Also

Reference

SMODataFileEnumerator Class
SMODataFileEnumerator Members
Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO Namespace