1

从 csv 测试文件批量上传

"\servername\wwwroot\Upload\LDSAgentsMap.txt"

     SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[sp_CSVTest_BulkInsert] ( @Path NVARCHAR(128) )
AS 
    DECLARE @Sql NVARCHAR(256)
    SET @Sql = 'BULK
INSERT CSVTest 
FROM ''' + @Path + ''' WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
--PRINT @Sql
EXEC(@Sql)

GO

路径是“\servername\wwwroot\Upload\LDSAgentsMap.txt”

笔记

这是共享主机和数据库用户具有 blukadmin 和公共服务角色

4

2 回答 2

2

当运行 SQL 的 Windows 用户帐户(例如 SqlServerAccount)没有访问共享文件(\servername\wwwroot\Upload\LDSAgentsMap.txt)的权限时,就会发生这种情况。

我们解决此问题的一种方法是转到共享文件所在的机器。在该机器上,添加一个 Windows 用户帐户,其用户名和密码与运行 SQL 的帐户相同。

例如,

如果您的数据库位于 MyDatabaseServer 上,并在密码为 Foo 的 Windows 用户帐户 SqlServerAccount 下运行,则转到您的共享文件所在的计算机,例如 MyFileServer,并创建一个名为 SqlServerAccount 的 Windows 用户帐户,密码为 Foo。

最后一步:进入 MyFileServer 上的文件夹共享并进入该文件夹的共享属性。(在Win7上,右键单击文件夹->属性->共享->高级共享)。然后为您创建的 SqlServerAccount 添加读取权限。

于 2011-02-17T18:31:19.423 回答
1

尝试执行执行批量插入的存储过程时,我从 SSIS 收到此错误。

我通过将 SQL Server 端口号添加到 SSIS 中的连接字符串来修复它,强制 SSIS 通过 TCP/IP 而不是命名管道访问 SQL Server。

于 2012-04-02T16:42:23.407 回答