SQL Server 2008 - выполнение пакетного задания и массовая вставка в T-SQL - PullRequest
0 голосов
/ 10 марта 2010

Я столкнулся с интересной проблемой и даже не уверен, возможно ли это:

Мне нужно создать хранимую процедуру в SQL Server 2008, которая при выполнении делает следующее:

  1. Выполняет пакетный файл, расположенный на сервере SQL (например, C: \ Mybatchfile.bat). Этот пакетный файл будет выводить один текстовый файл в каталог на сервере SQL (например, C: \ Output \ BatchFileOutput1 .txt).

  2. Массовая вставка содержимого текстового файла в таблицу в моей базе данных.

  3. Удаляет текстовый файл с сервера.

Прежде чем я действительно начну копаться в том, как этого добиться, это вообще возможно?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Вы должны быть в состоянии поместить все это в одну процедуру:

1) для выполнения командного файла используйте: xp_cmdshell (Transact-SQL) . Однако многие считают это угрозой безопасности, и доступ к ней может быть недоступен в базе данных. Вы можете использовать CLR для выполнения командного файла, который будет более безопасным.

2) вы можете использовать утилиту bcp для копирования строк в таблицу.

3) вы будете использовать метод из # 1 для удаления файла. Либо введите команду удаления из xp_cmdshell, что представляет собой угрозу безопасности. Или создайте CLR, где вы передаете имя файла, чтобы удалить файл. Я бы не позволил передать путь в жестком коде, поэтому удаляются только файлы в вашем «специальном» каталоге, а не C: \ и т. Д.

0 голосов
/ 10 марта 2010

В качестве альтернативы вы можете сделать это в пакете служб SSIS, а затем получить задание на выполнение пакета, а не на сохраненный процесс. Или процесс может просто иметь код для выполнения pacakge SSIS.

...