Ne peut pas charger en bloc. Système d'exploitation le code d'erreur 5 (Accès refusé.)
Pour quelque étrange raison, je vais avoir des problèmes pour l'exécution d'une instruction bulk insert.
BULK INSERT customer_stg
FROM 'C:\Users\Michael\workspace\pydb\data\andrew.out.txt'
WITH
(
FIRSTROW=0,
FIELDTERMINATOR='\t',
ROWTERMINATOR='\n'
)
Je suis convaincu après la lecture de cette que j'ai configuré mon rôle d'utilisateur correctement, car il est dit...
Les membres du rôle de serveur fixe bulkadmin pouvez exécuter l'instruction BULK INSERT.
J'ai mis le Login Properties
pour l'Authentification Windows correctement (comme on le voit ci-dessous).. à accorder à l'échelle du serveur d'autorisations sur bulkadmin
l'authentification windows http://iforce.co.nz/i/daaqcasj.vo1.png
Et la commande EXEC sp_helpsrvrolemember 'bulkadmin'
me dit que les informations ci-dessus a été un succès, et que l'utilisateur actuel Michael-PC\Michael
a bulkadmin
autorisations.
bulkadmin http://iforce.co.nz/i/bou0uklk.wdj.png
Mais même si j'ai mis tout en place correctement dans la mesure où je sais, je suis encore en train de l'erreur. l'exécution de l'instruction bulk insert directement à partir de SQL Server Management Studio.
Msg 4861, Niveau 16, État 1, Ligne 2
Ne peut pas charger en bloc parce que le fichier "C:\Users\Michael\workspace\pydb\data\andrew.out.txt" ne peut pas être ouvert. Système d'exploitation le code d'erreur 5(Accès refusé.).
qui n'a pas de sens car apparemment bulkadmins
pouvez exécuter l'instruction, dois-je reconfigurer comment le bulkadmin
œuvres? (Je suis perdu). Toutes les idées sur la façon de résoudre ce problème?
- Sonne comme le problème est externe à SQL Server. Vous pouvez ouvrir le fichier dans le bloc-notes?
- Oui je peux l'ouvrir dans le bloc-notes.
- Si le serveur n'est pas local, social.msdn.microsoft.com/Forums/en/transactsql/thread/... pourrait être pertinent
- Nah son serveur local
- pour l'instant, je vais juste essayer de faire une nouvelle installation de SQL Server, comme ça ne fait pas sens logique dans pourquoi je suis limité d'accéder à un fichier.
- Ouais je ne sais pas quoi dire, désolé. Bonne chance!
- Pouvez-vous définir le chemin d'accès au fichier de sorte qu'il est accessible à partir du réseau, dire "Michael-PC\C$\...\Andrew.out.txt" et la transmettre à la ligne de commande?
Vous devez vous connecter pour publier un commentaire.
Cette erreur s'affiche lorsque vous utilisez l'Authentification SQL Server et SQL Server n'est pas autorisé à accéder à l'essentiel de la charge du dossier.
Afin de donner l'accès à SQL server dans le dossier permettra de résoudre le problème.
Voici comment:
Allez dans le dossier clic droit ->propriétés->onglet Sécurité->Edit->Add(sur la nouvelle fenêtre) ->Avancé> Rechercher Maintenant. Sous la liste des utilisateurs dans les résultats de recherche, trouver quelque chose comme SQLServerMSSQLUser$$nom d'utilisateur SQLExpress et cliquez sur ok, pour toutes les boîtes de dialogue ouvertes.
Je ne pense pas que réinstaller SQL Server pour résoudre ce problème, il va juste pour tuer le temps.
Ma conjecture est qu'il n'est pas
Michael-PC\Michael
qui tente d'accéder au fichier, mais plutôt le compte de service SQL Server. Si c'est le cas, alors vous avez au moins trois options (mais probablement d'autres):un. Définir le service SQL Server pour fonctionner comme vous.
b. Accorder le compte de service SQL Server explicite accès à ce dossier.
c. Mettre les fichiers quelque part plus logique sur lequel SQL Server a accès, ou peut être faite de manière à avoir accès (par exemple,
C:\bulk\
).Je suggère ces choses en supposant que c'est un poste de travail local. Il y a certainement des plus graves préoccupations en matière de sécurité autour de système de fichiers local d'accès à partir de SQL Server lorsque nous parlons d'une machine de production, bien sûr, cela peut encore être largement atténué par l'utilisation de
c.
ci - dessus et de donner uniquement le compte de service d'accès aux dossiers que vous voulez être en mesure de toucher.J'ai eu le même problème SSIS 2012 et la solution a été d'utiliser l'Authentification Windows. J'ai été en utilisant l'authentification SQL avec l'utilisateur sa.
Essayer de donner le ou les dossier(s) contenant le CSV et le Format de Fichier des autorisations de lecture pour ‘MSSQLSERVER’ utilisateur (ou ce que l'utilisateur le service SQL Server est configuré pour Connecter en tant Que dans les Services Windows)
SQL
ouMSSQL
dans la liste mais ne peut pas. Je voisMSSQL
estlog on as
"service local" danswindows service
. J'ai ajouté un "service local" à la sécurité et à la correction du problème d'autorisation.parfois, cela peut être un faux message d'erreur, essayé d'ouvrir le fichier avec le même compte qu'il est en cours d'exécution du processus. J'ai eu le même problème dans mon environnement, et quand j'ai ouvert le fichier (avec les mêmes informations d'identification de l'exécution de la procédure), il dit qu'il doit être associé à un programme connu, après j'ai fait ce que j'ai pu l'ouvrir et exécuter le processus sans erreurs.
Assurez-vous que le fichier que vous utilisez (
'C:\Users\Michael\workspace\pydb\data\andrew.out.txt'
) est sur l'ordinateur SQL server et non pas l'ordinateur client exécutant MSSMS.1) Ouvrez SQL
2) Dans le Gestionnaire des Tâches, vous pouvez vérifier le compte en exécutant SQL - il n'est probablement pas Michael-PC\, Michael Jan écrit.
Le compte qui exécute SQL besoin d'accéder au dossier partagé.
J'en suis venu à la même question lorsque j'exécute l'instruction bulk insert dans SSMS, ça fonctionne, mais il a échoué et est revenu avec de l'Opération de "défaillance du système de code 5" lors de la conversion de la tâche dans l'Agent SQL Server.
Après avoir parcouru beaucoup de solutions posté précédemment, cette façon résolu mon problème en accordant le SERVEUR NT/SQLSERVERAGENT avec le "contrôle total" droit d'accès au dossier de la source.
Espérons qu'il serait d'apporter de la lumière à ces gens qui sont encore aux prises avec le message d'erreur.
Dans notre cas, il a fini par être un problème de Kerberos. J'ai suivi les étapes décrites dans cet article pour résoudre le problème: https://techcommunity.microsoft.com/t5/SQL-Server-Support/Bulk-Insert-and-Kerberos/ba-p/317304.
Il descendit à la configuration de la délégation sur le compte d'ordinateur du Serveur SQL où l'instruction BULK INSERT est en cours d'exécution. La machine compte doit être en mesure de déléguer via le "cifs" de service pour le serveur de fichiers où se trouvent les fichiers. Si vous utilisez la délégation contrainte assurez-vous de spécifier "l'Utilisation de tout authenication protocole".
Si DFS est impliqué, vous pouvez exécuter la commande Powershell suivante pour obtenir le nom du serveur de fichiers: