シンプルなCLR関数を使用してSQLデータベースをバックアップしようとしています。
[SqlFunction(DataAccess = DataAccessKind.Read)]
public static int BackupDb()
{
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
var cmd = new SqlCommand(
@"backup database MyDatabase to disk='d:\temp\MyDatabase.bak' WITH INIT, STATS=10", conn);
cmd.ExecuteNonQuery();
}
return 0;
}
ただし、このコードでは例外メッセージ 6522、レベル 16、状態 1、行 1 が発生します ユーザー定義ルーチンまたは集計 "BackupDb" の実行中に .NET Framework エラーが発生しました: System.Data.SqlClient.SqlException: 副作用の無効な使用関数内の演算子「BACKUP DATABASE」。System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlConnection.OnError (SqlException 例外、ブール型 breakConnection、アクション1 wrapCloseInAction)
at System.Data.SqlClient.SqlCommand.RunExecuteNonQuerySmi(Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 完了、文字列 methodName、ブール型 sendToPipe、Int32 タイムアウト、ブール型 asyncWrite) で System.Data.SqlClient.SqlCommand で。 UserDefinedFunctions.BackupDb() の ExecuteNonQuery()