我有一个存储过程,我试图从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:UsersAdministratorDocumentstempSegFilessegmentation_.csv'
WITH(
FIELDTERMINATOR = ',',
ROWTERMINATOR = 'n'
)
当我从管理工作室运行它时,它成功执行。当我从 vb.net 程序调用存储过程时,出现错误
无法批量加载,因为无法打开文件"xxx"。操作系统错误代码 5(访问被拒绝。
我登录以调用存储过程的 SQL 帐户具有更改、执行、插入和管理批量操作的权限。它还具有对批量管理、磁盘管理、公共的服务器范围的安全权限。
还有其他需要的选项吗?
"访问被拒绝"错误表示问题出在您尝试批量插入的 CSV 文件时。确保执行命令行(和存储过程)的任何帐户也有权读取 CSV 文件。
更新:我看到您正在使用SQL登录来运行该过程。请参阅此 MSDN 文章中标题为"安全注意事项"的部分。即:
如果用户使用 SQL Server 登录名,则 SQL 的安全配置文件 使用服务器进程帐户。