Just nu i M3-nätverket
Gå till innehåll

collation conflict between "Finnish_Swedish_CI_AS" and "Finnish_Swedish_CI_AI"


andjoh78

Rekommendera Poster

Är rätt ny i SQL och skulle behöva hjälp.Jag försöker lista data ur flera databaser som sedan ska hamna i excel. Vi har Microsoft SQL Server 2005.

 

SELECT [Resultatenhet_1],[Namn]
FROM [Databas1].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Databas2].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Databas3].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Databas4].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Databas5].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Databas6].[dbo].[Anställda]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

 

Får felmeddelande

Msg 468, Level 16, State 9, Line 1

Cannot resolve the collation conflict between "Finnish_Swedish_CI_AS" and "Finnish_Swedish_CI_AI" in the UNION operation.

 

Frågor

1. Jag skulle vilja kolla collate värdet på alla databaser, tabeller och kolumner på servern...hur gör jag det lättast?

2. Någon som har en bra lösning på problemet med collate och union...har provat olika varianter som jag hittat på nätet men efter åtgärd så får jag fortfarande samma felmeddelande. Eller kan man bygga frågan på något annat sätt så den inte ä lika känslig?

 

Tacksam för all hjälp jag kan få

 

//Anders

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

1.

Default collation för varje databas

SELECT * FROM sys.databases

Collation för varje kolumn i nuvarande databas, join med sys.tables för att få fram tabellnamnet

select t.name as tablename,* from sys.columns c inner join sys.tables t on t.object_id=c.object_id

 

2. Du kan använda COLLATE i din SELECT-sats:

 

SELECT [Resultatenhet_1],[Namn]
FROM [Database1].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Database3].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Database3].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS
UNION
SELECT [Resultatenhet_1],[Namn]
FROM [Database4].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS
UNION
SELECT [Resultatenhet_5],[Namn]
FROM [Database1].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS
UNION
SELECT [Resultatenhet_6],[Namn]
FROM [Database1].[dbo].[ANSTÄLLDA]
WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL
COLLATE Finnish_Swedish_CI_AS

 

--

Politikblogg: http://magnusahlkvist.bloggvanstern.se

SQL Server-blogg: http://www.underlandet.com/SqlServer

 

Länk till kommentar
Dela på andra webbplatser

Tack Magnus,

 

Punkt 1 fungerade kanon.

 

Får dock felmeddelande på punkt 2

 

Msg 156, Level 15, State 1, Line 4

Incorrect syntax near the keyword 'COLLATE'.

 

Några tips?

 

//Anders

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Det beror på att min syntax var helt åt skogen. COLLATE gör man ju på kolumnnivå. Därför blir det såhär:

 

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS ,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database1].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

UNION

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database3].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

UNION

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database3].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

UNION

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database4].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

UNION

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database5].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

UNION

SELECT [Resultatenhet_1] COLLATE Finnish_Swedish_CI_AS,[Namn] COLLATE Finnish_Swedish_CI_AS

FROM [Database6].[dbo].[ANSTÄLLDA]

WHERE avgångsdatum > '2008-04-30' OR avgångsdatum IS NULL

 

--

Politikblogg: http://magnusahlkvist.bloggvanstern.se

SQL Server-blogg: http://www.underlandet.com/SqlServer

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...