ich versuche seit einiger Zeit eine Datei vom Netzlaufwerk per SP zu importieren. Anbei der Bulk Insert:
(#web ist eine temp tabelle)
bulk insert #web
from '\\filesrv\share\test\web.csv'
with
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
leider bekomme ich immer wenn ich das bei mir am PC starte den Fehler:
File could not be opened. Operating system error code 5(error not found)
starte ich das allerdings aus dem Management Studio lokal am SQL als Domänen Admin läuft der Bulk import erfolgreich durch.
Starte ich das aus dem Management Studio lokal auf meinem PC (Connected auf den SQLServer) und starte den Bulk import bekomme ich wieder die Fehlermeldung (als Domänen Admin)
am Netzwerkshare bzw. an den Berechtigungen kann es nicht liegen da es ja vom Server weg funktioniert!
die Frage ist also warum klappt es am Server, aber nicht von meinem PC? ich muss die SP also immer lokal am SQL Server starten damit es durchläuft (Useraccounts sind lokal und am Server ident)
das liegt vermutlich daran, dass der Dienstaccount des SQL Server keine Zugriffsrechte auf den Share hat. In dem Moment, wo du das lokal am Server machst, existiert eine Session zwischen SQL Server und File Server im Kontext deines Admin-Kontos. Machst du das remote, besteht keine solche Session, und dann geht es nur über den Dienstaccount des SQL Server.
das liegt vermutlich daran, dass der Dienstaccount des SQL Server keine Zugriffsrechte auf den Share hat. In dem Moment, wo du das lokal am Server machst, existiert eine Session zwischen SQL Server und File Server im Kontext deines Admin-Kontos. Machst du das remote, besteht keine solche Session, und dann geht es nur über den Dienstaccount des SQL Server.
Gruß, Nils
Hallo Nils
Danke für deine schnelle Antwort. Das habe ich mittlerweile auch ausgeschlossen. Ich habe mich mit dem Dienstaccount interaktiv angemeldet und habe die Datei geöffnet. Da ich ja den UNC Pfad angebe sollte es funktionieren oder?
in solchen Fällen ist es meist am besten, den Importprozess vorzubereiten: Erst Datei lokal kopieren, dann die lokale Kopie importieren. Damit umgehst du auch Netzwerkprobleme während des Imports.
Diese Idee hatte ich auch schon.. Das Problem ist dass die Datei automatisch erzeugt wird und von einem Unix Rechner im Moment nach der Ausgabe die SP angestoßen wird. ich habe also keine Zeit für ein Copy... und das Share auf den SQLServer legen ist auch aus sicherheitstechnischen Aspekten und Gründen unserer Filestruktur nicht möglich, und vor allem nicht gewünscht.
nur wenn ich es schaffe die Datei auch zu kopieren (gleicher Fehler) - sprich den Zugriff bekomme... und wenn ich das habe muss ich sie ja nicht mehr kopieren weil ich dann ja den Zugriff habe den ich brauche...