Jeffrey Renfroe
asked on
Receiving error message when trying to execute view in SQL 2005
Hello. I am not a SQL expert so I may be asking the wrong question. If anyone can point me in the right direction, it would be appreciated.
My environment is MS SQL 2005 SP3.
My company has a web page that is used for deploying software in SMS. I am setting up an environment for testing. I have the web page working correctly except for one item.
There is a tab on the web page that bring up settings based on AD site. One of the items used to display AD sites is a view (see code below). In production the LDAP looks at DC=FDS,DC=prd,DC=com'' I am only trying to change it to the lab values (DC=ent-test,DC=loc'').
When I make the change and execute I get the below error message.
Msg 468, Level 16, State 9, Procedure vComputerSettingsAllSites, Line 3
Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI _AS" in the equal to operation.
I have done research but cannot find a solution. Can anyone point me in the right direction?
My environment is MS SQL 2005 SP3.
My company has a web page that is used for deploying software in SMS. I am setting up an environment for testing. I have the web page working correctly except for one item.
There is a tab on the web page that bring up settings based on AD site. One of the items used to display AD sites is a view (see code below). In production the LDAP looks at DC=FDS,DC=prd,DC=com'' I am only trying to change it to the lab values (DC=ent-test,DC=loc'').
When I make the change and execute I get the below error message.
Msg 468, Level 16, State 9, Procedure vComputerSettingsAllSites,
Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI
I have done research but cannot find a solution. Can anyone point me in the right direction?
USE [FDS_PNC]
GO
/****** Object: View [dbo].[vComputerSettingsAllSites] Script Date: 08/13/2010 20:55:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[vComputerSettingsAllSites]
AS
SELECT DISTINCT
TOP (100) PERCENT CAST(SUBSTRING(LEFT(ad.siteObject, CHARINDEX(',', ad.siteObject) - 1), 4, 255) AS nvarchar(50)) AS ADSite,
CAST(cs.ADSiteDescription AS nvarchar(50)) AS ADSiteDescription, CAST(cs.NewComputerNamePrefix AS nvarchar(20)) AS NewComputerNamePrefix,
CAST(cs.CaptureStateTo AS nvarchar(255)) AS CaptureStateTo, CAST(cs.DriverBasePath AS nvarchar(255)) AS DriverBasePath,
CAST(cs.OSDLogShare AS nvarchar(255)) AS OSDLogShare, CAST(cs.BaseConfigShare AS nvarchar(255)) AS BaseConfigShare,
CAST(CASE WHEN cs.TimeZoneID IS NULL THEN '-1' ELSE cs.TimeZoneID END AS nvarchar(3)) AS TimeZoneID, CAST(cs.JoinDomain AS nvarchar(50))
AS JoinDomain, CAST(cs.DestinationOU AS nvarchar(255)) AS DestinationOU, CAST(cs.JoinDomainUser AS nvarchar(50)) AS JoinDomainUser,
CAST(cs.JoinDomainPass AS nvarchar(128)) AS JoinDomainPass,
CAST(CASE WHEN cs.InputLanguageID1 IS NULL THEN '0000' ELSE cs.InputLanguageID1 END AS char(4)) AS InputLanguageID1,
CAST(CASE WHEN cs.KbdLayoutID1 IS NULL THEN '00000000' ELSE cs.KbdLayoutID1 END AS char(8)) AS KbdLayoutID1,
CAST(CASE WHEN cs.InputLanguageID2 IS NULL THEN '0000' ELSE cs.InputLanguageID2 END AS char(4)) AS InputLanguageID2,
CAST(CASE WHEN cs.KbdLayoutID2 IS NULL THEN '00000000' ELSE cs.KbdLayoutID2 END AS char(8)) AS KbdLayoutID2, CAST(CASE WHEN cs.StandardsFormatsID IS NULL
THEN '00000000' ELSE cs.StandardsFormatsID END AS char(8)) AS StandardsFormatsID, CAST(CASE WHEN cs.LanguageID IS NULL
THEN '0000' ELSE cs.LanguageID END AS char(4)) AS LanguageID, CAST(cs.LocalAdminPassword AS nvarchar(128)) AS LocalAdminPassword,
CAST(CASE WHEN cs.LocalAdminPasswordIsEncrypted IS NULL THEN 0 ELSE cs.LocalAdminPasswordIsEncrypted END AS bit)
AS LocalAdminPasswordIsEncrypted, CAST(cs.AdminGroupMember1 AS nvarchar(80)) AS AdminGroupMember1,
CAST(cs.AdminGroupMember2 AS nvarchar(80)) AS AdminGroupMember2, CAST(cs.AdminGroupMember3 AS nvarchar(80)) AS AdminGroupMember3,
CAST(cs.AdminGroupMember4 AS nvarchar(80)) AS AdminGroupMember4, CAST(cs.AdminGroupMember5 AS nvarchar(80))
AS AdminGroupMember5
FROM OPENQUERY(ADSI, 'SELECT siteObject
FROM ''LDAP://CN=Subnets,CN=Sites,CN=Configuration,DC=ent-test,DC=loc''
')
AS ad LEFT OUTER JOIN
dbo.ComputerSettingsForADSite AS cs ON cs.ADSite = SUBSTRING(LEFT(ad.siteObject, CHARINDEX(',', ad.siteObject) - 1), 4, 255)
WHERE (SUBSTRING(LEFT(ad.siteObject, CHARINDEX(',', ad.siteObject) - 1), 4, 255) IS NOT NULL)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
It has happened because your database was restored/attached between SQL servers with different collations.
as the error says they both have different collations.. so you will need to convert the Table on SQL server to Latin_general_CI_AS Collation.. check the sample Code
select *
from table_1
inner join table_2
on (table_1.field collate SQL_Latin1_General_CP850_C I_AI = table_2.field)
where CONDITION
Also, i would suggest using fields with functions always on the left side of the operator
dbo.ComputerSettingsForADS ite AS cs ON (SUBSTRING(LEFT(ad.siteObj ect, CHARINDEX(',', ad.siteObject) - 1), 4, 255) = cs.ADSite collate Latin1_General_CI_AS)
select *
from table_1
inner join table_2
on (table_1.field collate SQL_Latin1_General_CP850_C
where CONDITION
Also, i would suggest using fields with functions always on the left side of the operator
dbo.ComputerSettingsForADS
CyberKiwi has the right idea.
It is probably because the collation settings for the items/servers do not match. You could compare the collation on the two database servers, and would probably find that they do not match. If they do, it could be at the table/column level.
It is probably because the collation settings for the items/servers do not match. You could compare the collation on the two database servers, and would probably find that they do not match. If they do, it could be at the table/column level.
ASKER
Wow. Thank you for the information and quick response.
ASKER
Thank you for the information and quick response.
what is your domain name?