我正在尝试使用简单的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”。
系统数据.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完成,String methodName,布尔sendToPipe,Int32超时,布尔asyncWrite)
位于System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
位于UserDefinedFunctions.BackupDb()