クエリを介してデータをプルするスクリプトを作成することはできますが、クエリの結果を.csvファイルにエクスポートしてネットワークストレージの場所に保存する方法を理解するのは非常に困難です。技術面!) bcpコマンドやエクスポートウィザードやsqlcmdを使用してさまざまなことを試しましたが、何も動作しません。また、エクスポートを自動化できるようにしたいです。つまり、このエクスポートを毎週作成/実行するエージェントジョブを実行します。元同僚がこれを設定しましたが、機能させることができませんでした。これを実行すると:
USE [DataInsight]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
BEGIN
sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"
END
ここで、londata01\raisers
はサーバー名、datainsight DBおよびall_emailはテーブルをアドレス指定します。私は得る
実行時の「sqlcmd」付近の構文が正しくありません。
SSMSでSQLCMDModeをオンにしましたが、それでもこのエラーが発生します。
これを試しました:
bcp "select * from datainsight.dbo.All_Email_Addresses" queryout 'C:\Users\scarsen.csv' –c –t , –S londata01\raisers –T
しかし、 'queryout'の近くで誤った構文を取得します。
毎週の出力を自動化したいので、エージェントジョブを使用できるので、SSMS内でエクスポートを作成できる必要があります(私はそう思います)
master..xp_cmdshell
を使用して思い出せないことも試しましたが、セキュリティ設定が有効になっていない(または同様の)設定ではないというメッセージが表示されました
ウィザードを使用してエクスポートをSSISに保存しようとしましたが、パッケージの保存または変更にはランタイムとデータベースを同じバージョンにする必要があるというメッセージが表示されます。
一言で言えば、私の限られた知識で多くのことを試しましたが、誰かが助けることができるかどうか疑問に思いましたか?
bcpはコマンドラインコマンドユーティリティです。T-SQLコマンドとして呼び出すことはできません。ただし、xp_cmdshell
を有効にすると、SQL Serverエージェントジョブ(またはSQL Server Management Studioのクエリウィンドウ)内の次のコードを使用して、コマンドラインから実行できます。
DECLARE @cmd varchar(1000);
SET @cmd = 'sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"';
EXEC sys.xp_cmdshell @cmd;
SQL Server Management Studio(SSMS)のクエリウィンドウを介して実行する次のT-SQLコマンドを使用して、サーバーでxp_cmdshellを有効にできます。
EXEC sys.sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sys.sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
SQL Serverごとに一度だけ有効にする必要があります。上記の変更を元に戻す場合は、次のコマンドを実行します。
EXEC sys.sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
show advanced options
構成設定を元に戻す必要はありません。 xp_cmdshell
のようなものを設定させる以外には、何の関係もありませんまったく。