siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.66k stars 1.21k forks source link

使用命令行进行升级发现辅助表最多能升级500行,再多就不见了 #694

Open qianmengnet opened 6 years ago

qianmengnet commented 6 years ago

好几个站点,有一些站点内容比较多,单独用的辅助表,最多的一个4008行,但是使用命令行升级之后,恢复到数据库中,最多也才500行,丢失了不少东西。

到底是命令行的限制还是运行时间的问题,或者是其他问题,建议官方检查一下

starlying commented 6 years ago

导入的数据库类型和版本是什么?

qianmengnet commented 6 years ago

sqlserver 2008 r2

qianmengnet commented 6 years ago

刚看到了errerlog,以前没注意。 errorlog里面出现的错误主要有这么几个

{"dateTime":"2018-05-29 08:33:23","detail":"tableName siteserver_AdministratorsInRoles, fileName 1.json","message":"违反了 PRIMARY KEY 约束 'PK_siteserver_AdministratorsInRoles_Id'。不能在对象 'dbo.siteserver_AdministratorsInRoles' 中插入重复键。\r\n语句已终止。","stackTrace":" 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbCommand command) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 738\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbConnection connection, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 954\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(String connectionString, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 795\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertRows(String tableName, String columnNames, List1 valuesList, List1 parameterList) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1746\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertMultiple(String tableName, IEnumerable1 items, List1 tableColumns) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1728\r\n 在 SiteServer.Cli.Commands.RestoreManager.Execute(String[] args)"}

{"dateTime":"2018-05-29 08:33:25","detail":"tableName siteserver_ContentCheck, fileName 2.json","message":"违反了 PRIMARY KEY 约束 'PK_siteserver_ContentCheck_Id'。不能在对象 'dbo.siteserver_ContentCheck' 中插入重复键。\r\n语句已终止。","stackTrace":" 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbCommand command) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 738\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbConnection connection, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 954\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(String connectionString, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 795\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertRows(String tableName, String columnNames, List1 valuesList, List1 parameterList) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1746\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertMultiple(String tableName, IEnumerable1 items, List1 tableColumns) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1720\r\n 在 SiteServer.Cli.Commands.RestoreManager.Execute(String[] args)"}

{"dateTime":"2018-05-29 08:38:03","detail":"tableName siteserver_Tracking, fileName 591.json","message":"违反了 PRIMARY KEY 约束 'PK_siteserver_Tracking_trackingid'。不能在对象 'dbo.siteserver_Tracking' 中插入重复键。\r\n语句已终止。","stackTrace":" 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbCommand command) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 738\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbConnection connection, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 954\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(String connectionString, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 795\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertRows(String tableName, String columnNames, List1 valuesList, List1 parameterList) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1746\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertMultiple(String tableName, IEnumerable1 items, List1 tableColumns) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1720\r\n 在 SiteServer.Cli.Commands.RestoreManager.Execute(String[] args)"}

{"dateTime":"2018-05-29 08:35:16","detail":"tableName model_news, fileName 2.json","message":"违反了 PRIMARY KEY 约束 'PK_modelnews_id'。不能在对象 'dbo.model_news' 中插入重复键。\r\n语句已终止。","stackTrace":" 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)\r\n 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbCommand command) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 738\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(IDbConnection connection, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 954\r\n 在 SiteServer.CMS.Data.DbHelper.ExecuteNonQuery(String connectionString, String commandText, IDataParameter[] commandParameters) 位置 C:\\projects\\cms\\SiteServer.CMS\\Data\\DbHelper.cs:行号 795\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertRows(String tableName, String columnNames, List1 valuesList, List1 parameterList) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1746\r\n 在 SiteServer.CMS.Provider.DatabaseDao.InsertMultiple(String tableName, IEnumerable1 items, List1 tableColumns) 位置 C:\\projects\\cms\\SiteServer.CMS\\Provider\\DatabaseDao.cs:行号 1720\r\n 在 SiteServer.Cli.Commands.RestoreManager.Execute(String[] args)"}

qianmengnet commented 6 years ago

因为数据量比较大,而且部分内容的id可能有重复,特别是siteserver_AdministratorsInRoles这个,以前的id都是null,所以里面有重复。

另外无论出了什么错误,无论什么提示,最终 siteserver_ContentCheck 和其他超出500条的都只保留了500条

starlying commented 6 years ago

sqlserver 2008是有问题,我们正在修复,建议用sqlserver 2012版本,这个我们测试没有问题

qianmengnet commented 6 years ago

安装了sqlserver2012 升级仍然出现这个问题,只能恢复500条数据

starlying commented 6 years ago

可以把备份文件压缩一下发给我们,我们测试看看什么问题导致的,support@siteserver.cn

qianmengnet commented 6 years ago

已经发送

starlying commented 6 years ago

好的,我们查一下