powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL 2008: Cannot resolve the collation conflict
25 сообщений из 32, страница 1 из 2
MS SQL 2008: Cannot resolve the collation conflict
    #36040382
Фотография Bogdan1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь выполнить этот SQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
CREATE PROCEDURE [dbo].[aspnet_UsersInRoles_AddUsersToRoles]
	@ApplicationName  nvarchar( 256 ),
	@UserNames		  nvarchar( 4000 ),
	@RoleNames		  nvarchar( 4000 ),
	@CurrentTimeUtc   datetime
AS
BEGIN
	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  
Кидает ошибки:
Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
Что не так? Почему ошибка кидается? Как её устранить?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #36040411
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего потому, что в вашей базе и в базе TempDB разные дефолтные коллейшны.
Исправить - явно указывать COLLATE при сравнении строковых величин либо явно прописывать коллейшны строковых полей в объявлениях временных таблиц и табличных переменных.
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #36040455
Фотография Bogdan1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за совет, он помог и теперь всё работает :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MS SQL 2008: Cannot resolve the collation conflict
    #37086634
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точно такая же проблема поменял Collate все равно не помогает :(

--------------------------------------
Starting execution of InstallRoles.SQL
--------------------------------------
Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 48
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 52
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 53
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 58
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

(1 row(s) affected)

(1 row(s) affected)
Msg 15151, Level 16, State 1, Line 30
Cannot find the object 'aspnet_UsersInRoles_AddUsersToRoles', because it does not exist or you do not have permission.
Msg 15151, Level 16, State 1, Line 31
Cannot find the object 'aspnet_UsersInRoles_RemoveUsersFromRoles', because it does not exist or you do not have permission.
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
---------------------------------------
Completed execution of InstallRoles.SQL
---------------------------------------

Что делать не знаю ((
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37086767
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilЧто делать не знаю ((
Читать ответы - 7297736
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37086918
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во всех БД исправил Collation но все равно такая байда может еще какое нибудь другое решение есть?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37086981
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilВо всех БД исправил Collation но все равно такая байда может еще какое нибудь другое решение есть?
И где вы в ответе прочитали, что нужно исправить Collation у базы данных ?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37086993
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я что то не так понял то прошу понять и поддержать. Можно по подробнее?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087014
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilЕсли я что то не так понял то прошу понять и поддержать. Можно по подробнее?
Вы это предложение точно читали ?
"Исправить - явно указывать COLLATE при сравнении строковых величин либо явно прописывать коллейшны строковых полей в объявлениях временных таблиц и табличных переменных. "
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087034
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilЕсли я что то не так понял то прошу понять и поддержать. Можно по подробнее?Поддерживаю и понимаю.

Чтобы помочь, нужно хоть понять, что вы делали.
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087060
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
включил <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
а далее показал провайдера
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087062
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и просто запускаю aspnet_regsql.exe и получаю следующую ошибку:

Исключение:
Во время выполнения файла SQL 'InstallRoles.sql' произошла ошибка. Номер ошибки SQL - 468, а сообщение SqlException: Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.

----------------------------------------
Подробности сбоя
----------------------------------------

SQL Server:
База данных: [AzDAS]
Загружен файл SQL:
InstallRoles.sql

Сбой команд:

DECLARE @ver int
DECLARE @version nchar(100)
DECLARE @dot int
DECLARE @hyphen int
DECLARE @SqlToExec nchar(4000)

SELECT @ver = 7
SELECT @version = @@Version
SELECT @hyphen = CHARINDEX(N' - ', @version)
IF (NOT(@hyphen IS NULL) AND @hyphen > 0)
BEGIN
SELECT @hyphen = @hyphen + 3
SELECT @dot = CHARINDEX(N'.', @version, @hyphen)
IF (NOT(@dot IS NULL) AND @dot > @hyphen)
BEGIN
SELECT @version = SUBSTRING(@version, @hyphen, @dot - @hyphen)
SELECT @ver = CONVERT(int, @version)
END
END

IF (@ver > 7)
SELECT @SqlToExec = N'
CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles
@ApplicationName nvarchar(256),
@UserNames nvarchar(4000),
@RoleNames nvarchar(4000),
@CurrentTimeUtc datetime
AS
BEGIN
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'
ELSE
SELECT @SqlToExec = N'
CREATE PROCEDURE dbo.aspnet_UsersInRoles_AddUsersToRoles
@ApplicationName nvarchar(256),
@UserNames nvarchar(4000),
@RoleNames nvarchar(4000),
@CurrentTimeUtc datetime
AS
BEGIN
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 @RoleId uniqueidentifier
DECLARE @UserId uniqueidentifier
DECLARE @UserName nvarchar(256)
DECLARE @RoleName nvarchar(256)

DECLARE @CurrentPosU int
DECLARE @NextPosU int
DECLARE @CurrentPosR int
DECLARE @NextPosR int

SELECT @CurrentPosU = 1

WHILE(@CurrentPosU <= LEN(@UserNames))
BEGIN
SELECT @NextPosU = CHARINDEX(N'','', @UserNames, @CurrentPosU)
IF (@NextPosU = 0 OR @NextPosU IS NULL)
SELECT @NextPosU = LEN(@UserNames) + 1

SELECT @UserName = SUBSTRING(@UserNames, @CurrentPosU, @NextPosU - @CurrentPosU)
SELECT @CurrentPosU = @NextPosU+1

SELECT @CurrentPosR = 1
WHILE(@CurrentPosR <= LEN(@RoleNames))
BEGIN
SELECT @NextPosR = CHARINDEX(N'','', @RoleNames, @CurrentPosR)
IF (@NextPosR = 0 OR @NextPosR IS NULL)
SELECT @NextPosR = LEN(@RoleNames) + 1
SELECT @RoleName = SUBSTRING(@RoleNames, @CurrentPosR, @NextPosR - @CurrentPosR)
SELECT @CurrentPosR = @NextPosR+1
SELECT @RoleId = NULL
SELECT @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @AppId
IF (@RoleId IS NULL)
BEGIN
SELECT @RoleName
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(2)
END

SELECT @UserId = NULL
SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @AppId
IF (@UserId IS NULL)
BEGIN
EXEC dbo.aspnet_Users_CreateUser @AppId, @UserName, 0, @CurrentTimeUtc, @UserId OUTPUT
END

IF (EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId))
BEGIN
SELECT @UserName, @RoleName
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(3)
END
INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId) VALUES(@UserId, @RoleId)
END
END
IF( @TranStarted = 1 )
COMMIT TRANSACTION
RETURN(0)
END'

EXEC sp_executesql @SqlToExec

IF (@ver > 7)
SELECT @SqlToExec = N'
CREATE PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles
@ApplicationName nvarchar(256),
@UserNames nvarchar(4000),
@RoleNames nvarchar(4000)
AS
BEGIN
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)
DECLARE @CountAll int
DECLARE @CountU int
DECLARE @CountR int


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
SELECT @CountR = @@ROWCOUNT

IF (@CountR <> @Num)
BEGIN
SELECT TOP 1 N'''', 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

SELECT @CountU = @@ROWCOUNT
IF (@CountU <> @Num)
BEGIN
SELECT TOP 1 Name, N''''
FROM @tbNames
WHERE LOWER(Name) NOT IN (SELECT au.LoweredUserName FROM dbo.aspnet_Users au, @tbUsers u WHERE u.UserId = au.UserId)

IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(1)
END

SELECT @CountAll = COUNT(*)
FROM dbo.aspnet_UsersInRoles ur, @tbUsers u, @tbRoles r
WHERE ur.UserId = u.UserId AND ur.RoleId = r.RoleId

IF (@CountAll <> @CountU * @CountR)
BEGIN
SELECT TOP 1 UserName, RoleName
FROM @tbUsers tu, @tbRoles tr, dbo.aspnet_Users u, dbo.aspnet_Roles r
WHERE u.UserId = tu.UserId AND r.RoleId = tr.RoleId AND
tu.UserId NOT IN (SELECT ur.UserId FROM dbo.aspnet_UsersInRoles ur WHERE ur.RoleId = tr.RoleId) AND
tr.RoleId NOT IN (SELECT ur.RoleId FROM dbo.aspnet_UsersInRoles ur WHERE ur.UserId = tu.UserId)
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(3)
END

DELETE FROM dbo.aspnet_UsersInRoles
WHERE UserId IN (SELECT UserId FROM @tbUsers)
AND RoleId IN (SELECT RoleId FROM @tbRoles)
IF( @TranStarted = 1 )
COMMIT TRANSACTION
RETURN(0)
END
'
ELSE
SELECT @SqlToExec = N'
CREATE PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles
@ApplicationName nvarchar(256),
@UserNames nvarchar(4000),
@RoleNames nvarchar(4000)
AS
BEGIN
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 @RoleId uniqueidentifier
DECLARE @UserId uniqueidentifier
DECLARE @UserName nvarchar(256)
DECLARE @RoleName nvarchar(256)

DECLARE @CurrentPosU int
DECLARE @NextPosU int
DECLARE @CurrentPosR int
DECLARE @NextPosR int

SELECT @CurrentPosU = 1

WHILE(@CurrentPosU <= LEN(@UserNames))
BEGIN
SELECT @NextPosU = CHARINDEX(N'','', @UserNames, @CurrentPosU)
IF (@NextPosU = 0 OR @NextPosU IS NULL)
SELECT @NextPosU = LEN(@UserNames)+1
SELECT @UserName = SUBSTRING(@UserNames, @CurrentPosU, @NextPosU - @CurrentPosU)
SELECT @CurrentPosU = @NextPosU+1

SELECT @CurrentPosR = 1
WHILE(@CurrentPosR <= LEN(@RoleNames))
BEGIN
SELECT @NextPosR = CHARINDEX(N'','', @RoleNames, @CurrentPosR)
IF (@NextPosR = 0 OR @NextPosR IS NULL)
SELECT @NextPosR = LEN(@RoleNames)+1
SELECT @RoleName = SUBSTRING(@RoleNames, @CurrentPosR, @NextPosR - @CurrentPosR)
SELECT @CurrentPosR = @NextPosR+1

SELECT @RoleId = NULL
SELECT @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @AppId
IF (@RoleId IS NULL)
BEGIN
SELECT N'''', @RoleName
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(2)
END

SELECT @UserId = NULL
SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @AppId
IF (@UserId IS NULL)
BEGIN
SELECT @UserName, N''''
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(1)
END

IF (NOT(EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId)))
BEGIN
SELECT @UserName, @RoleName
IF( @TranStarted = 1 )
ROLLBACK TRANSACTION
RETURN(3)
END
DELETE FROM dbo.aspnet_UsersInRoles WHERE (UserId = @UserId AND RoleId = @RoleId)
END
END
IF( @TranStarted = 1 )
COMMIT TRANSACTION
RETURN(0)
END
'
EXEC sp_executesql @SqlToExec


Исключение SQL:
System.Data.SqlClient.SqlException: Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
в System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
в System.Web.Management.SqlServices.ExecuteFile(String file, String server, String database, String dbFileName, SqlConnection connection, Boolean sessionState, Boolean isInstall, SessionStateType sessionStatetype)
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087064
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilи просто запускаю aspnet_regsql.exe и получаю следующую ошибку:

Что вам по прежнему мешает уже приступить к решению проблемы ?
Уровень ответов на русскоязычных форумах ?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087068
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да в принципе не чего не мешает кроме того что я не вижу решения проблемы. А если уровень рос.форумов не устраивал меня то я обратился бы в другой форум.
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087071
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilДа в принципе не чего не мешает кроме того что я не вижу решения проблемы.
Сколько раз нужно повторить предложение

"Исправить - явно указывать COLLATE при сравнении строковых величин либо явно прописывать коллейшны строковых полей в объявлениях временных таблиц и табличных переменных. "

чтобы вы уже видели решение ?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087085
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilДа в принципе не чего не мешает кроме того что я не вижу решения проблемы. А если уровень рос.форумов не устраивал меня то я обратился бы в другой форум.Это ваше приложение или чёжое?

Если ваше, отлаживайте этот код и ищите строку с ошибкой.

Если чужое - обратитесь к разработчикам.

Скорее всего, коллейшен некоторых полей в таблицах не соответствует колелйшену базы данных. Это ошибка создания таблиц в БД.

Или как валиант, коллейшен полей в одних таблицах не соответствует другим, но это менее вероятно.

Можно просто сделать скрипт таблиц в БД и найти там коллейшены, упомянутые в сообщении об ошибке
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087093
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложение можно не мое, я просто хочу включить Roles в ASP.Net и для этого запускаю aspnetregsql но получаю ошибку которую уже привел выше а БД только что ставил и все по стандарту вроде не могу понять почему Collation-ы не могу совпадать. Если Collation не совпадает как вручную сделать это?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087101
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komilПриложение можно не мое, я просто хочу включить Roles в ASP.Net и для этого запускаю aspnetregsql но получаю ошибку которую уже привел выше а БД только что ставил и все по стандарту вроде не могу понять почему Collation-ы не могу совпадать. Если Collation не совпадает как вручную сделать это?Очень неконкретно и непонятно

Ставили стороннее приложение инсталятором? Значит, бага в инсталяторе

Ставили сами? значит, неправильно. "все по стандарту" - имеется в виду инструкция производителя? стандарта на установку БД не существует.

Пока вы не напишите ничего корме "я нажал а у меня ошибка", помочь нельзя.

Коллейшен нужно менять на конкретных столбцах конкретной таблицы, из за которой появляется ошибка. Либо через UI SSMS, либо командами.
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #37087115
komil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да конечно понимаю что слишком мало информации для решения проблем но и особо говорит тут не чего, предлагаю сделать следующее если Вам не трудно alexeyvg подскажите как глобально во всей базе поменять Collation чтобы конфликтов у меня не было? а то объяснять я особо не мастер как показал этот пост :) извините
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MS SQL 2008: Cannot resolve the collation conflict
    #38574441
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS SQL 2005 Cannot resolve the collation conflict

Добрый день, хочу поделиться решением своей проблемы — при написании скрипта происходило сравнение полей из разных таблиц в результате постоянно выскакивала одна и та же ошибка:

Msg 468, Level 16, State 9, Line 2
Cannot resolve the collation conflict between «Cyrillic_General_CI_AS» and «SQL_Latin1_General_CP1251_CI_AS» in the equal to operation.


Решение нашел на просторах интернета и решил оставить на заметку чтобы больше не искать.

После сравнения полей нужно добавить collate Cyrillic_General_CI_AS

Код: sql
1.
2.
3.
SELECT k.*,p.kl_id FROM ##Klient k
LEFT JOIN Product p ON p.kl_id=k.kl_id collate Cyrillic_General_CI_AS
ORDER BY p.kl_id


У меня такой вариант сработал.

Если кому еще помогло рад за Вас.

Источник : http://zametki-admina.ru/ms-sql-2005-cannot-resolve-the-collation-conflict.html
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #38574637
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OffTop

Смотришь на это явление и поражаешься, как Фейман смотрящий на цветок.

George Ru , а вы можете сказать о чём написано во втором посте? 7297736
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #38639785
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mnior , а Вам не кажется, что я об этом уже сказал? 15641376
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #38639788
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George Ruа Вам не кажется, что я об этом уже сказал? 15641376
А зачем ждали 5 лет то ?
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #38639797
George Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory , пересчитайте на калькуляторе, пожалуйста, ещё раз
...
Рейтинг: 0 / 0
MS SQL 2008: Cannot resolve the collation conflict
    #38639800
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George Ru Glory , пересчитайте на калькуляторе, пожалуйста, ещё раз

Время поста с аналогичным вашему ответом
14 июн 09, 17:21
Время вашего поста
27 фев 14, 14:33

14-9 = 5 - так мне сказал калькулятор
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL 2008: Cannot resolve the collation conflict
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]