Błąd: "Cannot Resolve The Collation Conflict"

0

Dzień dobry,
Jeżeli opisuję to zbyt laikowo lub robię coś nie tak - z góry przepraszam, mam nadzieję że to nie forum jak elektroda ;)
Chodzi o migracje w programie Płatnik.
Od jakiegoś czasu mam problem z importem nowych płatników do bazy SQL.
Płatników otrzymuję w Accessie, konwertuję (czy to przez Płatnika czy inne programy) do bazy SQL, później archiwizuje do archiwum programu i w momencie przenoszenia do bazy głównej otrzymuję komunikat :Zyskowski Michal _ Microsoft Teams 2023-07-07 12.1.png

Wystąpił błąd krytyczny podczas wykonywania pracy kreatora. Cannot resolve the colaltion conflict between "SQL_Latin1_General_CP1_CI_AS" and "Polish_CI_AS" in the eqal operation.

Collation serwera SQL 2014 x86 jest Polish_CI_AS i baz również! Windows Server 2019 angielski.
Kiedyś miałem podobny problem i udało mi się jakoś zaradzić, niestety pamięć ulotna i nie mogę przypomnieć sobie.

Bardzo proszę o pomoc!
Pozdrawiam.

2

Problem polega na tym, że nie bardzo wiemy kiedy pojawia się bład, w sensie na jakim zapytaniu. Można próbować profilerem sprawdzić, na czym to się wykłada.

Możesz sprawdzić czy jakieś kolumny na źródłowej, docelowej bazie nie mają innego collation:

SELECT t.name TableName, c.name ColumnName, collation_name  
FROM sys.columns c  
inner join sys.tables t on c.object_id = t.object_id;  
1
Marius.Maximus napisał(a):

Tutaj Wacpan był ?
https://stackoverflow.com/questions/20544392/how-to-fix-a-collation-conflict-in-a-sql-server-query

To mu nic nie da. Przecież nie zmieni zapytań wykonywanych przez Płatnika.

0
Panczo napisał(a):

Problem polega na tym, że nie bardzo wiemy kiedy pojawia się bład, w sensie na jakim zapytaniu. Można próbować profilerem sprawdzić, na czym to się wykłada.

Możesz sprawdzić czy jakieś kolumny na źródłowej, docelowej bazie nie mają innego collation:

SELECT t.name TableName, c.name ColumnName, collation_name  
FROM sys.columns c  
inner join sys.tables t on c.object_id = t.object_id;  

Dziękuję!

Puściłem query.
Baza archiwum w całości jest w "SQL_Latin1_General_CP1_CI_AS" a główna do której importuję ma część "SQL_Latin1_General_CP1_CI_AS" i część "Polish_CI_AS".

Mogę je jakoś zmienić w całości na jedno?

2

Trzymałbym się collation servera.
Można zmienić hurtem https://stackoverflow.com/questions/18122773/change-collations-of-all-columns-of-all-tables-in-sql-server

Nie zapomnij o backupie

0
Panczo napisał(a):

Trzymałbym się collation servera.
Można zmienić hurtem https://stackoverflow.com/questions/18122773/change-collations-of-all-columns-of-all-tables-in-sql-server

Nie zapomnij o backupie

Bardzo dziękuję!
Pomogło.
Wszystko działa rewelacyjnie.

Co prawda byłem prędzej na stronie pod tym linkiem i próbowałem ale jednak było mi potrzebne naprowadzenie przez Ciebie za co bardzo dziękuję!

0
Panczo napisał(a):

Trzymałbym się collation servera.
Można zmienić hurtem https://stackoverflow.com/questions/18122773/change-collations-of-all-columns-of-all-tables-in-sql-server

Nie zapomnij o backupie

Dzień dobry,
Zwracam się do Pana znowu z prośbą.
W tej chwili mam problem ze collation niektórych kolumn/tabel pozostaję niezmieniona mimo query.
W logach dostaję taki komunikat : "Some index or constraint rely on the columnI_1_1IDRAPS. No conversion possible."
Jako mogę te pojedyncze kolumny zmienić na właściwe collation?

0

musisz usunąć indeksy lub constrainy zmienić kolację i założyć na nowo to co usunołeś

0
Panczo napisał(a):

musisz usunąć indeksy lub constrainy zmienić kolację i założyć na nowo to co usunołeś

Jak to mogę zrobić?

1

Nie znam sposobu w który łatwy sposób da się opisać.
Mozesz sprawdzić inedxy jakie są na tabeli w managment studio i te które odnoszą się do poszczególnej tabeli usunąć, aby później dodać na nowo.

Generalnie Magmanet Studio pozwala wygenerować zapytania DDL i na tej podstawie możesz odtwarzać to co usunąłeś, ale nie podejmę się pisania instrukcji jak to zrobić

0
Panczo napisał(a):

Nie znam sposobu w który łatwy sposób da się opisać.
Mozesz sprawdzić inedxy jakie są na tabeli w managment studio i te które odnoszą się do poszczególnej tabeli usunąć, aby później dodać na nowo.

Generalnie Magmanet Studio pozwala wygenerować zapytania DDL i na tej podstawie możesz odtwarzać to co usunąłeś, ale nie podejmę się pisania instrukcji jak to zrobić

Udało mi się.
Znowu dzięki naprowadzeniu przez Pana.
Jest Pan rewelacyjny - dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1