我创建了一个存储过程,其中包含两个参数: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(系统找不到指定的路径。)。
我在具有相同凭据的两台计算机上登录,因此我认为这不是权限问题(无论如何都在用户级别)。非常感谢您对此问题的任何帮助。谢谢。
答案 0 :(得分:1)
当SQL Server必须使用目录时,它使用SQL Server上的目录。您不能将文件放在本地C:驱动器上,然后让SQL Server通过BULK INSERT
导入它。
您需要能够将文件复制到SQL Server,或通过连接到SQL Server并导入数据的本地应用程序(或可能是Web应用程序)提供您自己的导入功能。
或者,您可以让SQL Server访问您的本地计算机,并通过UNC路径导入它,但这容易出现各种错误,更不用说每台PC都必须为此设置和维护。
另外,如果您要让本地计算机上的其他人将数据导入您的SQL数据库,请记住安全性。