2012-12-09 15 views
30

Używam programu Microsoft SQL Server Management Studio. Mam dwie bazy danych, jedna to systemowa baza danych, która ma główną bazę danych, a druga to moja baza danych o nazwie CCTNS_CAS_DE_DB. Kiedy próbuję generować raporty za pomocą narzędzia, które używa bazy danych CCTNS_CAS_DE_DB.Błąd sortowania

pojawia się następujący błąd:

Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation

Przeszedłem przez SQL Server i sprawdził właściwości bazy danych master pokazuje sortowania jako Latin1_General_CI_AI ale kiedy poszedłem do właściwości bazy CCTNS_CAS_DE_DB to pokazuje zestawienie jako SQL_Latin1_General_CP1_CI_AS.

Szukałem błędu w Internecie, ale większość rozwiązań mówi, jak zmienić sortowanie określonej tabeli, ale nie natrafiłem na żadne zapytanie, które zmieni sortowanie mojej bazy danych na Latin1_General_CI_AI.

natknąłem jednego zapytania, który jest: -

ALTER DATABASE CCTNS_CAS_DE_DB COLLATE Latin1_General_CI_AI 

Kiedy wpadłem tej kwerendy w moim SQL Server to rzucił się następujący błąd: -

Msg 5030, Level 16, State 2, Line 1
The database could not be exclusively locked to perform the operation.
Msg 5072, Level 16, State 1, Line 1
ALTER DATABASE failed. The default collation of database 'CCTNS_CAS_DE_DB' cannot be set to Latin1_General_CI_AI.

Wiem, że to pytanie już zamieszczone tutaj, ale myślę, że było to w innym kontekście.

Odpowiedz

16

Oto największa podpowiedź do problemu:

Msg 5030, Level 16, State 2, Line 1 The database could not be exclusively locked to perform the operation.

Co trzeba zrobić, to ustawić bazę danych w trybie pojedynczego użytkownika przed uruchomieniem oświadczenie ALTER DATABASE, a następnie ustawić go z powrotem do trybu dla wielu użytkowników kiedy jest zakończone. Spowoduje to zablokowanie bazy danych i udostępnienie jej tylko bieżącemu połączeniu, dzięki czemu można pomyślnie uruchomić instrukcję ALTER DATABASE ... COLLATE.

W tym celu można wykonać use SQL Server Management Studio or T-SQL commands.

+0

I wykonywane następujące zapytanie (ALTER DATABASE CCTNS_CAS_DE_DB UKŁADAJ Latin1_General_CI_AI; GO) i był w stanie zmienić sortowanie mojego db CCTNS_CAS_DE_DB do Latin1_General_CI_AI z SQL_Latin1_General_CP1_CI_AS ale podczas generowania raportów pokazuje ten sam błąd, tj. nie może rozwiązać konfliktu sortowania między "Latin1_General_CI_AI" i "SQL_Latin1_General_CP1_CI_AS" w równym działaniu. – Nitin

+0

Dobra odpowiedź. dzięki – Behzad

80

Najpierw należy ustawić na SINGLE_USER.

ALTER DATABASE [database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

GO 

ALTER DATABASE [database] COLLATE SQL_1xCompat_CP850_CI_AS; 

GO 

ALTER DATABASE [database] SET MULTI_USER; 

GO 
+0

Działa bezbłędnie. Dzięki! – JwJosefy

+2

Dzięki za nie założenie, że znałem SQL, aby ustawić działanie pojedynczego użytkownika! –

+0

Dzięki @RAY. Świetna robota ... –

-1

działa idealnie Thank you alot

ALTER DATABASE [database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

GO 

ALTER DATABASE [database] COLLATE SQL_1xCompat_CP850_CI_AS; 

GO 

ALTER DATABASE [database] SET MULTI_USER; 

GO 
+2

To jest dokładny duplikat odpowiedzi [RAY's] (https://stackoverflow.com/a/17377732/243373). Proszę nie powtarzać istniejących odpowiedzi i/lub nie składać podziękowań jako odpowiedzi. Zamiast tego przekaż odpowiedzi, które najbardziej Ci pomogły, gdy tylko uzyskasz wystarczającą reputację. –