Fragensteller
Openrowset Bulk Load aus Freigabe

Allgemeine Diskussion
-
Tach zusammen,
Ich bin aktuell dabei ein Export/Import Konstrukt inklusive Openrowset aus einem Verzeichnis in ein anderes zu verschieben und bin auf ein merkwürdiges Verhalten gestoßen. Ich nutze Openrowset um JSON Files auszulesen und in den SQL Server (2016) zu schieben.
Nun lagen die ganzen Files alle auf unterschiedlichen Systemen in der Freigabe "Test". Ich habe eine neue Freigabe eingerichtet (PROD) und die Berechtigungen gleichgezogen (Sowohl File als auch Freigabe). Anschließend ein Kopie der Files abgelegt und die Pfade angepasst. Kurzum: Tut nicht. Nach 1,5 Tagen Analyse bin ich soweit das mir das SQL Script den Fehler ausweist das er die Datei nicht finden kann. Ich habe daraufhin den Zugriff mit dem Benutzerkonto des SQL Servers getestet (ist ein AD Konto) und der Zugriff auf die UNC Pfade funktioniert und die Datei ist vorhanden bzw. sichtbar. Ich habe dann Testweise mal in der Freigabe "Test" ein Subfolder angelegt (Berechtigung vererbt) und die Inhalte verschoben. Aber auch da selbiges Phänomen obwohl die Pfade und die Berechtigungen korrekt gesetzt sind.
In meinem Verständnis des KB Artikels muss der SQL Server Account Zugriff auf das Verzeichnis haben. Das hat er und trotzdem laufe ich auf den Fehler.
Irgendwelche Tips?
Gruss
Timo
- Typ geändert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 24. August 2017 10:23 Warten auf Rückmeldung
Alle Antworten
-
Wenn es sich um eine Netzwerkressource (UNC-Pfad) handelt, muss die Anmeldung an den Server erfolgen.
Dein SQL-Server hat zwar die Berechtigungen allerdings macht der keine Server-Anmeldung für den UNC-Zugriff.
Das funktioniert nur dann, wenn du im Vordergrund (also Dialog) bereits für den Zugriff auf die Pfade angemeldet bist.
Ggf. musst du auf Laufwerke gehen und per Script einen "net use " mit Anmeldeinformationen bereitstellen oder die benötigten Ressourcen lokal zur Verfügung stellen.Eine Berechtigung kann grundsätzlich nur geprüft werden, wenn auch eine Anmeldung unter dem ausführenden User am Zielserver erfolgt. Ggf. kannst du das ja auch irgendwie per Script durchführen.
- Bearbeitet Der Suchende Dienstag, 8. August 2017 06:27
-
Hintergrund ist hier, dass es 2 Arten der Ausführung gibt:
a) Aufruf als angemeldeter User in deiner Domäne
b) als Batchprocess im SQL-Server oder Task-Scheduler (Aufgabenplanung)Immer dann, wenn man in einer unbeaufsichtigten Anmeldung mit einem anderen User als dem benötigten etwas ausführen lassen will, benötigt man beim Zugriff auf Netzressourcen die Anmeldung am dortigen Server.
UNC ist zwar gut und schön, aber wer macht die Anmeldung?
Wenn du im Dialog das erste mal auf eine Netzressource zugreifst erfolgt
a) eine automatische Anmeldung mit dem aktuellen User (implizit), falls der User auf dem Server registriert ist
b) ein Popup-Fenster mit der Möglichkeit sich anzumelden
Nun, b) ist im Batch einfach nicht möglich, denn da ist ja keiner und Hintergrundsitzungen haben keine sichtbaren Fenster.PS:
Zu a) sei noch zu erwähnen, dass dies inzwischen auch nicht immer funktioniert.
Bei mir habe ich bei Laufwerkszuordnungen mit automatischer Anmeldung immer ein rotes X.
Versuche ichper Script/Programm darauf zuzugreifen funktioniert dies so lange nicht, bis ich per Dialog (Explorer) wenigstens 1x auf das Laufwerk geklickt habe.
Bestimmt gibt es dafür wieder eine neue Group-Policity, die dies so erzwingt und wieder abgeschaltet werden muss.- Bearbeitet Der Suchende Dienstag, 8. August 2017 11:26