Udostępnij przez


Metoda SMOEnumerator.Reset

Ustawia modułu wyliczającego do jej początkowego położenia, przed pierwszym elementem kolekcja.

Przestrzeń nazw:  Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
Zestaw:  Microsoft.SqlServer.ForEachSMOEnumerator (w Microsoft.SqlServer.ForEachSMOEnumerator.dll)

Składnia

'Deklaracja
Public Sub Reset
'Użycie
Dim instance As SMOEnumerator

instance.Reset()
public void Reset()
public:
virtual void Reset() sealed
abstract Reset : unit -> unit 
override Reset : unit -> unit 
public final function Reset()

Implementacje

IEnumerator.Reset()

Uwagi

Moduł wyliczający zachowuje ważność tak długo, jak długo kolekcja pozostaje niezmieniony.Jeśli zmian do kolekcja, takie jak dodawanie, modyfikowanie lub usuwanie elementów, moduł wyliczający bezpowrotnie unieważniona i wywołanie następnego MoveNext lub Reset powoduje wyjątek.

Przykłady

Poniższy kod ilustruje tworzenie ForEachLoop, tworzy moduł wyliczający SMO i obsługiwana w ForEachEnumeratorHost, gdzie następnie jest dodawana jako ForEachEnumerator w ForEachLoop.Zwracanie ForEachSMOEnumerator, SMOEnumerator jest tworzona jako System.Collections.IEnumerator i powtórzyć za pomocą MoveNext i Current.Po upływie kolekcja koniec, Reset służy do resetowania sterująca.

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.AdventureWorks2008R2";
            connectionManager.ConnectionString = @"Data Source=localhost;"
                + "Initial Catalog=AdventureWorks2008R2;"
                + "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='AdventureWorks2008R2']"
                + @"/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.AdventureWorks2008R2"
            connectionManager.ConnectionString = "Data Source=localhost;"
                + "Initial Catalog=AdventureWorks2008R2;"
                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='AdventureWorks2008R2']"
                + "/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