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

时间:2012-06-12 04:14:33

标签: 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
    
  4. 这完全没问题。现在,我通过执行以下操作连接到另一个SQL Server ABC:

    1. 远程桌面到XYZ
    2. 打开SSMS,然后连接到在ABC上运行的SQL Server
    3. 运行上面的脚本
    4. 我收到以下错误:

      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.).
      

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

      有什么建议吗?

1 个答案:

答案 0 :(得分:7)

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