Ich versuche, eine gespeicherte Prozedur als SQL Server-Agent-Job einzurichten, und es wird mir folgender Fehler angezeigt:
Massenladen nicht möglich, da die Datei "P:\file.csv" nicht geöffnet werden konnte. Betriebssystemfehlercode 3 (Text konnte für diesen Fehler nicht abgerufen werden. Grund: 15105). [SQLSTATE 42000] (Fehler 4861)
Lustig ist, dass die gespeicherte Prozedur gut funktioniert, wenn ich sie manuell ausführe.
Das Laufwerk P: ist ein gemeinsam genutztes Laufwerk unter Windows SQL Server von LINUX über Samba Share. Es wurde mit dem folgenden Befehl eingerichtet:
EXEC xp_cmdshell 'Net Use P: "\ lnxusanfsd01\Data" Passwort/Benutzer: Benutzername/Persistent: Ja'
Jede Hilfe zu diesem Thema wäre sehr dankbar
Ich weiß nicht, ob Sie dieses Problem gelöst haben, aber ich hatte das gleiche Problem. Wenn die Instanz lokal ist, müssen Sie die Berechtigung für den Zugriff auf die Datei überprüfen. Wenn Sie jedoch von Ihrem Computer aus auf einen Server zugreifen (Remote-Zugriff), müssen Sie die Option angeben Pfad im Server, das heißt, die Datei in ein Serververzeichnis aufnehmen, das meinen Fall gelöst hat
beispiel:
BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
);
Um dies einfach zu halten, änderte I einfach das Verzeichnis, aus dem ich die Daten importierte, in einen lokalen Ordner auf dem Server.
Ich hatte die Datei in einem freigegebenen Ordner gespeichert. Ich habe meine Dateien gerade in "c:\TEMP\Reports" auf meinem Server kopiert (die Abfrage wurde aus dem neuen Ordner in BULK INSERT aktualisiert). Die Agent-Aufgabe wurde erfolgreich abgeschlossen :)
Endlich kann ich nach längerer Zeit automatisch mit einem Agentenauftrag BULK einlegen.
Freundliche Grüße.
Ich habe dieses Problem gelöst,
melden Sie sich beim Server-Computer an, auf dem SQL Server installiert ist. Datei auf dem Server-Computer und führen Sie Ihre Abfrage aus. Es wird die .__ eingefügt. Aufzeichnungen.
Wenn Sie ein Datatyp-Kompatibilitätsproblem angeben, ändern Sie den Datentyp für diese Spalte
Ich würde vorschlagen, dass das Laufwerk P: nicht für das Konto zugeordnet ist, als dessen SQL Server gestartet wurde.
Es handelt sich wahrscheinlich um ein Problem mit Berechtigungen, Sie müssen jedoch unbedingt folgende Schritte zur Problembehandlung ausführen:
sa
ausgeführt wird, und fügen Sie vor und nach den Befehlen Net Use
und Net Use /delete
hinzuDenken Sie daran, Änderungen rückgängig zu machen (insbesondere als sa
). Wenn nichts anderes funktioniert, können Sie versuchen, die Massenlast in eine geplante Aufgabe zu ändern, die auf dem Datenbankserver oder einem anderen Server ausgeführt wird, auf dem bcp installiert ist.
Verwenden der SQL-Verbindung über die Windows-Authentifizierung: Ein "Kerberos-Double-Hop" findet statt: Ein Hop ist Ihre Clientanwendung, die eine Verbindung zum SQL-Server herstellt, ein zweiter Hop ist der SQL-Server, der eine Verbindung zum entfernten "\\ NETWORK_MACHINE \" herstellt. Ein solcher Double-Hop unterliegt den Einschränkungen der eingeschränkten Delegierung, und Sie greifen auf die Freigabe als anonyme Anmeldung und somit auf die Zugriffsverweigerung zu.
Um das Problem zu beheben, müssen Sie die eingeschränkte Delegierung für das SQL Server-Dienstkonto aktivieren. Siehe hier für einen guten Beitrag, der es recht gut erklärt
SQL Server mit SQL-Authentifizierung Sie müssen einen Berechtigungsnachweis für Ihre SQL-Anmeldung erstellen und diesen verwenden, um auf diese bestimmte Netzwerkressource zuzugreifen. Siehe hier