Vorbereiten des SSIS-Masseneinfügungsvorgangs für das Einfügen von Daten auf UAC-fähigen Systemen nicht möglich
Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn Sie versuchen, ein SSIS-Paket auf Systemen auszuführen, auf denen die Benutzerkontensteuerung (User Account Control, UAC) aktiviert ist.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2009672
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie erstellen ein SSIS-Paket (SQL Server Integration Services), das eine SQL Server Zielkomponente in einem Datenflusstask enthält.
Sie versuchen, dieses Paket auf Systemen auszuführen, auf denen die Benutzerkontensteuerung (User Account Control, UAC) aktiviert ist (z. B. Vista oder Windows 7), indem Sie eine der folgenden Methoden verwenden:
- Business Intelligence Development Studio (BIDS)
- SQL Server Management Studio (SSMS) Objekt-Explorer
- DTExec.exe
- DTExecUI.exe
In diesem Szenario erhalten Sie möglicherweise eine Fehlermeldung, die der folgenden ähnelt:
SQL Server Ziel] Fehler: Die SSIS-Masseneinfügung kann nicht für das Einfügen von Daten vorbereitet werden. [SSIS. Pipeline] Fehler: Die Komponente "SQL Server Destination" ist in der Phase vor der Ausführung fehlgeschlagen und hat den Fehlercode 0xC0202071 zurückgegeben.
Hinweis
Dieser Fehler wird nicht angezeigt, wenn Sie das Paket unter dem integrierten Administratorkonto ausführen, das während der Installation des Betriebssystems erstellt wird. Sie erhalten diese Meldung jedoch für alle anderen Benutzer, einschließlich der Benutzer, die Mitglieder der Gruppe "Lokale Administratoren" sind.
Das Problem tritt nicht auf, wenn Sie dasselbe SSIS-Paket wie ein SQL Server-Agent Auftrag ausführen.
Nach der Installation von SQL 2008 Service Pack 2 wurde der Text des Fehlers DTS_E_BULKINSERTAPIPREPARATIONFAILED (0xC0202071) in: Massenkopieren von Daten nicht möglich geändert. Möglicherweise müssen Sie dieses Paket als Administrator ausführen.
Diese Änderung wurde vorgenommen, um das Verständnis der erforderlichen Korrekturmaßnahmen zu erleichtern, wie im Abschnitt zur Lösung dieser KB beschrieben.
Ursache
Wenn auf Systemen, auf denen UAC aktiviert ist, eine Anwendung (z. B. SSIS) von einem Konto gestartet wird, das Mitglied der Gruppe Administratoren ist, erhält sie zwei Sicherheitstoken: ein Token mit geringen Berechtigungen und ein weiteres Token mit erhöhten Rechten. Das Token mit erhöhten Rechten wird nur verwendet, wenn die Anwendung explizit unter einem Administratorkonto ausgeführt wird, indem Sie die Option Als Administrator ausführen auswählen. Standardmäßig verwendet SSIS immer das Token mit niedrigen Berechtigungen, was zu einem Fehler führt, wenn eine Verbindung mit einem SQL-Ziel hergestellt wird.
Lösung
Verwenden Sie eine der folgenden Methoden, um das Problem zu umgehen:
Wenn Sie das Paket entweder über SQL Server Management Studio (SSMS) oder Business Intelligence Development Studio (BIDS) oder DTExecUI.exe ausführen, starten Sie diese Tools unter dem Administratorkonto mit erhöhten Rechten. Klicken Sie hierzu auf Start, zeigen Sie auf Alle Programme, zeigen Sie auf SQL Server 2005 oder SQL Server 2008, klicken Sie mit der rechten Maustaste auf das tool, das Sie verwenden, und klicken Sie dann auf Als Administrator ausführen. Dadurch wird die Anwendung mit erhöhten Berechtigungen des integrierten Administratorkontos gestartet, und das Paket wird erfolgreich ausgeführt.
Wenn Sie das Paket mit DTExec.exe starten Sie es auf ähnliche Weise über eine Eingabeaufforderung mit erhöhten Rechten. Sie können die Eingabeaufforderung mit erhöhten Rechten starten, indem Sie auf Start, alle Programme, Zubehör, mit der rechten Maustaste auf Eingabeaufforderung und dann auf Als Administrator ausführen klicken.
Hinweis
Wenn Sie sich nicht als Administrator am Computer anmelden, werden Sie aufgefordert, das Administratorkonto anzugeben. Wenn Sie aufgefordert werden, das Administratorkonto anzugeben, geben Sie den Benutzernamen und das Kennwort des Administrators in das Dialogfeld Benutzerkontensteuerung ein. Klicken Sie dann auf OK.
Ersetzen Sie die SQL Server Zielkomponenten in den Datenflusstasks, die fehlschlagen, durch OLE DB-Zielkomponenten, die auf denselben SQL Server-Verbindungs-Manager verweisen.
Verwenden Sie ein Konto, das nicht Mitglied der lokalen Administratorgruppe ist, nachdem Sie diesem Konto das Benutzerrecht "Globale Objekte erstellen" zugewiesen haben. Gehen Sie dazu wie folgt vor:
- Klicken Sie auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Lokale Sicherheitsrichtlinie.
- Erweitern Sie Lokale Richtlinien, und klicken Sie dann auf Zuweisung von Benutzerrechten.
- Doppelklicken Sie im rechten Bereich auf Globale Objekte erstellen.
- Klicken Sie im Dialogfeld Lokale Sicherheitsrichtlinieneinstellung auf Hinzufügen.
- Klicken Sie im Dialogfeld Benutzer oder Gruppeauswählen auf die Benutzerkonten, die Sie hinzufügen möchten, klicken Sie auf Hinzufügen, und klicken Sie dann auf OK.
- Klicken Sie auf OK.
Hinweis
Wenn Sie ein Konto verwenden, das nicht Mitglied der lokalen Administratorgruppe ist, kommt UAC nicht ins Spiel.