- - PR -
VB.NETでBCPを使ったストアドが返ってこない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-08-19 17:58
初めてスレを書きます。
どなたか分かる方がいればお教え下さい。 環境は、windows XP,SQL SERVER2000,.NET2003です。 VB.NETでストアド・プロシージャを呼び出しています。 そのストアドにはxp_cmdshellを使ってBCPでテキストにコピーしているのですが、 コピー元をグローバル一時テーブルにした際に.NET側でエラーも出ず、タイムアウトに なるまで止まってしまいます。 VB.NET側 'DB接続 Call DB.DbConn(sql_Cn, ServerName, User, Pass) 'ストアドプロシージャにパラメータ出力 Dim cmd As SqlClient.SqlCommand = sql_Cn.CreateCommand sql_Tran = sql_Cn.BeginTransaction() With cmd .CommandTimeout = 600 .CommandText = "SUTOADO" .CommandType = CommandType.StoredProcedure .Parameters.Clear() .Parameters.Add("@HENSUU", SqlDbType.VARCHAR,50) .Parameters("@HENSUU").Value = Hensuu .Transaction = sql_Tran End With 'ストアド実行 cmd.ExecuteNonQuery() ストアドプロシージャ側 CREATE PROCEDURE SUTOADO /*引数宣言*/ @HENSUU varchar(50), AS /*変数宣言*/ declare @cmd varchar(500) declare @status int BEGIN --一時テーブルを作成する select * into ##TABLE_A from TABLE_A where a=@HENSUU --発行するBcpコマンドを文字列で指定 set @cmd = '' set @cmd = @cmd + 'Bcp ##TABLE_A out C:\...\Text.txt -c -t, -r\n -Sservername -Uuser -Ppass 'BCP実行 execute @status=master..xp_cmdshell @cmd End GO クエリアナライザで実行するとうまくいきます。 .NET側で呼び出した際、コピー元が実テーブルでもうまくいきます。 グローバル一時テーブルだとダメなのでしょうか。 また、何かが間違っているのでしょうか。 知っていらっしゃる方、教えて下さい。お願いします。 |
1