启用正确的权限以允许 SQL Server 数据库帐户通过存储过程进行大容量插入



我有一个存储过程,我试图从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 的安全配置文件 使用服务器进程帐户。

最新更新