如何授予运行BULK INSERT的权限?

Leg*_*end 1 sql-server-2008 windows-server-2008

我在远程计算机上运行SQL Server 2008.我们说这台机器叫做XYZ.以下作品:

  1. 远程桌面到XYZ
  2. 打开SSMS,然后连接到在XYZ上运行的SQL Server
  3. 运行以下命令:

    USE SampleDB
    GO
    
    CREATE TABLE [dbo].[SampleData](
        [ColA] [varchar](50) NULL,
        [ColB] [varchar](500) NULL
    ) ON [PRIMARY]
    
    GO
    
    BULK INSERT [dbo].[SampleData]
    FROM "H:\Scratch\OUTPUT_Sample"
    WITH
    (
        FIELDTERMINATOR = '$',
        ROWTERMINATOR = '\n',
        FIRSTROW = 2
    )
    GO
    
    Run Code Online (Sandbox Code Playgroud)

这完全没问题.现在,我通过执行以下操作连接到另一个SQL Server ABC:

  1. 远程桌面到XYZ
  2. 打开SSMS,然后连接到在ABC上运行的SQL Server
  3. 运行上面的脚本

我收到以下错误:

Msg 4861, Level 16, State 1, Line 2
Cannot bulk load because the file "H:\Scratch\OUTPUT_Scratch" could not be opened. Operating system error code 3(The system cannot find the path specified.).
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何解决这个问题吗?我想我需要为某个帐户提供一些权限,但我不知道如何找到这个,也不知道给予该帐户的权限.我使用时sqlcmd.exe也会遇到同样的错误.

有什么建议?

Leg*_*end 7

看起来我在这里找到了答案.总之,看起来该文件应该与SQL Server在同一台机器上才能工作.要使其查找本地文件,应通过UNC共享或类似方式完成.