web-dev-qa-db-fra.com

Insertion en masse via le réseau

Quelqu'un peut-il m'aider?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)

L'erreur montre, impossible d'ouvrir:

Impossible d'insérer en bloc car le fichier '\ SERVERNAME\FOLDERNAME\textFile.txt' n'a pas pu être ouvert. Code d'erreur 5 du système d'exploitation (l'accès est refusé.)

Le chemin se trouve sur un autre ordinateur du réseau.

13

Je vais faire un acte de foi et supposer que vous vous connectez à SQL Server à l'aide de l'authentification Windows. Dans un tel cas, vous avez un double saut Kerberos: un saut est votre application cliente se connectant au SQL Server, un deuxième saut est le SQL Server se connectant au distant \\COMPUTER01. Un tel double saut relève des restrictions de la délégation contrainte et vous finissez par accéder au partage en tant que connexion anonyme et donc accès refusé.

Pour résoudre le problème, vous devez activer la délégation contrainte pour le compte de service SQL Server. Ce blog Comment: Insertion en bloc SQL Server avec délégation contrainte (l'accès est refusé) a un exemple de la façon de le faire, et j'espère vraiment que l'étape sur la façon d'activer la délégation sans contrainte est juste une faute de frappe en tant que délégation sans contrainte est tout simplement mauvais.

Dans le cas où j'ai sauté le pistolet et que vous vous connectez à SQL Server à l'aide de l'authentification SQL, vous devrez créer des informations d'identification pour votre connexion SQL et l'utiliser pour accéder aux ressources réseau. Voir CREATE CREDENTIAL .

14
Remus Rusanu

Sql Server a tenté d'ouvrir le fichier, le serveur de fichiers lui a dit "Accès refusé" car le compte sous lequel SQL Server s'exécute n'a pas l'autorisation d'ouvrir le fichier. Modifiez les paramètres de sécurité du fichier en conséquence et cela fonctionnera.

1
TomTom

Je voudrais exécuter le script sous une connexion SQL (avec l'autorisation bulkadmin) et laisser l'autorisation sur le dossier réseau s'authentifier auprès du compte de service SQL ou du compte de l'agent SQL Server.

1
Cozzaro Nero