0

我有一个存储过程,我试图从 SQL Server 2012 上运行的命令行 vb.net 程序调用它:

CREATE TABLE #ftpData(ftp_Email varchar(150) COLLATE DATABASE_DEFAULT, ftp_Segment varchar(1) COLLATE DATABASE_DEFAULT)
BULK INSERT #ftpData FROM 'C:\Users\Administrator\Documents\tempSegFiles\segmentation_.csv'
WITH(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

当我从管理工作室运行它时,它会成功执行。当我从我的 vb.net 程序调用存储过程时,我得到了错误

无法批量加载,因为无法打开文件“xxx”。操作系统错误代码 5(拒绝访问。)

我登录用来调用存储过程的 SQL 帐户具有更改、执行、插入和管理批量操作的权限。它还对 bulkadmin、diskadmin、public 具有服务器范围的安全权限。

还有其他需要的选项吗?

4

1 回答 1

0

“访问被拒绝”错误表明问题在于访问您尝试批量插入的 CSV 文件。确保执行命令行(和存储过程)的任何帐户也具有读取 CSV 文件的权限。

更新:我看到您正在使用 SQL 登录来运行该过程。请参阅此 MSDN 文章中标题为“安全注意事项”的部分。以机智:

如果用户使用 SQL Server 登录,则使用 SQL Server 进程帐户的安全配置文件。

于 2013-01-24T16:08:15.270 回答