私は非常に独特な問題を抱えています。VS2010 Server Explorer では、SQL Server に接続してストアド プロシージャを問題なく実行できます。ただし、コードでこれを実行しようとすると、例外がスローされます。
xp_cmdshell プロキシ アカウント情報を取得できないか、無効です。「##xp_cmdshell_proxy_account##」資格情報が存在し、有効な情報が含まれていることを確認してください。
コードで間違った資格情報を使用した可能性がありますが、サーバー エクスプローラーから接続文字列をコピーし、構成ファイルの接続文字列に入れました。それでも、同じエラー。
ストアド プロシージャの接続と呼び出しを行うコードを次に示します。
public static DataSet callStoredProcedure(string procedure, params SqlParameter[] args)
{
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet dataSet = new DataSet();
string connString = ConfigurationManager.ConnectionStrings["App"].ConnectionString;
try
{
using (SqlConnection conn = new SqlConnection(connString))
using (SqlCommand command = conn.CreateCommand())
{
conn.Open();
if (args != null)
{
foreach (SqlParameter param in args) command.Parameters.Add(param);
}
command.CommandText = procedure;
command.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand = command;
adapter.Fill(dataSet, "tabela");
}
}
catch (SqlException exception)
{
throw new Exception("SqlClient exception", exception);
}
return dataSet;
}
サーバー エクスプローラーが使用する接続文字列からコピーされた、接続文字列に関連する構成 XML を次に示します。
<connectionStrings>
<add name="App" connectionString="Data Source=db2.myapp.com,49178\hosting;Initial Catalog=app;User ID=appuser;Password=f00barbaz" providerName="System.Data.SqlClient" />
</connectionStrings>
繰り返しますが、サーバー エクスプローラーはサーバーに接続してストアド プロシージャを実行できますが、私のコードは常に同じ例外をスローします。何が原因でしょうか?
ありがとうございました
編集
明確にするために: サーバー エクスプローラーは、私のコードが使用するのと同じ接続文字列を使用して、ストアド プロシージャに接続して実行することができます。しかし、私のコードは例外をスローします。