7
votes

Quelles autorisations sont nécessaires pour encadrer en vrac dans SQL Server à partir d'un partage réseau avec l'authentification Windows?

Je travaille sur une application qui charge en vrac-charge dans une base de données SQL Server 2008. Il écrit un fichier CSV sur un partage réseau appelle alors une procédure stockée contenant une commande d'insertion en vrac.

Je migre la demande sur ce qui constitue un nouveau réseau. Dans cette nouvelle insertion du monde en vrac échoue avec cette erreur: xxx

i Connectez-vous à la base de données à l'aide de l'authentification Windows, à l'aide du même compte qui a écrit le fichier. Le fichier, et le dossier dans lequel il réside, accorde des droits de lecture et de modification de mon compte d'utilisateur et du compte de service de domaine du serveur de base de données. Ce compte de service a apparemment contraint la délégation autorisée, qui est mentionné sur MSDN . Toujours pas bon. Si je vous connecte à l'aide d'un compte SQL Server, l'insertion de Vulk réussit, mais nous essayons de coller exclusivement à l'authentification Windows.

Est-ce que quelqu'un a une poignée sur ce qui doit être fait pour faire ce travail? Comment SQL Server a-t-il exactement pour accéder à des données sur des actions réseau, sautant entre son compte de service et celui de l'utilisateur connecté? Je sais que je peux insérer en vrac dans une situation similaire dans notre infrastructure actuelle, mais c'est tellement crufty avec l'âge qu'il serait difficile de suivre ce qui a été fait pour permettre cela dans le passé.


0 commentaires

4 Réponses :


1
votes

Avez-vous déjà résolu ce problème? J'ai récemment eu un problème similaire et j'ai découvert que la meilleure façon de résoudre était d'utiliser un login SQL.

Initialement, après avoir lu les notes ici je pensais si je viens de accordé des autorisations de lecture sur le compte Windows avec lequel je me connectais au serveur SQL irait bien, mais même lorsque j'ai accordé un accès en lecture à tout le monde , je n'ai toujours pas pu lire dans le fichier.

Je crois que la raison est à voir avec SQL Server Ignorant l'utilisateur Windows et tenter d'accéder à la part de la SCC, qui est délégation et qui n'est pas autorisée à moins que ce soit explicitement activé. Il y a quelques notes ici qui peut aider. C'est la délégation contrainte dont vous parlez et je ne pouvais pas le faire fonctionner non plus!

Bottom Line: Je viens d'utiliser un identifiant SQL et je suis sûr que le compte de processus SQL Server avait des autorisations de lecture sur la part (en accordant la lecture à tout le monde dans mon cas) et cela a fonctionné.


3 commentaires

J'ai bien peur de ne pas me souvenir exactement de ce qui a été fait et j'ai changé d'emploi depuis juin, il serait donc difficile de suivre. J'ai abandonné et laissé le gourou de l'administrateur SQL local jeter un coup d'œil. IIRC, ce fut un cas d'octroi d'autorisations sur la part du réseau au compte Windows utilisé pour se connecter. Lorsque j'ai vérifié, il est apparu que les autorisations avaient déjà été accordées. Quelque chose de plus devait avoir été fait, cependant. Pardon.


J'ai eu le même problème. J'ai accordé la permission au compte pertinent et cela n'a toujours pas fonctionné. En fin de compte, je devais utiliser une connexion SQL car je ne voulais pas passer des heures et des heures sur quelque chose qui ne semblait pas fonctionner comme annoncé. Je suis content que ce ne soit plus un problème pour vous! ;-)


Bonjour, comment accorder ces autorisations?



5
votes

récemment, nous avons eu cette question pour un certain nombre de Devs. J'ai proposé de nombreuses façons de permettre de tester des inserts en vrac.

Notre préférence était d'utiliser un compte de service SQL. Nous définissons l'agent SQL Server and SQL pour exécuter en tant que compte de service, puis autorisé les Devs à déclencher des travaux d'agent. Le compte de service a été accordé la permission aux actions UNC et tout fonctionnait correctement. Notez que le compte de service va toujours faire fonctionner ces travaux de l'agent (en supposant que les autorisations UNC sont définies). Ce sont les Devs qui tentent de tester cela apparaîtront à ces problèmes. P>

Une autre méthode consiste à créer une action sur le serveur SQL lui-même et pointez le chemin d'insertion en vrac dans le répertoire local. Ces erreurs ne semblent se produire que lors de l'accès des chemins UNC. Peu importe si le chemin UNC a les autorisations correctes pour vous permettre d'accéder. Par exemple, nous créons c: \ test \ code> en tant que dossier sur le serveur SQL lui-même et l'autorisez à permettre à un devise de déposer des fichiers de test. Celles-ci sont ensuite appelées via la commande d'insertion en vrac. P>

Une commande peut être exécutée contre le maître pour permettre une autorisation de groupe de connexion SQL à l'insert en vrac. Ceci est aussi ci-dessous. P>

GRANT ADMINISTER BULK OPERATIONS TO "domain\usergroup"


0 commentaires

1
votes

Pour encadrer en vrac avec les utilisateurs de la publicité, le service SQL SOI doit être exécuté en tant qu'utilisateur de domaine et doit avoir la permission de publicité pour pouvoir déléguer l'authentification. Identique Si vous souhaitez exécuter des serveurs liés avec des utilisateurs publicitaires. Voici le lien pour les serveurs AD et liés, mais la permission est la même.

Serveurs liés et Active Directory


0 commentaires

4
votes

Blog de Adam Saxton (à propos de Kerberos et des inserts en vrac d'une part) doit être lu: http://blogs.msdn.com/b/psssql/archive/2012/09/07/bulk-insert-and-kerberos.aspx . Adam propose deux approches: Activer la délégation contrainte de la machine (par opposition au compte de démarrage SQLSERVR.EXE) ou utilisez une connexion SQL Server. Adam mentionne deux autres approches (qu'il ne recommande pas).

A de côté, la dernière moitié du message de l'OP "(Échec de la récupération de texte de cette erreur. Raison: 15105)" Peut être lié à un compte de démarrage SQL Server qui manque de droits documentés dans "Configurer les comptes de service Windows et autorisations de Server" "Sujet, tel que SeassignPrimaryTokenPrivilegerge.


2 commentaires

Le mec SQL a une bonne rédaction sur la façon de configurer Kerberos pour résoudre ce problème. thesqldude.com/2011/12/30/...


Je pense que la meilleure solution à générer (télécharger) le fichier dans la case SQL réelle effectue l'importation. Cela évite le problème de double hop. De plus, les données ne doivent pas nécessairement aller sur le réseau juste pour être lus pour l'insertion.