collation change sql server 2008

dieser post ist hauptsächlich als erinnerung für mich – ich brauch das sicher nochmal und will dann nicht unbedingt nochmal suchen was ich getan habe – alle hardcoresqlspezialisten sollten jetzt nur weiterlesen, wenn sie echte fehler in meinem text anmerken wollen – ich hab das recht „rustikal“ geschrieben, ohne begründungen und nur so, wie es bei mir funktioniert hat…

problem am anfang: der sql server hatte eine falsche collation eingestellt, wir haben die Latin1_General_CI_AS gebraucht, bei der installation war eine andere eingestellt – was bedeudet, das die datenbanken, die einfach mit klick-klick auf dem server erstellt wurden, die falsche collation hatten.

so, und das war das problem, weil viele t-sql scripts, ssis packages und so nicht collationübergreifend funktionieren.

jetzt gibt es eine recht einfache methode die standard collation eines servers zu ändern – die killt aber leider alle datenbanken – weil die systemdatenbanken da neu erstellt werden – ein backup der db’s und dann einfach restoren hilft auch nicht, da da die alte collation wieder reinkommt – daher muss man die datenbanken mit rechtsklick/tasks/generate scripts hinaussichern, und dort einige einstellungen treffen, damit der export auch richtig funktioniert:

um alles rauszubekommen muss man fast alle werte auf true setzen – aber auf keinen fall den, wo gefragt wird, ob die collation mitexportiert werden soll:

Zusammenfassung

das sind die einstellungen wie sie sein sollten.

so, jetzt muss man dann die datenbanken droppen – ich hab sie zur sicherheit detached und wegverschoben, das sie noch da sind, wenn was ist.

dann kann man die collation vom server ändern, das geht über ein sql-server-setup befehlchen auf der commandline:

‚Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName‘

im verzeichnis C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release ausführen, die option /SAPWD= ist wichtig für den fall, das der mixed mode (für die anmeldung) vom sql server aktiviert ist – bei den /SQLSYSADMINACCOUNTS= empfielt sich die BUILTIN\Administrators zu nehmen, wenn keinen sicherheitsbedenken dagegen sprechen, weil in der gruppe muss man sein, um das setup aufzurufen und man kann dann auch die anpassungen wieder machen das alle wieder die richtigen rechte bekommen.

dieser aufruf dauert jetzt ein bisschen, dann sagt er entweder OK oder irgendeinen fehler – egal wie, man sollte in C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log die Summary.txt ansehen, ob alles funktioniert hat – wenn ja, sollte es so aussehen:

Overall summary:
Final result:                  Passed
Exit code (Decimal):           0
Exit message:                  Passed
Start time:                    2009-09-17 10:09:31
End time:                      2009-09-17 10:11:03
Requested action:              RebuildDatabase
Machine Properties:
Machine name:                  BI-SERVER01
Machine processor count:       4
OS version:                    Windows Server 2003
OS service pack:               Service Pack 2
OS region:                     Äeská republika
OS language:                   English (United States)
OS architecture:               x86
Process architecture:          32 Bit
OS clustered:                  No
Product features discovered:
Product              Instance             Instance ID                    Feature                                  Language             Edition              Version         Clustered
Sql Server 2008      MSSQLSERVER          MSSQL10.MSSQLSERVER            Database Engine Services                 1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008      MSSQLSERVER          MSSQL10.MSSQLSERVER            SQL Server Replication                   1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008      MSSQLSERVER          MSSQL10.MSSQLSERVER            Full-Text Search                         1033                 Standard Edition     10.0.1600.22    No
Sql Server 2008      MSSQLSERVER          MSAS10.MSSQLSERVER             Analysis Services                        1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008      MSSQLSERVER          MSRS10.MSSQLSERVER             Reporting Services                       1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Management Tools – Basic                 1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Management Tools – Complete              1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Client Tools Connectivity                1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Client Tools Backwards Compatibility     1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Client Tools SDK                         1033                 Standard Edition     10.1.2531.0     No
Sql Server 2008                                                          Integration Services                     1033                 Standard Edition     10.1.2531.0     No
Package properties:
Description:                   SQL Server Database Services 2008
SQLProductFamilyCode:          {628F8F38-600E-493D-9946-F4178F20A8A9}
ProductName:                   SQL2008
Type:                          RTM
Version:                       10
SPLevel:                       0
Installation edition:          EVAL
User Input Settings:
ACTION:                        RebuildDatabase
CONFIGURATIONFILE:
HELP:                          False
INDICATEPROGRESS:              False
INSTANCENAME:                  MSSQLSERVER
QUIET:                         True
QUIETSIMPLE:                   False
SAPWD:                         *****
SQLCOLLATION:                  Latin1_General_CI_AS
SQLSYSADMINACCOUNTS:           BUILTIN\Administrators
X86:                           False
Configuration file:            C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20090917_100748\ConfigurationFile.ini
Detailed results:
Feature:                       Database Engine Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed
Feature:                       Analysis Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed
Feature:                       Reporting Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed
Rules with failures:
Global rules:
There are no scenario-specific rules.
Rules report file:               C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20090917_100748\SystemConfigurationCheck_Report.htm

Overall summary:
Final result:                  Passed
Exit code (Decimal):           0
Exit message:                  Passed
Start time:                    2009-09-17 10:09:31
End time:                      2009-09-17 10:11:03
Requested action:              RebuildDatabase

.

.

.
Detailed results:
Feature:                       Database Engine Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed

Feature:                       Analysis Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed

Feature:                       Reporting Services
Status:                        Passed
MSI status:                    Passed
Configuration status:          Passed

Rules with failures:

Global rules:

There are no scenario-specific rules.

Rules report file:               C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20090917_100748\SystemConfigurationCheck_Report.ht

So, jetzt hat man die richtige Collation am Server – aber die Datenbanken sind weg…

die werden jetzt wieder angelegt, das *.sql script, das man vorher erstellt hat wieder ausgeführt (über sqlcmd, das sql server management studio oder wie auch immer) und dann müssten noch die db’s überprüft werden, speziell, wenn man über sqlcmd arbeitet, weil das einige dinge anders versteht als das management studio…

so – und wenns nicht funktioniert hat, kann man die datenbanken die man am anfang detached hat, nochmal attachen und das ganze nochmal probieren – weil die sind ja immer noch in der alten collation – dann könnte man es über ein ssis package machen und die db’s zweimal umbenennen oder so – aber das hab ich schon nicht mehr probiert…

einem menschen gefällt das.

Tags » , «

Autor:
Datum: Freitag, 18. September 2009 9:21
Trackback: Trackback-URL Themengebiet: Allgemein

Feed zum Beitrag: RSS 2.0 Kommentare und Pings geschlossen.

Keine weiteren Kommentare möglich.