I was in the process of installing DNN 4.0.2 and have run into this error. It occurs here during the install process...
Installation Status Report00:00:00.010 - Installing Version: 3.1.0 00:00:00.010 - Installing Script: DotNetNuke.SetUp.SqlDataProvider 00:00:00.190 - Installing Script: DotNetNuke.Schema.SqlDataProvider 00:00:04.005 - Installing Script: DotNetNuke.Data.SqlDataProvider 00:00:07.811 - Installing MemberRole Provider: 00:00:07.811 - Executing InstallCommon.sql 00:00:08.231 - Executing InstallMembership.sql 00:00:08.802 - Executing InstallProfile.sql 00:00:08.952 - Executing InstallRoles.sql 00:00:09.213 - Upgrading to Version: 3.1.1 00:00:10.074 - Upgrading to Version: 3.2.0 00:00:10.144 - Upgrading to Version: 4.0.0 00:00:10.394 - Upgrading to Version: 4.0.1 00:00:10.465 - Upgrading to Version: 4.0.2 00:00:10.485 - Performing General Upgrades
This is not the first time I have installed DNN but I have never run into this error before. I have double checked all of the web.config settings, the connection strings, permissions, etc. Everything looks good.
Reviewing the logs generated by the various scripts that have run, the stored proc GetTabByName definately threw an error. The following is an excerpt from the 03.01.01.log file...
System.Data.SqlClient.SqlException: Invalid column name 'FileID'. Invalid column name 'FileID'. Invalid column name 'TabId'. Invalid column name 'PortalId'. Invalid column name 'PortalId'. 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(TdsParserStateObject stateObj) 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 Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(SqlConnection connection, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions)
CREATE procedure dbo.GetTabByName
@TabName nvarchar(50), @PortalId int
as
select TabID, TabOrder, Tabs.PortalID, TabName, IsVisible, ParentId, [Level], DisableLink, Title, Description, KeyWords, IsDeleted, Url, SkinSrc, ContainerSrc, TabPath, StartDate, EndDate, 'IconFile' = case when Files_1.FileName is null then Tabs.IconFile else Files_1.Folder + Files_1.FileName end, 'HasChildren' = case when exists (select 1 from Tabs T2 where T2.ParentId = Tabs.TabId) then 'true' else 'false' end, RefreshInterval, PageHeadText from Tabs left outer join Files on Tabs.IconFile = 'fileid=' + convert(varchar,Files.FileID) LEFT OUTER JOIN Files Files_1 ON Tabs.IconFile = 'fileid=' + convert(varchar,Files_1.FileID) where TabName = @TabName and ((Tabs.PortalId = @PortalId) or (@PortalId is null AND Tabs.PortalId is null)) order by TabID
After pulling my hair out trying to figure out what was wrong, I noticed that the case used for variables, table and column names is inconsistant. A quick check of the *shared* SQL 2000 install I am using revealed that it is in fact configured with a server collation setting that is case sensitive where my other installations were not .
After dropping the database and recreating it using a non case sensitive collation order, the install completed quickly and completely.
|