J'ai un fichier texte sur l'ordinateur client et je souhaite le déplacer vers le serveur de base de données (MS SQL 2008) mais je n'ai aucun accès au serveur sauf via le client SQL Server. Puis-je transférer ce fichier sur le serveur à l'aide de la connexion client SQL?Transfert de fichier via une connexion SQL Server
Répondre
Oui, vous pouvez le faire, mais pas par le biais de SQL standard. Vous devrez écrire une procédure stockée étendue qui vous permettra de vous connecter via la connexion client sql et d'accéder au système de fichiers du serveur. Mais vous devrez résoudre beaucoup de problèmes de privilèges d'utilisateur.
Voulez-vous le mettre dans la base de données, ou dans le système de fichiers? Si le premier, envisager un text ou varchar(max).
Si ce dernier, utilisez l'injection SQL et xp_cmdshell selon les besoins. :) En fait, dans ce cas, vous devriez demander à l'administrateur un mécanisme de transfert plus approprié.
est mieux xp_cmdshell puis l'écriture de procédure stockée étendue? – wasim
Si vous souhaitez enregistrer le fichier dans la base de données, cela ne pose aucun problème.
Si vous souhaitez enregistrer dans le système de fichiers, utilisez une procédure stockée CLR marquée EXTERNAL_ACCESS. Vous pouvez passer un paramètre BLOB à la procédure et la procédure peut à son tour écrire le contenu BLOB sur le disque, en utilisant les opérations FileStream ordinaires. Si le fichier est très volumineux, des précautions particulières doivent être prises pour éviter le gonflement de la mémoire.
est la procédure stockée étendue mieux puis en utilisant xp_cmdshell que Mathew a suggéré? – wasim
xp_cmdShell a des limitations d'au plus 8000 caractères alors que vous avez un meilleur contrôle sur la procédure étendue/CLR – WSK
Merci Steve. Ça a l'air cool. Je l'essaie et je vois comment ça marche – wasim