2012-06-12 65 views
1

我有一臺SQL Server 2008在遠程機器上運行。讓我們說這臺機器被稱爲XYZ。以下作品:如何授予運行BULK INSERT的權限?

  1. 遠程桌面到XYZ
  2. 打開SSMS,然後連接到SQL Server上的XYZ
  3. 運行
  4. 運行以下命令:

    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 
    

這將運行完全正常。現在,我連接到另一個SQL Server ABC通過執行以下操作:

  1. 遠程桌面到XYZ
  2. 打開SSMS,然後連接到SQL Server上的ABC運行
  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.). 

有人能告訴我如何解決這個問題?我想我需要授予某些帳戶的某些權限,但不知道如何找出該帳戶以及授予該帳戶的權限。當我使用sqlcmd.exe時也會出現同樣的錯誤。

有什麼建議嗎?

+0

我把它存在ABC文件系統上的文件? – Blorgbeard

+0

我對SQL Server生態系統有點新,所以我想這是我的誤解。因此,當我將RDP轉換爲XYZ,然後對ABC執行查詢時,它是否會查找遠程文件系統上的文件?有沒有辦法讓它在本地文件系統上查找文件? – Legend

+0

是的,SQL Server查找它運行的計算機上的文件 - 無論客戶端從哪裏連接。 – Blorgbeard

回答

7

看起來像我找到我的答案here。總之,它看起來像文件應該與SQL Server在同一臺機器上運行。爲了使它看起來本地文件,它應該通過UNC共享或類似的東西來完成。