如何通过mssql存储过程在远程(网络)机器中读取xml文件的内容
我尝试使用大容量插入在本地机器中读取单个xml文件的内容如何通过mssql存储过程在远程(网络)机器中读取xml文件的内容,sql,sql-server,stored-procedures,sql-server-2008-r2,bulkinsert,Sql,Sql Server,Stored Procedures,Sql Server 2008 R2,Bulkinsert,我尝试使用大容量插入在本地机器中读取单个xml文件的内容 SELECT * FROM OPENROWSET ( BULK '''+ @FILENAME+''' , SINGLE_CLOB ) AS xmlData 它正在工作,但我正试图从远程机器读取相同的内容。它给出了以下错误 Msg 4861, Level 16, State 1, Line 1 Cannot bulk load because the file "Z:\TechnicalLoss_EnergyAccounting_10.1
SELECT * FROM OPENROWSET ( BULK '''+ @FILENAME+''' , SINGLE_CLOB ) AS xmlData
它正在工作,但我正试图从远程机器读取相同的内容。它给出了以下错误
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.).
我将文件路径指定为
\\172.16.11.52\D:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
它给出了相同的错误,然后,我为远程机器创建了网络共享驱动器,该驱动器(z:)的文件路径如下
Z:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML
相同错误:-(请帮助我解决此问题?此处的问题似乎与文件共享有关,而不是与SQL Server有关 首先,驱动器映射是针对每个用户的,因此在使用SQL Server时使用驱动器号会导致问题,因为SQL Server服务帐户没有任何驱动器号映射。因此,最好完全避免使用驱动器号,而只使用UNC路径 接下来,共享的形式是
\\ServerName\share
。看起来您试图访问的文件位于D:drive的根目录中,因此正确的路径应该是\\172.16.11.52\D$\TechnicalLoss\u EnergyAccounting\u 10.10.2012.12.19.PM.XML
。但是,请注意D$
是一个文件,只有管理员才能使用它希望服务器服务帐户没有管理员权限,您无论如何都不应该使用它,而将文件存储在任何驱动器的根目录中(尤其是C:
)通常是一种不好的做法
最后,即使您拥有共享,您用来访问共享的帐户也需要在共享和文件系统上都具有权限
总之,您可能需要做的是:
D:\XMLFiles
(或您喜欢的任何名称)\\172.16.11.52\XMLFiles
从OPENROWSET(批量'\\172.16.11.52\XMLFiles\TechnicalLoss\u EnergyAccounting\u 10.10.2012.12.19.PM.XML',单个\u CLOB)中选择*作为xmlData