2010-07-07 11 views
7

Ich habe gerade SQL Server 2008 installiert und AdventureWorksDatabase (für SQL 2005, wie für 2008, die nicht funktioniert hat) importiert.Wie Sie die Groß-/Kleinschreibung in SQL Server 2008 entfernen?

Es ist jetzt Groß- und Kleinschreibung erzwingen, wenn ich für alle Tabellen gesucht, Ansichten usw. Wenn daher Person.contact Tabelle einen Fehler ungültiger Spaltennamen geschrieben wirft, aber wenn Person.Contact geschrieben zeigt alle Zeilen.

Plus das Intellisense funktioniert auch nicht gut.

Antwort

11

Fall Empfindlichkeit durch die Sortierungs gesteuert wird, die Datenbank verwendet - dies überprüfen, indem Sie die Systemkatalogsichten Abfrage:

select name, collation_name 
from sys.databases 

Ein Kollatierungsnamen so etwas wie sein: Latin1_General_CI_AS

Der _CI_ Teil sagt mir, Hier ist es eine case insensitive Kollation. Wenn Sie eine _CS_ sehen, dann ist es eine case sensitive Kollation.

können Sie eine Standardsortierung der Datenbank ändern:

ALTER DATABASE AdventureWorks COLLATE ....... 

und jede gültige Sortier hier wählen - Verwenden Sie eine mit einem _CI_ eine case-insensitive Sortierung zu erhalten.

Problem: Auch wenn Sie die Sortierung auf der Datenbankebene ändern, haben bestimmte Tabellen möglicherweise noch eine einzelne Spalte, in der beim Erstellen der Tabelle eine bestimmte Sortierung definiert wurde. Sie könnten auch alle ändern, aber das wird ein größeres Unterfangen sein. Weitere Informationen finden Sie unter this article und ein Skript zum Überprüfen und Ändern einzelner Spalten in Ihren Tabellen.

Der Grund, warum die Intellisense möglicherweise nicht richtig funktioniert, ist, dass die Groß-/Kleinschreibung von Datenbankobjekten per se von der Server-Kollatierung gesteuert wird - was wiederum von jedem Datenbankstandard abweichen kann.

Um herauszufinden, was die Zusammenstellung des Servers ist, verwenden:

SELECT SERVERPROPERTY('Collation') 

das System Sortierungs des Servers zu ändern, ist ein ziemlich chaotisch Prozess und erfordert, dass Sie die ursprünglichen setup.exe als explained here zu verwenden.

2

Das Problem hier ist die Groß-/Kleinschreibung des Tabellennamens Kontakt. Sie sollten collation_name der Datenbank Adventureworks als Latin1_General_CI_AS

prüfen collation_name gesetzt:

SELECT name, collation_name 
FROM sys.databases 
WHERE name = 'AdventureWorks'; 
GO 

Wenn die collation_nameLatin1_General_BIN oder Latin1_General_CS_AS Änderung ist es Latin1_General_CI_AS

ALTER DATABASE AdventureWorks 
COLLATE Latin1_General_CI_AS ; 
GO 

Wenn die Datenbank gesperrt hat um diese Aktion auszuführen "Die Datenbank konnte nicht exklusiv gesperrt werden t o führe die Operation durch. ".Ändern Sie die Datenbank im Single-User

und tun

ALTER DATABASE AdventureWorks 
COLLATE Latin1_General_CI_AS ; 
GO 

die Datenbank Multi User schließlich

ALTER DATABASE AdventureWorks SET MULTI_USER WITH ROLLBACK IMMEDIATE 

Oder

Sie können die Sortierungs ändern in Datenbankeigenschaften Revert zurück .

enter image description here