Installing: "invalid object name"

Nov 10, 2012 at 3:55 PM

Hello,

I just tried installing PL 6.0 on a dnn 6.1.5 (no native localization enabled, of course) and got the installation error below. Any idea of what might be wrong?

Thanks

Franco

----------------

StartJob Starting Installation
Info Starting Installation - PageLocalization
Info Starting Installation - Script
Info Begin Sql execution
Info Folder Created - C:\inetpub\vhosts\ttc.lu\httpdocs\DesktopModules\PageLocalization\Providers\DataProviders\SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Executing 05.00.09.SqlDataProvider
Info Start Sql execution: 05.00.09.SqlDataProvider file
Info End Sql execution: 05.00.09.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Executing 05.01.00.SqlDataProvider
Info Start Sql execution: 05.01.00.SqlDataProvider file
Info End Sql execution: 05.01.00.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Executing 05.01.02.SqlDataProvider
Info Start Sql execution: 05.01.02.SqlDataProvider file
Failure SQL Execution resulted in following Exceptions: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: View dnn_ttc.[vw_Apollo_TabLocalization_Tabs] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'[vw_Apollo_TabLocalization_Tabs]') AND OBJECTPROPERTY(id, N'IsView') = 1 ) DROP VIEW [vw_Apollo_TabLocalization_Tabs] System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'vw_Apollo_TabLocalization_Tabs' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: View dnn_ttc.[vw_Apollo_TabLocalization_Tabs] ******/ CREATE VIEW dnn_ttc.[vw_Apollo_TabLocalization_Tabs] AS SELECT ItemID, TabID, TabOrder, PortalID, defaultName, indentedDefName, Locale, TabName, isVisible, ParentId, [Level], IconFile, DisableLink, Title, Description, Keywords, IsDeleted, SkinSrc, ContainerSrc, TabPath, StartDate, EndDate, Url, HasChildren, RefreshInterval, PageHeadText, IsSecure FROM dnn_ttc.fn_Apollo_TabLocalization_Tabs() AS LocalizedTabs
Info End Sql execution: 05.01.02.SqlDataProvider file
Info Finished Sql execution
Failure Installation Failed - Script
Info Installation Failed - PageLocalization
Info Deleted temporary install folder
EndJob Installation Failed
Developer
Nov 11, 2012 at 11:55 AM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
Developer
Nov 11, 2012 at 12:13 PM

Hi Franco,

I found the bug 05.01.02.SqlDataProvider.

It's only present when you use a non default databaseOwner.

I have correct it.

Can you download this patch and confirm me that it correct you problem.

http://www.codeplex.com/Download?ProjectName=pagelocalization&DownloadId=528471

Nov 11, 2012 at 4:59 PM

Hi Sascha,

thank you for the quick reaction, Unfortunately I get this exception:

StartJob Starting Installation
Info Starting Installation - PageLocalization
Info Starting Installation - Script
Info Begin Sql execution
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Executing 05.00.09.SqlDataProvider
Info Start Sql execution: 05.00.09.SqlDataProvider file
Info End Sql execution: 05.00.09.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Executing 05.01.00.SqlDataProvider
Info Start Sql execution: 05.01.00.SqlDataProvider file
Info End Sql execution: 05.01.00.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Executing 05.01.02.SqlDataProvider
Info Start Sql execution: 05.01.02.SqlDataProvider file
Info End Sql execution: 05.01.02.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\05.02.00.SqlDataProvider
Info Executing 05.02.00.SqlDataProvider
Info Start Sql execution: 05.02.00.SqlDataProvider file
Info End Sql execution: 05.02.00.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\05.02.01.SqlDataProvider
Info Executing 05.02.01.SqlDataProvider
Info Start Sql execution: 05.02.01.SqlDataProvider file
Info End Sql execution: 05.02.01.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\05.03.00.SqlDataProvider
Info Executing 05.03.00.SqlDataProvider
Info Start Sql execution: 05.03.00.SqlDataProvider file
Failure SQL Execution resulted in following Exceptions: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationAdd] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationAdd]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationAdd] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationUpdate] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationUpdate]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdate] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationUpdateByTabidAndLocale] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationUpdateByTabidAndLocale]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdateByTabidAndLocale] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationUpdateOrAdd] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationUpdateOrAdd]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdateOrAdd] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationFillDefaults] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationFillDefaults]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationFillDefaults] System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationAdd' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationAdd ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationAdd] @TabID INT , @Locale NVARCHAR(15) , @TabName NVARCHAR(500) , @Title NVARCHAR(500) , @Description NVARCHAR(500) , @Keywords NVARCHAR(500) , @IsVisible BIT , @PageHeadText NVARCHAR(4000) , @CreatedByUserID INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) INSERT INTO dnn_ttc.Apollo_TabLocalization ( TabID , Locale , TabName , Title , Description , Keywords , hideTab , PageHeadText , CreatedByUserID , CreatedOnDate , LastModifiedByUserID , LastModifiedOnDate ) VALUES ( @TabID , @Locale , @TabName , @Title , @Description , @Keywords , ~@IsVisible , @PageHeadText , @CreatedByUserID , GETDATE() , @CreatedByUserID , GETDATE() ) SELECT SCOPE_IDENTITY() System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationUpdate' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationUpdate ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdate] @ItemID INT , @TabID INT , @Locale NVARCHAR(15) , @TabName NVARCHAR(500) , @Title NVARCHAR(500) , @Description NVARCHAR(500) , @Keywords NVARCHAR(500) , @IsVisible BIT , @PageHeadText NVARCHAR(4000) , @LastModifiedByUserID INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) UPDATE dnn_ttc.Apollo_TabLocalization SET TabID = @TabID , Locale = @Locale , TabName = @TabName , Title = @Title , Description = @Description , Keywords = @Keywords , hideTab = ~@IsVisible , PageHeadText = @PageHeadText , LastModifiedByUserID = @LastModifiedByUserID , LastModifiedOnDate = GETDATE() WHERE ItemID = @ItemID System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationUpdateByTabidAndLocale' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationUpdateByTabidAndLocale ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdateByTabidAndLocale] @ItemID INT , @TabID INT , @Locale NVARCHAR(15) , @TabName NVARCHAR(500) , @Title NVARCHAR(500) , @Description NVARCHAR(500) , @Keywords NVARCHAR(500) , @IsVisible BIT , @PageHeadText NVARCHAR(4000) , @LastModifiedByUserID INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) UPDATE dnn_ttc.Apollo_TabLocalization SET TabName = @TabName , Title = @Title , Description = @Description , Keywords = @Keywords , hideTab = ~@IsVisible , PageHeadText = @PageHeadText , LastModifiedByUserID = @LastModifiedByUserID , LastModifiedOnDate = GETDATE() WHERE tabID = @TabID AND locale = @Locale System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationUpdateOrAdd' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationUpdateOrAdd ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationUpdateOrAdd] @ItemID INT , @TabID INT , @Locale NVARCHAR(15) , @TabName NVARCHAR(500) , @Title NVARCHAR(500) , @Description NVARCHAR(500) , @Keywords NVARCHAR(500) , @IsVisible BIT , @PageHeadText NVARCHAR(4000) , @LastModifiedByUserID INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) IF EXISTS ( SELECT itemID FROM dnn_ttc.Apollo_TabLocalization WHERE TabID = @TabID AND Locale = @Locale ) EXEC dnn_ttc.Apollo_TabLocalizationUpdateByTabidAndLocale @ItemID, @TabID, @Locale, @TabName, @Title, @Description, @Keywords, @IsVisible, @PageHeadText, @LastModifiedByUserID ELSE EXEC dnn_ttc.Apollo_TabLocalizationAdd @TabID, @Locale, @TabName, @Title, @Description, @Keywords, @IsVisible, @PageHeadText, @LastModifiedByUserID System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationFillDefaults' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationFillDefaults ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationFillDefaults] @LocalPortalID INT , @LocalCreatedByUserId INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) DECLARE @PortalLocale NVARCHAR(15) DECLARE Locales_Cursor CURSOR FOR SELECT dnn_ttc.Languages.CultureCode FROM dnn_ttc.Languages INNER JOIN dnn_ttc.PortalLanguages ON dnn_ttc.Languages.LanguageID = dnn_ttc.PortalLanguages.LanguageID WHERE (dnn_ttc.PortalLanguages.PortalID = 0) ORDER BY dnn_ttc.Languages.LanguageID OPEN Locales_Cursor FETCH NEXT FROM Locales_Cursor INTO @PortalLocale WHILE @@FETCH_STATUS = 0 BEGIN print 'EXEC dnn_ttc.[Apollo_TabLocalizationFillDefaultsSingle] @Locale = ' + @PortalLocale + ', @PortalID = ' + cast(@LocalPortalID as nvarchar)+ ', @CreatedByUserId = ' + cast(@LocalCreatedByUserId as nvarchar) EXEC dnn_ttc.[Apollo_TabLocalizationFillDefaultsSingle] @Locale = @PortalLocale, @PortalID = @LocalPortalID, @CreatedByUserId = @LocalCreatedByUserId FETCH NEXT FROM Locales_Cursor INTO @PortalLocale END CLOSE Locales_Cursor DEALLOCATE Locales_Cursor EXECUTE dnn_ttc.[Apollo_TabLocalization_UpdateTabPaths] @TabId = NULL, @PortalId = NULL System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationGetTabsToRedirect' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] @Locale NVARCHAR(15) , @PortalID INT , @TabId INT AS BEGIN -- SELECT all tabs, but NOT the current tab (passed in @TabId), AND -- NOT tabs that are already redirecting to somewhere else (in order to prevent redir chaining) SELECT TLT.* FROM dnn_ttc.vw_Apollo_TabLocalization_Tabs AS TLT INNER JOIN dnn_ttc.Tabs T ON TLT.Tabid = T.Tabid WHERE ( Locale = @Locale ) AND ( TLT.portalID = @PortalID ) AND ( NOT EXISTS ( SELECT ItemId FROM dnn_ttc.Apollo_TabLocalization_Redirects AS TR WHERE ( TLT.TabID = SrcTabId ) AND ( TR.SrcLang = @Locale ) ) ) ORDER BY T.TabPath END
Info End Sql execution: 05.03.00.SqlDataProvider file
Info Finished Sql execution
Failure Installation Failed - Script
Info Installation Failed - PageLocalization
Info Deleted temporary install folder
EndJob Installation Failed
Developer
Nov 11, 2012 at 7:55 PM

Hi Franco,

I found the bug 05.03.00.SqlDataProvider.

It's only present when you use a non default databaseOwner.

I have correct it.

Can you download this patch and confirm me that it correct you problem.

 

http://www.codeplex.com/Download?ProjectName=pagelocalization&DownloadId=528605

Nov 11, 2012 at 9:16 PM

There seems to be a similar bug in the 06.00.00 sqldataprovider too:

StartJob Starting Installation
Info Starting Installation - PageLocalization
Info Starting Installation - Script
Info Begin Sql execution
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Executing 05.00.09.SqlDataProvider
Info Start Sql execution: 05.00.09.SqlDataProvider file
Info End Sql execution: 05.00.09.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Executing 05.01.00.SqlDataProvider
Info Start Sql execution: 05.01.00.SqlDataProvider file
Info End Sql execution: 05.01.00.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Executing 05.01.02.SqlDataProvider
Info Start Sql execution: 05.01.02.SqlDataProvider file
Info End Sql execution: 05.01.02.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.02.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.02.00.SqlDataProvider
Info Executing 05.02.00.SqlDataProvider
Info Start Sql execution: 05.02.00.SqlDataProvider file
Info End Sql execution: 05.02.00.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.02.01.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.02.01.SqlDataProvider
Info Executing 05.02.01.SqlDataProvider
Info Start Sql execution: 05.02.01.SqlDataProvider file
Info End Sql execution: 05.02.01.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.03.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.03.00.SqlDataProvider
Info Executing 05.03.00.SqlDataProvider
Info Start Sql execution: 05.03.00.SqlDataProvider file
Info End Sql execution: 05.03.00.SqlDataProvider file
Info Created - Providers\DataProviders\SqlDataProvider\06.00.00.SqlDataProvider
Info Executing 06.00.00.SqlDataProvider
Info Start Sql execution: 06.00.00.SqlDataProvider file
Failure SQL Execution resulted in following Exceptions: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'dnn_ttc.sysobjects'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: StoredProcedure dnn_ttc.[Apollo_TabLocalizationFillDefaults] ******/ IF EXISTS ( SELECT * FROM dnn_ttc.sysobjects WHERE id = OBJECT_ID(N'dnn_ttc.[Apollo_TabLocalizationFillDefaults]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE dnn_ttc.[Apollo_TabLocalizationFillDefaults] System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationFillDefaults' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) /****** Object: Stored Procedure dnn_ttc.Apollo_TabLocalizationFillDefaults ******/ CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationFillDefaults] @LocalPortalID INT , @LocalCreatedByUserId INT AS -- copyright (c) 2011 by Erik van Ballegoij ( erik@apollo-software.nl ) ( http://www.apollo-software.nl ) DECLARE @PortalLocale NVARCHAR(15) DECLARE Locales_Cursor CURSOR FOR SELECT dnn_ttc.Languages.CultureCode FROM dnn_ttc.Languages INNER JOIN dnn_ttc.PortalLanguages ON dnn_ttc.Languages.LanguageID = dnn_ttc.PortalLanguages.LanguageID WHERE (dnn_ttc.PortalLanguages.PortalID = @LocalPortalID) ORDER BY dnn_ttc.Languages.LanguageID OPEN Locales_Cursor FETCH NEXT FROM Locales_Cursor INTO @PortalLocale WHILE @@FETCH_STATUS = 0 BEGIN print 'EXEC dnn_ttc.[Apollo_TabLocalizationFillDefaultsSingle] @Locale = ' + @PortalLocale + ', @PortalID = ' + cast(@LocalPortalID as nvarchar)+ ', @CreatedByUserId = ' + cast(@LocalCreatedByUserId as nvarchar) EXEC dnn_ttc.[Apollo_TabLocalizationFillDefaultsSingle] @Locale = @PortalLocale, @PortalID = @LocalPortalID, @CreatedByUserId = @LocalCreatedByUserId FETCH NEXT FROM Locales_Cursor INTO @PortalLocale END CLOSE Locales_Cursor DEALLOCATE Locales_Cursor EXECUTE dnn_ttc.[Apollo_TabLocalization_UpdateTabPaths] @TabId = NULL, @PortalId = NULL System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Apollo_TabLocalizationGetTabsToRedirect' in the database. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) CREATE PROCEDURE dnn_ttc.[Apollo_TabLocalizationGetTabsToRedirect] @Locale NVARCHAR(15) , @PortalID INT , @TabId INT AS BEGIN -- SELECT all tabs, but NOT the current tab (passed in @TabId), AND -- NOT tabs that are already redirecting to somewhere else (in order to prevent redir chaining) SELECT TLT.* FROM dnn_ttc.vw_Apollo_TabLocalization_Tabs AS TLT INNER JOIN dnn_ttc.Tabs T ON TLT.Tabid = T.Tabid WHERE ( Locale = @Locale ) AND ( TLT.portalID = @PortalID ) AND ( NOT EXISTS ( SELECT ItemId FROM dnn_ttc.Apollo_TabLocalization_Redirects AS TR WHERE ( TLT.TabID = SrcTabId ) AND ( TR.SrcLang = @Locale ) ) ) ORDER BY T.TabOrder END
Info End Sql execution: 06.00.00.SqlDataProvider file
Info Finished Sql execution
Failure Installation Failed - Script
Info Installation Failed - PageLocalization
Info Deleted temporary install folder
EndJob Installation Failed
Developer
Nov 11, 2012 at 9:33 PM

Hi Franco,

It's the last one !

The same problem was in many files.

I found the bug 06.00.00.SqlDataProvider.

It's only present when you use a non default databaseOwner.

I have correct it.

Can you download this patch and confirm me that it correct you problem.

 

http://www.codeplex.com/Download?ProjectName=pagelocalization&DownloadId=528618

Nov 11, 2012 at 9:53 PM

Yeah, well done!

Nov 14, 2012 at 4:37 PM

Franco, sorry for using your discussion, but i think its better to have the same information in the same place.

sachatrauwaen, didn't install page localization, it fails during the intalation process.

I tried your last patch (6.0.1 from the url: http://www.codeplex.com/Download?ProjectName=pagelocalization&DownloadId=528618 ) on DNN 6.2.2 and this is what happen during instalation:

 

StartJob Starting Installation
Info Starting Installation - PageLocalization
Info Starting Installation - Script
Info Begin Sql execution
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.00.09.SqlDataProvider
Info Executing 05.00.09.SqlDataProvider
Info Start Sql execution: 05.00.09.SqlDataProvider file
Info End Sql execution: 05.00.09.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.00.SqlDataProvider
Info Executing 05.01.00.SqlDataProvider
Info Start Sql execution: 05.01.00.SqlDataProvider file
Info End Sql execution: 05.01.00.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.01.02.SqlDataProvider
Info Executing 05.01.02.SqlDataProvider
Info Start Sql execution: 05.01.02.SqlDataProvider file
Info End Sql execution: 05.01.02.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.02.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.02.00.SqlDataProvider
Info Executing 05.02.00.SqlDataProvider
Info Start Sql execution: 05.02.00.SqlDataProvider file
Info End Sql execution: 05.02.00.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.02.01.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.02.01.SqlDataProvider
Info Executing 05.02.01.SqlDataProvider
Info Start Sql execution: 05.02.01.SqlDataProvider file
Info End Sql execution: 05.02.01.SqlDataProvider file
Info Creating backup of previous version - Providers\DataProviders\SqlDataProvider\05.03.00.SqlDataProvider
Info Created - Providers\DataProviders\SqlDataProvider\05.03.00.SqlDataProvider
Info Executing 05.03.00.SqlDataProvider
Info Start Sql execution: 05.03.00.SqlDataProvider file
Failure SQL Execution resulted in following Exceptions: System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'TabPath'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) CREATE PROCEDURE dbo.[Apollo_TabLocalizationGetTabsToRedirect] @Locale NVARCHAR(15) , @PortalID INT , @TabId INT AS BEGIN -- SELECT all tabs, but NOT the current tab (passed in @TabId), AND -- NOT tabs that are already redirecting to somewhere else (in order to prevent redir chaining) SELECT TLT.* FROM dbo.vw_Apollo_TabLocalization_Tabs AS TLT INNER JOIN dbo.Tabs T ON TLT.Tabid = T.Tabid WHERE ( Locale = @Locale ) AND ( TLT.portalID = @PortalID ) AND ( NOT EXISTS ( SELECT ItemId FROM dbo.Apollo_TabLocalization_Redirects AS TR WHERE ( TLT.TabID = SrcTabId ) AND ( TR.SrcLang = @Locale ) ) ) ORDER BY T.TabPath END
Info End Sql execution: 05.03.00.SqlDataProvider file
Info Finished Sql execution
Failure Installation Failed - Script
Info Installation Failed - PageLocalization
Info Deleted temporary install folder
EndJob

Installation Failed

 

 

Thanks in advance

Developer
Nov 15, 2012 at 7:37 AM

Hi Jose,

It seem you miss the column "TabPath" in the "Tabs" table.

It seems the colums is dropped in DNN 6.2.0 and recreated in DNN 6.2.1.

You tell me you are on DNN 6.2.2.

So a can understand why you dont have this column.

Can you maybe double check your DNN version and look if this column is present on your installation ?

Regards,

Sacha

Nov 16, 2012 at 7:48 AM

Hi Sacha,

Sorry, my mistake, i'm runing DNN 06.02.00 (1610).

In that case, how should i proceed?

I would preefer install another page localization version than update my DNN, because i'm afraid that some of my other modules stop working well.

 

Thanks
Regards
Jose

Developer
Nov 16, 2012 at 8:40 AM

Jose,

You have to update to minimum DNN 6.2.1

Regards,

Sacha

Coordinator
Nov 17, 2012 at 9:49 PM

update from 6.2.0 to 6.2.1 is a very minimal one, in fact i would suggest just upgrading to 6.2.5. It would be pretty rare for modules to break because of that upgrade (as there are no real big framework changes).