2012-06-12 7 views
1

У меня есть SQL Server 2008, работающий на удаленной машине. Скажем, что машина называется XYZ. Следующие работы:Как предоставить разрешения для запуска BULK INSERT?

  1. Удаленный рабочий стол в XYZ
  2. Open SSMS, а затем подключиться к SQL Server работает на XYZ
  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 
    

Это отлично работает нормально , Теперь, я подключиться к другому ABC SQL Server, выполнив следующие действия:

  1. Удаленный рабочий стол в XYZ
  2. Open 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

Yup, SQL Server ищет файл на компьютере, на котором работает он (SQL Server) - независимо от того, откуда подключен клиент. – Blorgbeard

ответ

7

Похоже, я нашел свой ответ here. Таким образом, похоже, что файл должен находиться на том же компьютере, что и SQL Server, чтобы он работал. Чтобы он искал локальный файл, это должно быть сделано через UNC-ресурс или что-то подобное.