DtsEnumerator 클래스
Defines an abstract base class that implements the IEnumerator methods.
상속 계층
System.Object
Microsoft.SqlServer.Dts.Runtime.DtsEnumerator
추가 정보...
네임스페이스: Microsoft.SqlServer.Dts.Runtime
어셈블리: Microsoft.SqlServer.ManagedDTS(Microsoft.SqlServer.ManagedDTS.dll)
구문
‘선언
Public MustInherit Class DtsEnumerator _
Implements IEnumerator
‘사용 방법
Dim instance As DtsEnumerator
public abstract class DtsEnumerator : IEnumerator
public ref class DtsEnumerator abstract : IEnumerator
[<AbstractClassAttribute>]
type DtsEnumerator =
class
interface IEnumerator
end
public abstract class DtsEnumerator implements IEnumerator
DtsEnumerator 유형에서 다음 멤버를 표시합니다.
생성자
이름 | 설명 | |
---|---|---|
DtsEnumerator | Initializes a new instance of the DtsEnumerator class. |
맨 위로 이동
속성
이름 | 설명 | |
---|---|---|
Current | Gets the current element in the collection. |
맨 위로 이동
메서드
이름 | 설명 | |
---|---|---|
Equals | (Object에서 상속됨) | |
Finalize | (Object에서 상속됨) | |
GetHashCode | (Object에서 상속됨) | |
GetType | (Object에서 상속됨) | |
MemberwiseClone | (Object에서 상속됨) | |
MoveNext | Advances the enumerator to the next element of the collection. | |
Reset | Sets the enumerator to its initial position, which is before the first element in the collection. | |
ToString | (Object에서 상속됨) |
맨 위로 이동
주의
DtsEnumerator is the base interface for all enumerators. The DtsEnumerator allows only reading of the data in the collection and is not used to modify the underlying collection.
Initially, the enumerator is positioned before the first element in the collection. Reset also brings the enumerator back to this position. At this position, calling Current throws an exception. Therefore, you must call MoveNext to advance the enumerator to the first element of the collection before reading the value of Current.
Current returns the same object until either MoveNext or Reset is called. MoveNext sets Current to the next element.
After the end of the collection is passed, the enumerator is positioned after the last element in the collection, and calling MoveNext returns false. If the last call to MoveNext returned false, calling Current throws an exception. To set Current to the first element of the collection again, you can call Reset followed by MoveNext.
An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and the next call to MoveNext or Reset throws an InvalidOperationException. If the collection is modified between MoveNext and Current, Current will return the element that it is set to, even if the enumerator is already invalidated.
The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is not a thread-safe procedure. Even when a collection is synchronized, other threads could still modify the collection, which causes the enumerator to throw an exception. To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration or catch the exceptions that result from changes made by other threads.
예
The following code example adds a task to a package then runs the package. The warnings collection is shown by creating a WarningEnumerator, which inherits from this DtsEnumerator class, and displays each warning description.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask;
namespace Microsoft.SqlServer.SSIS.Samples
{
class Program
{
static void Main(string[] args)
{
Package package = new Package();
Console.WriteLine("Package warnings count before running: {0}", package.Warnings.Count);
TaskHost taskH2 = (TaskHost)package.Executables.Add("STOCK:SendMailTask");
taskH2.FailPackageOnFailure = false;
taskH2.FailParentOnFailure = false;
Console.WriteLine("SendMailTask: {0}", taskH2.ID);
// Test that warnings were successfully added to the collection.
package.MaximumErrorCount = 100;
package.FailPackageOnFailure = false;
package.FailParentOnFailure = false;
package.DelayValidation = true;
package.Execute();
Console.WriteLine("Package warnings count after running the package: {0}", package.Warnings.Count);
// Create the enumerator.
WarningEnumerator myEnumerator = package.Warnings.GetEnumerator();
Console.WriteLine("The collection contains the following values:");
int i = 0;
while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))
Console.WriteLine("[{0}] {1}", i++, myEnumerator.Current.Description);
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask
Namespace Microsoft.SqlServer.SSIS.Samples
Class Program
Shared Sub Main(ByVal args() As String)
Dim package As Package = New Package()
Console.WriteLine("Package warnings count before running: {0}", package.Warnings.Count)
Dim taskH2 As TaskHost = CType(package.Executables.Add("STOCK:SendMailTask"), TaskHost)
taskH2.FailPackageOnFailure = False
taskH2.FailParentOnFailure = False
Console.WriteLine("SendMailTask: {0}", taskH2.ID)
' Test that warnings were successfully added to the collection.
package.MaximumErrorCount = 100
package.FailPackageOnFailure = False
package.FailParentOnFailure = False
package.DelayValidation = True
package.Execute()
Console.WriteLine("Package warnings count after running the package: {0}", package.Warnings.Count)
' Create the enumerator.
Dim myEnumerator As WarningEnumerator = package.Warnings.GetEnumerator()
Console.WriteLine("The collection contains the following values:")
Dim i As Integer = 0
While (myEnumerator.MoveNext()) &&(myEnumerator.Current <> Nothing)
Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
End While
End Sub
End Class
End Namespace
Sample Output:
Package warnings count before running: 0
SendMailTask: {34CAEFF9-64BF-401D-B646-C88B705DB971}
Package warnings count after running the package: 2
The collection contains the following values:
[0] The address in the From line is not formed correctly. It is missing an @ or it is not valid.
[1] Subject is empty
스레드 보안
이 유형의 모든 공용 static(Visual Basic에서는 Shared) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전성이 보장되지 않습니다.
참고 항목
참조
Microsoft.SqlServer.Dts.Runtime 네임스페이스
상속 계층
System.Object
Microsoft.SqlServer.Dts.Runtime.DtsEnumerator
Microsoft.SqlServer.Dts.Runtime.BreakpointTargetEnumerator
Microsoft.SqlServer.Dts.Runtime.ConfigurationEnumerator
Microsoft.SqlServer.Dts.Runtime.ConnectionEnumerator
Microsoft.SqlServer.Dts.Runtime.ConnectionInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.DBProviderInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.DtsEventHandlerEnumerator
Microsoft.SqlServer.Dts.Runtime.ErrorEnumerator
Microsoft.SqlServer.Dts.Runtime.EventInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.ExecutableEnumerator
Microsoft.SqlServer.Dts.Runtime.ExtendedPropertyEnumerator
Microsoft.SqlServer.Dts.Runtime.ForEachEnumeratorInfosEnumerator
Microsoft.SqlServer.Dts.Runtime.ForEachVariableMappingEnumerator
Microsoft.SqlServer.Dts.Runtime.LogEntryInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.LogProviderEnumerator
Microsoft.SqlServer.Dts.Runtime.LogProviderInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PackageInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PackageParameterEnumerator
Microsoft.SqlServer.Dts.Runtime.PipelineComponentInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraintEnumerator
Microsoft.SqlServer.Dts.Runtime.PropertyEnumerator
Microsoft.SqlServer.Dts.Runtime.RunningPackagesEnumerator
Microsoft.SqlServer.Dts.Runtime.TaskInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.VariableEnumerator
Microsoft.SqlServer.Dts.Runtime.WarningEnumerator