Запуск командной строки из хранимой процедуры SQL - PullRequest
1 голос
/ 20 января 2012

Привет, я пытаюсь запустить импорт bcp файла, сгенерированного из другой БД, в мою БД

(не спрашивайте, длинная история, заканчивающаяся тем, что я был отменен).1004 * так что в любом случае у меня есть все константы, которые мне нужно передать в bcpImport, и у меня есть класс, который делает это в C #, но мне нужно делать это по расписанию каждый вечер.и так как я никогда не запускал командную строку из сценариев SQL (только наоборот, запускал сценарии из командной строки), мне было интересно, кто-нибудь может дать мне какие-либо указатели.

MyTable in \"C:\\example\\location\\PartInfo.txt\" -S SQLSERVER2008 -T -f \"example\\location\\FormatFile.xml\"

В интересах полнотыЯ привел пример командной строки, которую хочу запустить

1 Ответ

2 голосов
/ 20 января 2012

Вам нужно XP_cmdshell , но, возможно, сначала должно быть включено .

РЕДАКТИРОВАТЬ:

Поскольку у ОП нет прав администратора,предложения кофе не помогли, может быть, разумно было бы создать задание, которое запускает команду, вплоть до этой ссылки это должно работать правильно.

Идея заключается в создании задания, позволяющего емувыполните команду и затем удалите ее, задание выглядит примерно так:

DECLARE @jobID uniqueidentifier, @cmd varchar(1000) 

SET @cmd = 'the desired shell command'

EXEC msdb.dbo.sp_add_job @job_name = '_JobName', @enabled  = 1, @start_step_id = 1, @owner_login_name='sa', @job_id = @jobID OUTPUT 

EXEC msdb.dbo.sp_add_jobstep @job_id = @jobID, @step_name = 'Description', @step_id = 1, @subsystem = 'CMDEXEC', @command = @cmd

EXEC msdb.dbo.sp_add_jobserver @job_id = @jobID

EXEC msdb.dbo.sp_start_job @job_id = @jobID, @output_flag = 0 

WAITFOR DELAY '000:00:05' -- Give the job a chance to complete

IF EXISTS (SELECT name FROM msdb.dbo.sysjobs WHERE name = '_JobName')
BEGIN
     EXEC msdb.dbo.sp_delete_job @job_name = '_JobName'
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...