Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
azamsharp
Posting Yak Master
201 Posts |
Posted - 2008-05-28 : 16:21:19
|
I am getting the following error: Cannot resolve collation conflict for equal to operation.I just posted my database from one machine to another by restoring the backup on the new machine. Now, on the new machine whenever I try to perform certain action I get the following error: Cannot resolve collation conflict for equal to operation.I have checked at string fields and they are all database default.Mohammad Azam www.azamsharp.net |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-05-28 : 16:23:44
|
Could you post the query and the collation settings of the databases?Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx |
 |
|
azamsharp
Posting Yak Master
201 Posts |
Posted - 2008-05-28 : 16:27:47
|
Thanks Tara, The query is pretty long and not written by me but it is automatically generated by ASP.NET: CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles @ApplicationName nvarchar(256), @UserNames nvarchar(4000), @RoleNames nvarchar(4000), @CurrentTimeUtc datetimeASBEGIN DECLARE @AppId uniqueidentifier SELECT @AppId = NULL SELECT @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName IF (@AppId IS NULL) RETURN(2) DECLARE @TranStarted bit SET @TranStarted = 0 IF( @@TRANCOUNT = 0 ) BEGIN BEGIN TRANSACTION SET @TranStarted = 1 END DECLARE @tbNames table(Name nvarchar(256) NOT NULL PRIMARY KEY) DECLARE @tbRoles table(RoleId uniqueidentifier NOT NULL PRIMARY KEY) DECLARE @tbUsers table(UserId uniqueidentifier NOT NULL PRIMARY KEY) DECLARE @Num int DECLARE @Pos int DECLARE @NextPos int DECLARE @Name nvarchar(256) SET @Num = 0 SET @Pos = 1 WHILE(@Pos <= LEN(@RoleNames)) BEGIN SELECT @NextPos = CHARINDEX(N',', @RoleNames, @Pos) IF (@NextPos = 0 OR @NextPos IS NULL) SELECT @NextPos = LEN(@RoleNames) + 1 SELECT @Name = RTRIM(LTRIM(SUBSTRING(@RoleNames, @Pos, @NextPos - @Pos))) SELECT @Pos = @NextPos+1 INSERT INTO @tbNames VALUES (@Name) SET @Num = @Num + 1 END INSERT INTO @tbRoles SELECT RoleId FROM dbo.aspnet_Roles ar, @tbNames t WHERE LOWER(t.Name) = ar.LoweredRoleName AND ar.ApplicationId = @AppId IF (@@ROWCOUNT <> @Num) BEGIN SELECT TOP 1 Name FROM @tbNames WHERE LOWER(Name) NOT IN (SELECT ar.LoweredRoleName FROM dbo.aspnet_Roles ar, @tbRoles r WHERE r.RoleId = ar.RoleId) IF( @TranStarted = 1 ) ROLLBACK TRANSACTION RETURN(2) END DELETE FROM @tbNames WHERE 1=1 SET @Num = 0 SET @Pos = 1 WHILE(@Pos <= LEN(@UserNames)) BEGIN SELECT @NextPos = CHARINDEX(N',', @UserNames, @Pos) IF (@NextPos = 0 OR @NextPos IS NULL) SELECT @NextPos = LEN(@UserNames) + 1 SELECT @Name = RTRIM(LTRIM(SUBSTRING(@UserNames, @Pos, @NextPos - @Pos))) SELECT @Pos = @NextPos+1 INSERT INTO @tbNames VALUES (@Name) SET @Num = @Num + 1 END INSERT INTO @tbUsers SELECT UserId FROM dbo.aspnet_Users ar, @tbNames t WHERE LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @AppId IF (@@ROWCOUNT <> @Num) BEGIN DELETE FROM @tbNames WHERE LOWER(Name) IN (SELECT LoweredUserName FROM dbo.aspnet_Users au, @tbUsers u WHERE au.UserId = u.UserId) INSERT dbo.aspnet_Users (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate) SELECT @AppId, NEWID(), Name, LOWER(Name), 0, @CurrentTimeUtc FROM @tbNames INSERT INTO @tbUsers SELECT UserId FROM dbo.aspnet_Users au, @tbNames t WHERE LOWER(t.Name) = au.LoweredUserName AND au.ApplicationId = @AppId END IF (EXISTS (SELECT * FROM dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr WHERE tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId)) BEGIN SELECT TOP 1 UserName, RoleName FROM dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr, aspnet_Users u, aspnet_Roles r WHERE u.UserId = tu.UserId AND r.RoleId = tr.RoleId AND tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId IF( @TranStarted = 1 ) ROLLBACK TRANSACTION RETURN(3) END INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId) SELECT UserId, RoleId FROM @tbUsers, @tbRoles IF( @TranStarted = 1 ) COMMIT TRANSACTION RETURN(0)END GOThe collation settings for the database is: SQL_Latin1_General_CP1_CI_ASMohammad Azam www.azamsharp.net |
 |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-05-28 : 16:29:54
|
Can you show us what line is giving you the error by changing the font color to red?Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx |
 |
|
azamsharp
Posting Yak Master
201 Posts |
Posted - 2008-05-28 : 16:33:00
|
Thanks Tara, The query is pretty long and not written by me but it is automatically generated by ASP.NET: CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles @ApplicationName nvarchar(256), @UserNames nvarchar(4000), @RoleNames nvarchar(4000), @CurrentTimeUtc datetimeASBEGIN DECLARE @AppId uniqueidentifier SELECT @AppId = NULL SELECT @AppId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName IF (@AppId IS NULL) RETURN(2) DECLARE @TranStarted bit SET @TranStarted = 0 IF( @@TRANCOUNT = 0 ) BEGIN BEGIN TRANSACTION SET @TranStarted = 1 END DECLARE @tbNames table(Name nvarchar(256) NOT NULL PRIMARY KEY) DECLARE @tbRoles table(RoleId uniqueidentifier NOT NULL PRIMARY KEY) DECLARE @tbUsers table(UserId uniqueidentifier NOT NULL PRIMARY KEY) DECLARE @Num int DECLARE @Pos int DECLARE @NextPos int DECLARE @Name nvarchar(256) SET @Num = 0 SET @Pos = 1 WHILE(@Pos <= LEN(@RoleNames)) BEGIN SELECT @NextPos = CHARINDEX(N',', @RoleNames, @Pos) IF (@NextPos = 0 OR @NextPos IS NULL) SELECT @NextPos = LEN(@RoleNames) + 1 SELECT @Name = RTRIM(LTRIM(SUBSTRING(@RoleNames, @Pos, @NextPos - @Pos))) SELECT @Pos = @NextPos+1 INSERT INTO @tbNames VALUES (@Name) SET @Num = @Num + 1 END INSERT INTO @tbRoles SELECT RoleId FROM dbo.aspnet_Roles ar, @tbNames t WHERE LOWER(t.Name) = ar.LoweredRoleName AND ar.ApplicationId = @AppId IF (@@ROWCOUNT <> @Num) BEGIN SELECT TOP 1 Name FROM @tbNames WHERE LOWER(Name) NOT IN (SELECT ar.LoweredRoleName FROM dbo.aspnet_Roles ar, @tbRoles r WHERE r.RoleId = ar.RoleId) IF( @TranStarted = 1 ) ROLLBACK TRANSACTION RETURN(2) END DELETE FROM @tbNames WHERE 1=1 SET @Num = 0 SET @Pos = 1 WHILE(@Pos <= LEN(@UserNames)) BEGIN SELECT @NextPos = CHARINDEX(N',', @UserNames, @Pos) IF (@NextPos = 0 OR @NextPos IS NULL) SELECT @NextPos = LEN(@UserNames) + 1 SELECT @Name = RTRIM(LTRIM(SUBSTRING(@UserNames, @Pos, @NextPos - @Pos))) SELECT @Pos = @NextPos+1 INSERT INTO @tbNames VALUES (@Name) SET @Num = @Num + 1 END INSERT INTO @tbUsers SELECT UserId FROM dbo.aspnet_Users ar, @tbNames t WHERE LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @AppId IF (@@ROWCOUNT <> @Num) BEGIN DELETE FROM @tbNames WHERE LOWER(Name) IN (SELECT LoweredUserName FROM dbo.aspnet_Users au, @tbUsers u WHERE au.UserId = u.UserId) INSERT dbo.aspnet_Users (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate) SELECT @AppId, NEWID(), Name, LOWER(Name), 0, @CurrentTimeUtc FROM @tbNames INSERT INTO @tbUsers SELECT UserId FROM dbo.aspnet_Users au, @tbNames t WHERE LOWER(t.Name) = au.LoweredUserName AND au.ApplicationId = @AppId END IF (EXISTS (SELECT * FROM dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr WHERE tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId)) BEGIN SELECT TOP 1 UserName, RoleName FROM dbo.aspnet_UsersInRoles ur, @tbUsers tu, @tbRoles tr, aspnet_Users u, aspnet_Roles r WHERE u.UserId = tu.UserId AND r.RoleId = tr.RoleId AND tu.UserId = ur.UserId AND tr.RoleId = ur.RoleId IF( @TranStarted = 1 ) ROLLBACK TRANSACTION RETURN(3) END INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId) SELECT UserId, RoleId FROM @tbUsers, @tbRoles IF( @TranStarted = 1 ) COMMIT TRANSACTION RETURN(0)END GOThe collation settings for the database is: SQL_Latin1_General_CP1_CI_ASMohammad Azam www.azamsharp.netMohammad Azam www.azamsharp.net |
 |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-05-28 : 16:35:11
|
Can you post the DDL for aspnet_Roles, making sure to include the collation info?Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx |
 |
|
tkizer
Almighty SQL Goddess
38200 Posts |
|
azamsharp
Posting Yak Master
201 Posts |
Posted - 2008-05-28 : 16:38:36
|
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK__aspnet_Us__RoleI__31EC6D26]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)ALTER TABLE [dbo].[aspnet_UsersInRoles] DROP CONSTRAINT FK__aspnet_Us__RoleI__31EC6D26GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aspnet_Roles]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[aspnet_Roles]GOCREATE TABLE [dbo].[aspnet_Roles] ( [ApplicationId] [uniqueidentifier] NOT NULL , [RoleId] [uniqueidentifier] NOT NULL , [RoleName] [nvarchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LoweredRoleName] [nvarchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [nvarchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]GO CREATE UNIQUE CLUSTERED INDEX [aspnet_Roles_index1] ON [dbo].[aspnet_Roles]([ApplicationId], [LoweredRoleName]) ON [PRIMARY]GOALTER TABLE [dbo].[aspnet_Roles] ADD CONSTRAINT [DF__aspnet_Ro__RoleI__2E1BDC42] DEFAULT (newid()) FOR [RoleId], PRIMARY KEY NONCLUSTERED ( [RoleId] ) ON [PRIMARY] GOALTER TABLE [dbo].[aspnet_Roles] ADD FOREIGN KEY ( [ApplicationId] ) REFERENCES [dbo].[aspnet_Applications] ( [ApplicationId] )GOMohammad Azam www.azamsharp.net |
 |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-05-28 : 16:46:40
|
I can't spot any issues. Check out the link I posted and see if it resolves your error. If it does, then you've got a collation setting difference somewhere in there.Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx |
 |
|
azamsharp
Posting Yak Master
201 Posts |
Posted - 2008-05-28 : 16:49:49
|
Thanks! I will try to create the database using scripts instead of the restore database!Mohammad Azam www.azamsharp.net |
 |
|
|
|
|
|
|