Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过mssql存储过程在远程(网络)机器中读取xml文件的内容_Sql_Sql Server_Stored Procedures_Sql Server 2008 R2_Bulkinsert - Fatal编程技术网

如何通过mssql存储过程在远程(网络)机器中读取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

我尝试使用大容量插入在本地机器中读取单个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.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:
)通常是一种不好的做法

最后,即使您拥有共享,您用来访问共享的帐户也需要在共享和文件系统上都具有权限

总之,您可能需要做的是:

  • 如果还没有,请使用域帐户运行SQL Server(请参阅上面的链接)
  • 为您的文件创建一个文件夹,称之为
    D:\XMLFiles
    (或您喜欢的任何名称)
  • 共享文件夹,现在您有了一个名为
    \\172.16.11.52\XMLFiles
  • 确保SQL Server服务帐户具有从共享中读取的权限
  • 请重试您的代码:
  • 从OPENROWSET(批量'\\172.16.11.52\XMLFiles\TechnicalLoss\u EnergyAccounting\u 10.10.2012.12.19.PM.XML',单个\u CLOB)中选择*作为xmlData