J'ai essayé de lire le contenu du file xml unique dans la machine locale en utilisant l'insertion en bloc.
SELECT * FROM OPENROWSET ( BULK '''+ @FILENAME+''' , SINGLE_CLOB ) AS xmlData
Ça marche, mais c'est la même chose que j'essaie de lire depuis la machine distante. c'est donner l'erreur suivante
Msg 4861, Level 16, State 1, Line 1 Cannot bulk load because the file "Z:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML" could not be opened. Operating system error code 3(The system cannot find the path specified.).
j'ai donné le path de file comme
\\172.16.11.52\D:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
Il donne la même erreur alors, j'ai créé le lecteur de partage réseau pour cette machine distante qui est (z 🙂 donné le path de file comme
Z:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
même erreur 🙁 Aidez-moi à le résoudre?
Le problème ici semble être sur les partages de files, pas sur SQL Server.
Tout d'abord, un mappage de lecteur est par user, donc l'utilisation de lettres de lecteur pose des problèmes lors de l'utilisation de SQL Server, car aucune lettre de lecteur n'est affectée au count de service SQL Server. Pour cette raison, il est préférable d'éviter complètement les lettres de lecteur et d'utiliser simplement les paths UNC.
Ensuite, la forme d'un partage est \\ServerName\Share
. Il semble que le file \\172.16.11.52\D$\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
vous essayez d'accéder se trouve à la racine du lecteur D :, le path correct sera donc \\172.16.11.52\D$\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
. Notez toutefois que D$
est un partage d'administration par défaut et que seuls les administrateurs peuvent l'utiliser. Étant donné que le count de service SQL Server ne dispose pas des droits d'administrateur, vous ne devriez pas l'utiliser de toute façon, et stocker des files à la racine de tout lecteur (en particulier C:
est généralement une mauvaise pratique.
Enfin, même si vous avez un partage, le count que vous utilisez pour accéder au partage doit disposer d'permissions sur le partage et sur le système de files. C'est un avantage pour exécuter SQL Server en utilisant un count de domaine .
En résumé, ce que vous devez probablement faire est ceci:
D:\XMLFiles
(ou ce que vous voulez) \\172.16.11.52\XMLFiles
SELECT * FROM OPENROWSET ( BULK '\\172.16.11.52\XMLFiles\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML' , SINGLE_CLOB ) AS xmlData