ローカル マシン (SQL インスタンスを実行している同じマシン) のディレクトリにファイルをドロップしようとしています。ドロップアウトしようとしているテーブルの内容は xml 形式です。
すなわち。テーブル = xmlOutFiles、フィールド名 = xmlContent; fieldName には、本質的に、必要な xml ファイルになる varchar(max) データが含まれています。
bcp コマンドが実行されると、@dest の場所にサイズ = 0 バイトのファイルが作成され、SMSS 内から実行されているプロセスがそこに座って何かを待っているように見えます!
タスクマネージャーを使用してプロセス「bcp.exe」を強制終了しない限り、その空のファイルを削除するなど、何もできません。
bcp フラグなどの複数の組み合わせを試しました。
システム プロンプトから bcp コマンドを実行すると、「@vars」が機能するように見えますが、SQL トリガー スクリプトと関数の一部にする必要があります。
よろしくお願いします!!!!
Select @dest = (Select filename from xmlOutfiles)
Select @cmd = 'bcp "Select xmlContent from ProcureToPay.dbo.XmlOutFiles" queryout '+@dest+' -x -w -T -S' + @@servername
Exec xp_cmdshell @cmd
-T および -Uusername -Ppassword パラメーターなどを指定して実行してみました。
このコマンドは、DOS プロンプトから機能します。
bcp "Select xmlContent from Procure.To.Pay.dbo.XmlOutFiles" queryout c:\temp\test.xml -x -w -T S<myservernameHere>