SQL Server noms de Colonne de la casse

La DB je utiliser a French_CI_AS classement (CI doit stand pour la casse), mais est sensible à la casse, de toute façon. J'essaie de comprendre pourquoi.

La raison que j'affirme c'est que des insertions avec un "DONNÉ" cas d'installation échoue, mais ils parviennent à un autre "Donné" cas de l'installation.

Par exemple:

  • INSERT INTO SomeTable([GIVEN],[COLNAME]) VALUES ("value1", "value2") échoue, mais
  • INSERT INTO SomeTable([Given],[ColName]) VALUES ("value1", "value2") œuvres.

MODIFIER
Viens de voir ceci:

http://msdn.microsoft.com/en-us/library/ms190920.aspx

donc, cela signifie qu'il devrait être possible de modifier une colonne de classement sans vider toutes les données et de recréer la table?

Je pense que vous avez besoin pour illustrer avec un simple (colonne 2) exemple de ce qui fonctionne et ce qui ne parvient pas. Je pense que vous pourriez dire que c'est INSERT INTO SomeTable([GIVEN],[COLNAME]) VALUES (...) échoue, mais INSERT INTO SomeTable([Given],[ColName]) VALUES (...) œuvres. Si oui, qui pénètre dans un domaine très délicat de l'interaction entre délimité par des identificateurs (normalement sensible à la casse) et les classements (celui-ci est sensible à la casse).
votre exemple est exactement liée à mon problème.
Il faut distinguer entre ce qui est stocké dans la table (les données) et les noms enregistrés dans le système de catalogue (méta-données). Si, comme vous l'indiquez, le problème est avec les noms de colonne (pas les données), alors vous avez besoin à la recherche si le SQL noms de colonnes dans une base de données sont sensibles à la casse quand délimité. Il peut également dépendre de la façon dont l'instruction CREATE TABLE est écrit (les noms par qui?). Normalement, le SQL est pas sensible à la casse sur la colonne et les noms de table; vous pouvez écrire INSERT INTO SoMeTaBlE(GiVeN, cOlNaMe) VALUES("v1", "v2") et si les noms n'ont jamais été délimité, ce serait OK.
Leffler: Que signifie "délimité" ici...?
Dans le Standard SQL, un "identificateur délimité" est un nom de colonne, le nom de la table, ou quelque chose de similaire entre guillemets, comme CREATE TABLE "table"(...). Ils sont utilisés lorsque les noms sont des mots clés ou contenir des caractères (comme l'espace) qui ne sont normalement pas autorisés dans les identificateurs. Dans SQL Server, délimité par des identificateurs sont entre crochets: [GIVEN] etc. MySQL utilise en arrière-tiques pour le même travail. C'est pourquoi il est crucial que vous nous montrer ce que vous êtes en utilisant. Il y a des arcanes pièces SQL (et délimité par l'identificateur de manutention est l'un d'entre eux), mais lorsque vous exécutez faute de cela, vous avez à apprendre.

OriginalL'auteur Skippy Fastol | 2012-05-03