Pour des raisons étranges, j'ai des problèmes pour exécuter une insertion en bloc.
BULK INSERT customer_stg
FROM 'C:\Users\Michael\workspace\pydb\data\andrew.out.txt'
WITH
(
FIRSTROW=0,
FIELDTERMINATOR='\t',
ROWTERMINATOR='\n'
)
Je suis convaincu qu'après avoir lu ceci que j'ai correctement configuré mon rôle d'utilisateur, car il est indiqué ...
Les membres du rôle serveur fixe bulkadmin peuvent exécuter l'instruction BULK INSERT.
J'ai défini le Login Properties
pour l'authentification Windows correctement (comme indiqué ci-dessous) .. pour accorder des autorisations sur l'ensemble du serveur sur bulkadmin
authentification Windows http://iforce.co.nz/i/daaqcasj.vo1.png
Et la commande EXEC sp_helpsrvrolemember 'bulkadmin'
m'indique que les informations ci-dessus ont abouti et que l'utilisateur actuel Michael-PC\Michael
dispose des autorisations bulkadmin
.
bulkadmin http://iforce.co.nz/i/bou0uklk.wdj.png
Mais même si j'ai tout configuré correctement, autant que je sache, je reçois toujours l'erreur. l'exécution de l'insertion en bloc directement à partir de SQL Server Management Studio.
Msg 4861, niveau 16, état 1, ligne 2
Chargement en bloc impossible car le fichier "C:\Utilisateurs\Michael\espace de travail\pydb\data\andrew.out.txt" n'a pas pu être ouvert. Code d'erreur du système d'exploitation 5 (Accès refusé.).
ce qui n'a pas de sens parce qu'apparemment bulkadmins
peut exécuter l'instruction, dois-je reconfigurer le fonctionnement de bulkadmin
? (Je suis tellement perdu). Des idées sur la façon de résoudre ce problème?
Cette erreur apparaît lorsque vous utilisez l'authentification SQL Server et que SQL Server n'est pas autorisé à accéder au dossier de chargement en bloc.
Donc, donner l’accès du serveur SQL au dossier résoudra le problème .
Voici comment procéder: Accédez au dossier clic droit -> propriétés -> onglet Sécurité -> Edition -> Ajouter (dans la nouvelle fenêtre) -> Avancé -> Rechercher maintenant. Sous la liste des utilisateurs dans les résultats de la recherche, recherchez quelque chose comme SQLServerMSSQLUser $ UserName $ SQLExpress et cliquez sur ok pour accéder à toutes les boîtes de dialogue ouvertes.
Je ne pense pas que la réinstallation de SQL Server va résoudre ce problème, cela va juste faire perdre un peu de temps.
Mon hypothèse est que ce n'est pas Michael-PC\Michael
qui tente d'accéder au fichier, mais plutôt le compte de service SQL Server. Si tel est le cas, vous avez au moins trois options (mais probablement d'autres):
une. Définissez le service SQL Server pour s'exécuter en tant que vous .
b. Accordez au compte de service SQL Server un accès explicite à ce dossier .
c. Placez les fichiers dans un endroit plus logique où SQL Server a accès ou peut être configuré pour y avoir accès (par exemple, C:\bulk\
).
Je suggère ces choses en supposant qu'il s'agit d'un poste de travail local contenu. Lorsqu’il s’agit d’une machine de production, l’accès au système de fichiers local à partir de SQL Server pose assurément des problèmes de sécurité plus graves. Bien entendu, cela peut encore être largement atténué par l’utilisation de c.
ci-dessus - et en ne donnant au compte de service qu’un accès aux dossiers souhaités être capable de toucher.
Essayez de donner aux dossiers contenant les autorisations de lecture CSV et Format de fichier pour l’utilisateur ‘MSSQLSERVER’ (ou l’utilisateur quelconque, le service SQL Server est défini sur Log On As in Windows Services )
parfois, cela peut être un message d'erreur fictif, essayé d'ouvrir le fichier avec le même compte qu'il exécute le processus. J'avais le même problème dans mon environnement et quand j'ai ouvert le fichier (avec les mêmes informations d'identification exécutant le processus), il a été ajouté qu'il devait être associé à un programme connu. processus sans aucune erreur.
J'ai eu le même problème SSIS 2012 et la solution consistait à utiliser l'authentification Windows. J'utilisais l'authentification SQL avec l'utilisateur sa.
1) Ouvrez SQL 2) Dans le Gestionnaire des tâches, vous pouvez vérifier quel compte exécute le code SQL - ce n’est probablement pas Michael-PC\Michael comme l’a écrit Jan.
Le compte qui exécute SQL doit avoir accès au dossier partagé.
Assurez-vous que le fichier que vous utilisez ('C:\Users\Michael\workspace\pydb\data\andrew.out.txt'
) se trouve sur la machine serveur SQL et non sur la machine cliente exécutant MSSMS.
Je suis arrivé à une question similaire lorsque j'exécute l'insertion en bloc dans SSMS, mais cela a échoué et renvoyé avec "Code d'incident du système d'exploitation 5" lors de la conversion de la tâche en agent SQL Server.
Après avoir parcouru de nombreuses solutions déjà publiées, cette solution a résolu mon problème en accordant à NT SERVER/SQLSERVERAGENT le droit de "contrôle total" sur le dossier source . J'espère que cela éclairera un peu la lumière sur ces personnes qui luttent encore avec ce problème. le message d'erreur.