c# - 使用 fluentmigrator 尝试捕获未按预期工作
问题描述
我们正在使用 fluentmigrator 和 sql server 2017。下面的代码抛出异常,但 catch 块没有捕获。
这会引发异常,因为命令 ADD SENSITIVITY CLASSIFICATION 在 sql server 2017 中不可用,它是在 2019 年引入的。
执行类型:IExecuteExpressionRoot
public void AddSensitivityClassificationSql(string schema, string table, string column, string label, string informationType, string rank)
{
try
{
Execute.Sql($@"ADD SENSITIVITY CLASSIFICATION TO [{schema}].[{table}].[{column}] WITH (LABEL = '{label}', INFORMATION_TYPE = '{informationType}', RANK = {rank})");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
因此,程序崩溃。有人可以帮助我了解如何捕获此异常吗?
堆栈跟踪:
错误是“敏感度”附近的语法不正确。
---> System.Data.SqlClient.SqlException (0x80131904): 'SENSITIVITY' 附近的语法不正确。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,操作1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔 callerHasConnectionLock,布尔 asyncClose)在 System.Data.SqlClient.TdsParser。在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串方法名,布尔异步,Int32 超时,布尔异步写入)在 System.Data.SqlClient 的 TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean & dataReady)。 SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at FluentMigrator.Runner.Processors.SqlServer.SqlServerProcessor.ExecuteNonQuery(String sql) ClientConnectionId:83abb1dc-5b23-4065-af3e-52e6f95e09d0 Error Number:102,State:1,Class:15 --- End of inner exception stack trace --- at FluentMigrator.Runner.Processors.SqlServer.SqlServerProcessor.ExecuteNonQuery(String sql) at FluentMigrator.Runner.Processors.SqlServer.SqlServerProcessor.Process(String sql) at FluentMigrator.Runner.Processors.SqlServer.SqlServerProcessor.Execute(String template, Object[] args) at FluentMigrator.Runner.Processors.ProcessorBase.Execute(String sql) at FluentMigrator.Expressions.ExecuteSqlStatementExpression.ExecuteWith(IMigrationProcessor processor) at FluentMigrator.Runner.MigrationRunner.<>c__DisplayClass80_0.<ExecuteExpressions>b__1() at FluentMigrator.Runner.StopWatch.Time(Action action) at FluentMigrator.Runner.MigrationRunner.ExecuteExpressions(ICollection
1 个表达式)在 FluentMigrator.Runner.MigrationRunner.ExecuteMigration(IMigration migration, Action`2 getExpressions) 在 FluentMigrator.Runner.MigrationRunner.ApplyMigrationUp(IMigrationInfo migrationInfo, Boolean useTransaction) 在 FluentMigrator.Runner.MigrationRunner.MigrateUp(Int64 targetVersion, Boolean useAutomaticTransactionManagement)在 FluentMigrator.Runner.MigrationRunner.MigrateUp(Boolean useAutomaticTransactionManagement) 在 FluentMigrator.Runner.MigrationRunner.MigrateUp()
解决方案
推荐阅读
- sql - Google sheets query - I would like to return a column, but if cells in the column are empty return cells in another column instead
- vue.js - Proxy not hitting in Nuxt Axios causing CORS
- angular - 如何在 Angular 8 中停止订阅的路由器事件
- mongodb - 以某种方式对记录进行排序,以便只有与 id 匹配的记录排在第一位?
- ruby - 为什么我的 BMI 计算器总是返回用户输入的体重?
- dart - 如何在 Dart 中创建一个空地图
- google-cloud-platform - 如何通过 Terraform 在 Google Cloud Secret Manager 中创建一个秘密?
- powershell - 由于错误无法运行此命令:访问被拒绝
- python - 如何在不暴露令牌的情况下在 GitHub 和 Heroku 上使用 discord bot 上传相同的存储库
- python - 使用 PyMongo 查询 MongoDB 中嵌入文档的值