2016-10-13 3 views
0

Мне нужно экспортировать содержимое таблицы SQL SErver 2008 R2 Express в файл CSV или TXT.Экспорт содержимого таблицы SQL Server 2008 R2 в CSV БЕЗ xp_cmdshell

Я не могу включить xp_cmdshell, а также не разрешать распределенные запросы ad hoc.

Он должен быть выполнен с триггера на одной из таблиц.

+1

Это звучит как ужасный хак, чтобы преодолеть еще более ужасный дизайн. (Извините, я не хочу быть грубым.) Но если вы действительно хотите пойти по этому пути, вы можете изучить задание агента SQL с шагом задания, содержащим скрипт powershell для экспорта данных таблицы в файл. Триггер может вызывать 'msdb.dbo.sp_start_job'. Но серьезно, да! – DMason

+0

Зачем это нужно для запуска? @DMason имеет право ИМО. – SMM

+0

Да, это ужасный взлом, чтобы попытаться получить данные из устаревшей системы (около 1999 года), где исходный код будет чрезвычайно трудно модифицировать. БД можно легко модифицировать. Это также работает SQL Express, извините, что я забыл упомянуть, поэтому никакого агента SQL. Я только хочу, чтобы экстракт был обновлен, если появились новые данные, таким образом, триггер. Мое другое решение - Task Scheduler с PS-сценарием, но, похоже, глупо продолжать его, когда обновления не могут быть. Экстракт нужно создавать только при появлении новых данных. Экстракт подбирается и переносится в другую систему для отчетности. – Maa421s

ответ

0
USE master; 
GO 
EXEC sp_configure 'show advanced option', '1'; 
RECONFIGURE; 
EXEC sp_configure; 
EXEC sp_configure 'Ad Hoc Distributed Queries', '1'; 
RECONFIGURE; 
EXEC sp_configure; 

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
         'Text;Database=C:\Temp\;HDR=Yes;', 
         'SELECT * FROM test.csv') 
      (object_id, name) 

SELECT 'object_id', 'name' 

UNION ALL 

SELECT object_id, name 
FROM sys.tables 

--This require csv file to be there at location 

Следуйте за этим Link, если у вас возникли проблемы при вставке.

После использования вы используете тот же скрипт в триггере.

+0

Извините, как указано в моем сообщении, я не могу включить «специальные распределенные запросы». Я предполагаю, что это не сработает иначе. Спасибо хоть – Maa421s