无法批量加载错误代码3.仅在一台计算机上运行的过程

时间:2016-01-07 20:46:22

标签: sql sql-server bulkinsert

我创建了一个存储过程,其中包含两个参数:1)@tablelocation 2)@tablename。

该过程非常简单 - 它批量导入CSV文件,执行一些修改,然后将其重命名为@tablename参数。请参阅下面的执行脚本:

DECLARE @return_value int

EXEC    @return_value = [dbo].[spLocationTableImport]
        @tablelocation = N'C:\TestFile',
        @tablename = N'TestTable'

SELECT  'Return Value' = @return_value

GO

在一台机器上运行时,我的程序运行正常 - 但是当我尝试从另一台机器运行它时,我收到错误:

  

无法批量加载,因为无法打开文件“C:\ TestFile.csv”。操作系统错误代码3(系统找不到指定的路径。)。

我在具有相同凭据的两台计算机上登录,因此我认为这不是权限问题(无论如何都在用户级别)。非常感谢您对此问题的任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

当SQL Server必须使用目录时,它使用SQL Server上的目录。您不能将文件放在本地C:驱动器上,然后让SQL Server通过BULK INSERT导入它。

您需要能够将文件复制到SQL Server,或通过连接到SQL Server并导入数据的本地应用程序(或可能是Web应用程序)提供您自己的导入功能。

或者,您可以让SQL Server访问您的本地计算机,并通过UNC路径导入它,但这容易出现各种错误,更不用说每台PC都必须为此设置和维护。

另外,如果您要让本地计算机上的其他人将数据导入您的SQL数据库,请记住安全性。