私は、Dapperを介してストアドプロシージャを介してSQLバックアップを実行しようとしています(アプリの残りの部分ではDapperを使用しているため、この部分も実行することをお勧めします)。 CommandTimeoutが起動するまでは正常に機能します。
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}
私が知っている唯一のCommandTimeout設定は、SqlCommandにあります。これをDapper経由で設定する方法はありますか?
はい、Execute関数には複数のバージョンがあります。それらの1つ(または複数)には、commandTimeoutパラメーターが含まれています。
public static int Execute(this IDbConnection cnn, string sql,
dynamic param = null, IDbTransaction transaction = null,
int? commandTimeout = null, CommandType? commandType = null)
SqlMapper.cs から取得
誰でも希望する場合に備えて、受け入れられた回答が追加された元の質問の例。 (タイムアウトは60秒に設定されています):
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandTimeout: 60,
commandType: CommandType.StoredProcedure);
}