我正在尝试使用简单的 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:无效使用副作用函数中的运算符“备份数据库”。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 完成,字符串方法名,布尔 sendToPipe,Int32 超时,布尔 asyncWrite)在 System.Data.SqlClient.SqlCommand。 ExecuteNonQuery() 在 UserDefinedFunctions.BackupDb()