【DM版本】: DM8 1-2-61-21.08.17-145730-10000-ENT
【操作系统】:Windows 10
【CPU】: x64
【问题描述】*:
通过EF Core库调用DbContext.Database.ExecuteSqlRaw
执行语句
truncate table MyTable1;
truncate table MyTable2;
truncate table MyTable3;
truncate table MyTable4;
truncate table MyTable5;
truncate table MyTable6;
truncate table MyTable7;
truncate table MyTable8;
truncate table MyTable9;
会产生异常:
Dm.DmException (0x80004005): 第1 行附近出现错误:
不支持的语句类型
at Dm.DmError.ThrowDmException(DmError err)
at Dm.DmResp.ThrowServerException(DmMsg msg, String charSet, Boolean rwStandby)
at Dm.DmResp.Execute(DmMsg msg, DmStatement stmt, DmConnProperty connProperty)
at Dm.DmCsi.PrepareSql(DmMsg SendMsg, DmMsg RecvMsg, DmStatement stmt, String sql, Boolean direct, Int32 checkFlag)
at Dm.DmStatement.ExecuteUpdate(String sql)
at Dm.DmCommand.do_ExecuteNonQuery()
at Dm.DmCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.ExecuteSqlRaw(DatabaseFacade databaseFacade, String sql, IEnumerable`1 parameters)
at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.ExecuteSqlRaw(DatabaseFacade databaseFacade, String sql, Object[] parameters)
....
但是此语句可在DM管理工具中正常执行。
truncate table
在SQL手册中也有说明是合法的语句。
一个数据库连接句柄只能执行一条truncate 语句,不能多条一起执行,需要分开执行。