0

まず、私は新しいです。私は SQL Server 2008 R2 を使用しています。機能する一括挿入スクリプトがあります。ストアド プロシージャを作成して、storedprocedure.sql. 最終的に.bat、一括挿入を起動するためのファイルが必要です。外部プログラムを実行できる別のプログラムがありますが、またはしか.bat表示されません.exe

だから、ここに私の一括挿入スクリプトがあります:

Bulk Insert MyDatabase.dbo.cust_adj
From 'C:\path\importformat.txt' 
With 
(
   FieldTerminator= '|', 
   Rowterminator= '\n' 
) 
Go

(this works)

次に、ストアド プロシージャを作成しようとしました。

Create Procedure LoadDailyAdjReport
AS
    Bulk Insert MyDatabase.dbo.cust_adj 
    From 'C:\path\importformat.txt' 
    With 
    ( 
       FieldTerminator= '|', 
       Rowterminator= '\n' 
    ) 
Go 

成功したと言われましたが、確認する方法がわかりません。

それで、.batファイルを作成してみました:

@echo off
sqlcmd -S MyServer\MyDataBase -i C:\mypath\Load_Daily_Adjustment.sql

うまくいきません。最初は、.bat 命令だと思っていましたが (おそらく正しくないでしょう)、ストアド プロシージャが正しいかどうか疑問に思いました。問題は、これをトラブルシューティングするのに十分な知識がないことです。誰かがこれがどうあるべきかについてアドバイスや指針を提供してもらえますか?

いつもありがとうございます。

OK、SQL Server では、この .bat ファイルが機能します。

sqlcmd -S MyServerName -E -d MyDatabase -Q "EXEC MyStoredProcedure"

サーバーは、たとえば \Server1\ です。bat ファイルを実行するプログラムは別のサーバーにあります。ファイルは共有されており、ユーザーは SQL、フォルダー、プログラムなどに対してセキュリティを持っています。

プログラムのサーバー上にある .bat ファイルを変更するにはどうすればよいですか?

したがって、Server2 には、Server1 の .bat にアクセスして開くバット ファイルが必要です。そのためには、\Server1\PathName\File.bat のパスを持つように .bat ファイルを変更する必要がありますか?

4

1 に答える 1

0

SP LoadDailyAdjReport を実行する SQL は次のようになりEXEC LoadDailyAdjReportます。したがって、ypur バッチ ファイル SQLCMD でこれを試してください。

sqlcmd -S YourServerName -E -d YourDataBaseName -Q "EXEC LoadDailyAdjReport"

(-E は信頼できる接続 (Windows ログイン) を使用します。詳細については、こちら
http://msdn.microsoft.com/en-us/library/ms162773.aspx )

.txt ファイル名をパラメーターとして渡すことに手を出したい場合は、「
sqlcmd.exe を使用して引数を指定してストアド プロシージャを呼び出すにはどうすればよいですか?」を参照してください。

于 2013-03-29T18:31:52.407 に答える