2012-05-08 6 views
5

の名前を変更私はtesttemp.txtファイルのSQLサーバー2008:ファイルをコピーし、それを

  1. 検索にTSQLを書く必要があるディレクトリ内のファイル\\myServer\Admin\temp\testtemp.txt

    を持っています。存在する場合は、この

    \\abcd\Admin\temp\Copytesttemp.txt 
    
  2. のような上記のディレクトリにすでにtesttemp.txtがあるかどう

  3. 、そのコピーを作成し、Copytesttemp.txt
  4. に名前を変更し、それを削除して再作成Copytesttemp.txt

どのように達成できますか?ありがとう。

+0

のように移動の名前を変更することができます。私はこの新しいcopytesttemp.txtファイルを一括挿入操作に渡し、後で一括挿入の結果得られたテーブルを照会し、ビューを作成するなどできるようにしたい。 – Nemo

+1

何を試してみましたか?私たちは指針を提供するだけです。 – JonH

+0

http://stackoverflow.com/questions/10486013/sql-server-2008-bulk-insert-taking-foreverへの参照で、私は一括挿入操作にCopytesttemp.txtファイルを渡すことができる必要があります。それ以上の説明が必要かどうかを知ってください。再度、感謝します。 – Nemo

答えて

14

xp_cmdshellを使用して任意のDOSコマンドを実行できます。

declare @cmdstring varchar(1000) 

set @cmdstring = 'copy \\myServer\Admin\temp\testtemp.txt \\myServer\Admin\temp\Copytesttemp.txt' 
exec master..xp_cmdshell @cmdstring 

インストール時にxp_cmdshellが有効になっていることを確認してください。

+0

こんにちはポール、あなたの助けに感謝します。しかし、アクセスが拒否され、0個のファイルがコピーされます。私はチェックし、xp_cmdshellがインストールされている/私のサーバー上で有効になっていることがわかりました。どんな手掛かり? – Nemo

+0

SQL Serverが実行されているアカウントを確認し、そのアカウントが書き込みしようとしている共有ディレクトリを読み書きできることを確認します。 – Paul

+0

Paulに感謝します。それは許可の問題であり、修正されました。私はネットワーク内のリソースにアクセスする許可を与えられました。 – Nemo

3

アクションを実行するコマンドスクリプトを実行するSQLエージェントジョブを作成します。

0

あなたはそのコピーのファイルを、これを試してみて

EXEC master..xp_cmdshell 'COPY D:\T1\a.txt D:\T2\b.txt' 

のみ、これは私のTSQLのごく一部でコピーして、ちょうどCMD

EXEC master..xp_cmdshell 'COPY D:\T1\abcd.txt D:\T2' 
EXEC master..xp_cmdshell 'Move D:\T1\abcd.txt D:\T2' 
関連する問題