2010-07-07 7 views
7

Je viens d'installer SQL Server 2008 et importé AdventureWorksDatabase (pour SQL 2005, comme pour 2008 qui n'a pas fonctionné).Comment supprimer Case Sensitive vérifier dans SQL Server 2008?

Il est maintenant l'application de la casse quand je recherchais des tables, vues, etc. Par conséquent tableau Person.contact lors de l'écriture renvoie une erreur de nom de colonne non valide, mais quand Person.Contact est écrit, il montre toutes les lignes.

Plus l'intellisense aussi ne fonctionne pas très bien.

Répondre

11

sensibilité à la casse est contrôlée par la collecte de la base de données utilise - vérifier en interrogeant les vues du catalogue système:

select name, collation_name 
from sys.databases 

Un nom de classement sera quelque chose comme: Latin1_General_CI_AS

La partie _CI_ me dit ici que c'est un insensible à la casse collation. Si vous voyez un _CS_, alors il s'agit d'un collation sensible.

Vous pouvez modifier le classement par défaut de la base de données en utilisant:

ALTER DATABASE AdventureWorks COLLATE ....... 

et prendre une collation valable ici - utiliser une avec un _CI_ pour obtenir un classement insensible à la casse.

Problème: même si vous modifiez le classement au niveau de la base de données, certaines tables peuvent toujours avoir une colonne individuelle dont un classement spécifique a été défini lors de la création de la table. Vous pouvez également changer tout cela, mais cela va être une entreprise plus importante. Voir this article pour plus d'informations et un script pour vérifier et éventuellement modifier des colonnes individuelles dans vos tableaux. La raison pour laquelle IntelliSense ne fonctionne pas correctement est que la sensibilité à la casse des objets de base de données est contrôlée par le classement du serveur, qui peut être différent de toute base de données par défaut.

Pour savoir ce qui est, utilisez la collation du serveur:

SELECT SERVERPROPERTY('Collation') 

Changing est un processus assez compliqué la collation du système du serveur et vous oblige à utiliser le setup.exe original explained here.

2

Le problème ici est Sensibilité à la casse du nom de la table Contact. Vous devez définir collation_name de la base de données AdventureWorks Latin1_General_CI_AS

Vérifier charset:

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

Si le collation_name est Latin1_General_BIN ou Latin1_General_CS_AS changement à Latin1_General_CI_AS

ALTER DATABASE AdventureWorks 
COLLATE Latin1_General_CI_AS ; 
GO 

Si la base de données a verrouillé pour effectuer cette action "La base de données n'a pas pu être verrouillée exclusivement t o effectuer l'opération. ".Modifier la base de données à utilisateur unique

et faire

ALTER DATABASE AdventureWorks 
COLLATE Latin1_General_CI_AS ; 
GO 

revenir la base de données à l'utilisateur multi enfin

ALTER DATABASE AdventureWorks SET MULTI_USER WITH ROLLBACK IMMEDIATE 

Ou

Vous pouvez modifier la Collation dans les propriétés de base de données .

enter image description here