2009-06-23 18 views
5

Ich versuche, eine Masseneinfügung auf SQL Server auszuführen:SQL Server Bulk Insert Access-Ausgabe

BULK INSERT SampleData FROM '<UNC_Path>' 
WITH (FIELDTERMINATOR = '|', ROWTERMINATOR = '\n') 

Das funktioniert gegen meine lokale Datenbank ausgeführt wird, aber wenn ich versuche, gegen unseren Dev-Server laufen zu lassen, erhalte ich die folgende Fehlermeldung:.

„Can not Massenladen, da die Datei“ ...“konnte nicht geöffnet werden Betriebssystemfehlercode 5 (. Zugriff wird verweigert)

Sowohl mein Konto, und das SQL Service-Konto Zugriff auf den Pfad Mein Netzwerkadministrator arbeitet mit Delegierten, um dies zu erreichen zu arbeiten, aber die Ideen ausgehen. Hat jemand dieses Problem schon einmal gesehen?

Antwort

3

Zitat von Remus Rusanu:

Your client authenticates with SQL Server, then SQL Server impersonates the client and tries to access the UNC path. That is Delegation and is implicitly forbidden. You must take the explicit steps to enable constrained delegation for the SQL Server service account. See this article explaining the details: http://msdn.microsoft.com/en-us/library/ms998355.aspx The article is shows constrained delegation for an ASP service accessing the back end database, but in your case it would be the SQL Server in the middle accessing the back end UNC share.

Als Alternative können Sie auf SQL Server mit SQL-Authentifizierung verbinden. Das würde Sql Server auf Freigaben unter seinem eigenen Konto zugreifen.

Und sind Sie sicher, dass die Masseneinfügung unter dem SQL Server-Konto ausgeführt wird? Wenn es sich um einen Stapeljob handelt, wird dieser wahrscheinlich unter dem Sql-Server-Agent-Konto ausgeführt. Standardmäßig ist das System \ NetworkService. Ändern Sie es in einen Domänenbenutzer mit Zugriff auf die Freigabe.