2016-10-13 20 views
0

SQL SErver 2008 R2 Expressテーブルの内容をCSVファイルまたはTXTファイルにエクスポートする必要があります。xp_cmdshellなしでCSVにSQL Server 2008 R2テーブルの内容をエクスポート

xp_cmdshellを有効にすることはできません。また、随時分散クエリを許可することもできません。

テーブルのいずれかのトリガーから実行可能である必要があります。

+1

これは、さらに恐ろしいデザインパターンを克服する恐ろしいハックのように聞こえます。 (申し訳ありませんが、私は失礼ではありません)しかし、本当にこの道を踏み出すには、テーブルデータをファイルにエクスポートするpowershellスクリプトを含むジョブステップでSQL Agentジョブを調べることがあります。トリガが 'msdb.dbo.sp_start_job'を呼び出す可能性があります。しかし、真剣に、ゆっくり! – DMason

+0

なぜトリガーにする必要がありますか? @DMasonはそれが正しいIMOを持っています。 – SMM

+0

はい、ソースコードを変更するのが非常に難しい古いシステム(1999年頃)からデータを取得しようとすると、ひどいハックです。 DBは簡単に変更できます。それはまた、SQL Expressを実行している、私は言及を忘れて、申し訳ありませんので、SQLエージェントはありません。私は新しいデータがある場合にのみ抽出を更新したいので、トリガーです。私の他の解決策は、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

関連する問題