Hoppa till innehåll

Foto

collation conflict between "Finnish_Swedish_CI_AS" and "Finnish_Swedish_CI_AI"


  • Vänligen logga in för att kunna svara
4 svar till detta ämne

#1 andjoh78

andjoh78

    Användare

  • Medlemmar
  • PipPip
  • 43 inlägg

Postad 8 maj 2008 klockan 05:30

Ä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


#2 Magnus Ahlkvist

Magnus Ahlkvist

    SQL Server-nerd

  • Medlemmar
  • PipPipPipPip
  • 1 245 inlägg
  • Ort:Enköping

Postad 15 maj 2008 klockan 13:03

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


#3 andjoh78

andjoh78

    Användare

  • Medlemmar
  • PipPip
  • 43 inlägg

Postad 16 maj 2008 klockan 08:22

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


#4 Magnus Ahlkvist

Magnus Ahlkvist

    SQL Server-nerd

  • Medlemmar
  • PipPipPipPip
  • 1 245 inlägg
  • Ort:Enköping

Postad 16 maj 2008 klockan 22:46

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


#5 andjoh78

andjoh78

    Användare

  • Medlemmar
  • PipPip
  • 43 inlägg

Postad 19 maj 2008 klockan 15:16

Mycket tack för hjälpen...fungerade klockrent

//Anders





0 användare läser detta ämne

0 medlemmar, 0 gäster, 0 anonyma medlemmar

 
 
 

pc för alla Senaste nytt


Prenumerera på nyheter

Missa inte PC för Allas
smarta nyhetsbrev
Läs mer om nyhetsbreven här!
  PFA Express
  Veckans surftips
  Extreme
PC för Alla-nätverket