Par défaut toutes nos bases et champs de type chaine alpha (char, varchar
...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes
SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER
BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes
les bases afin d'avoir, lors de prochaine ajour de champ type chaine la
collation adéquate :-), comment faire ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bruno reiter [MVP]
un conseil, si possible, créer de nouvelles bases avec le bon collate, transférer les données en passant par de l'ASCII, détacher les bases, réinstaller le serveur avec le bon collate, rattacher les bases
attention, ce qui est dans master est perdu scripter les jobs, opérateurs, alertes pour les remmtre dans msdb
dur, dur ... mais à terme beaucoup moins de problèmes (tempdb en particulier)
br
"Gilles" wrote in message news:eLz7Tp$
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar ...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes les bases afin d'avoir, lors de prochaine ajour de champ type chaine la collation adéquate :-), comment faire ?
Merci pour vos réponses
Gilles
un conseil, si possible, créer de nouvelles bases avec le bon collate,
transférer les données en passant par de l'ASCII,
détacher les bases,
réinstaller le serveur avec le bon collate,
rattacher les bases
attention, ce qui est dans master est perdu
scripter les jobs, opérateurs, alertes pour les remmtre dans msdb
dur, dur ... mais à terme beaucoup moins de problèmes (tempdb en
particulier)
br
"Gilles" <glebarbier@supprimerceci_segilog.com> wrote in message
news:eLz7Tp$QFHA.3188@TK2MSFTNGP10.phx.gbl...
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar
...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes
SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%'
ORDER BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de
toutes les bases afin d'avoir, lors de prochaine ajour de champ type
chaine la collation adéquate :-), comment faire ?
un conseil, si possible, créer de nouvelles bases avec le bon collate, transférer les données en passant par de l'ASCII, détacher les bases, réinstaller le serveur avec le bon collate, rattacher les bases
attention, ce qui est dans master est perdu scripter les jobs, opérateurs, alertes pour les remmtre dans msdb
dur, dur ... mais à terme beaucoup moins de problèmes (tempdb en particulier)
br
"Gilles" wrote in message news:eLz7Tp$
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar ...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes les bases afin d'avoir, lors de prochaine ajour de champ type chaine la collation adéquate :-), comment faire ?
Merci pour vos réponses
Gilles
Gilles
WAOUWWWW !!
Et ALTER TABLE ALTER COLUMN
n'est pas conseillé j'avais commencé se source qui pour l'intant est loin de marché :-)
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR FOR SELECT TABLE_NAME,COLUMN_Name FROM INFORMATION_SCHEMA.COlumns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME OPEN CurTables FETCH Curtables INTO @latable,@Lacolonne WHILE @@Fetch_Status = 0 BEGIN IF @LaTable <> @DerniereTable BEGIN SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation EXEC(@SQL) SET @DerniereTable = @LaTable END SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne + @Collation EXEC(@SQL) FETCH Curtables INTO @latable,@Lacolonne END CLOSE CurTables DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux changer le collate de chaque !!!
C'est donc impossible
WAOUWWWW !!
Et ALTER TABLE
ALTER COLUMN
n'est pas conseillé
j'avais commencé se source qui pour l'intant est loin de marché :-)
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR
FOR
SELECT TABLE_NAME,COLUMN_Name
FROM INFORMATION_SCHEMA.COlumns
WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
OPEN CurTables
FETCH Curtables INTO @latable,@Lacolonne
WHILE @@Fetch_Status = 0
BEGIN
IF @LaTable <> @DerniereTable
BEGIN
SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation
EXEC(@SQL)
SET @DerniereTable = @LaTable
END
SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne +
@Collation
EXEC(@SQL)
FETCH Curtables INTO @latable,@Lacolonne
END
CLOSE CurTables
DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux changer
le collate de chaque !!!
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR FOR SELECT TABLE_NAME,COLUMN_Name FROM INFORMATION_SCHEMA.COlumns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME OPEN CurTables FETCH Curtables INTO @latable,@Lacolonne WHILE @@Fetch_Status = 0 BEGIN IF @LaTable <> @DerniereTable BEGIN SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation EXEC(@SQL) SET @DerniereTable = @LaTable END SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne + @Collation EXEC(@SQL) FETCH Curtables INTO @latable,@Lacolonne END CLOSE CurTables DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux changer le collate de chaque !!!
C'est donc impossible
bruno reiter [MVP]
ce n'est pas impossible, mais ça va être un enfer à terme, et tu es sûr d'avoir de gros ennuis à moyen ou long terme.
br
"Gilles" wrote in message news:%2310$
WAOUWWWW !!
Et ALTER TABLE ALTER COLUMN
n'est pas conseillé j'avais commencé se source qui pour l'intant est loin de marché :-)
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR FOR SELECT TABLE_NAME,COLUMN_Name FROM INFORMATION_SCHEMA.COlumns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME OPEN CurTables FETCH Curtables INTO @latable,@Lacolonne WHILE @@Fetch_Status = 0 BEGIN IF @LaTable <> @DerniereTable BEGIN SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation EXEC(@SQL) SET @DerniereTable = @LaTable END SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne + @Collation EXEC(@SQL) FETCH Curtables INTO @latable,@Lacolonne END CLOSE CurTables DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux changer le collate de chaque !!!
C'est donc impossible
ce n'est pas impossible, mais ça va être un enfer à terme, et tu es sûr
d'avoir de gros ennuis à moyen ou long terme.
br
"Gilles" <glebarbier@supprimerceci_segilog.com> wrote in message
news:%2310$tVBRFHA.1980@TK2MSFTNGP10.phx.gbl...
WAOUWWWW !!
Et ALTER TABLE
ALTER COLUMN
n'est pas conseillé
j'avais commencé se source qui pour l'intant est loin de marché :-)
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR
FOR
SELECT TABLE_NAME,COLUMN_Name
FROM INFORMATION_SCHEMA.COlumns
WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
OPEN CurTables
FETCH Curtables INTO @latable,@Lacolonne
WHILE @@Fetch_Status = 0
BEGIN
IF @LaTable <> @DerniereTable
BEGIN
SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation
EXEC(@SQL)
SET @DerniereTable = @LaTable
END
SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne +
@Collation
EXEC(@SQL)
FETCH Curtables INTO @latable,@Lacolonne
END
CLOSE CurTables
DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux
changer le collate de chaque !!!
SET @Collation = ' COLLATE ''SQL_Latin1_General_CP1_CI_AS'''
DECLARE CurTables CURSOR FOR SELECT TABLE_NAME,COLUMN_Name FROM INFORMATION_SCHEMA.COlumns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME OPEN CurTables FETCH Curtables INTO @latable,@Lacolonne WHILE @@Fetch_Status = 0 BEGIN IF @LaTable <> @DerniereTable BEGIN SET @SQL = 'ALTER TABLE ' + @LaTable + @Collation EXEC(@SQL) SET @DerniereTable = @LaTable END SET @SQL = 'ALTER TABLE ' + @LaTable + ' ALTER COLUMN ' + @LaColonne + @Collation EXEC(@SQL) FETCH Curtables INTO @latable,@Lacolonne END CLOSE CurTables DEALLOCATE CurTables
Il scan tous les colonnes de ttype char de ma base et après je veux changer le collate de chaque !!!
C'est donc impossible
Fred BROUARD
Bonjour,
j'ai écrit cet article qui vous renseignera sur une partie de la problématique : http://sqlpro.developpez.com/cours/sqlserver/collations/
Cepandant, le changement de collation au niveau de la base avec une collation différente au niveau du serveur affectera sensiblement les performances. Il vaut mieux en effet changer la collation du serveur. C'est seulement dans ce cas que les performances s'améliorerons. Mais cela possède quelques particularités parmi lesquelles la plus importante est celle-ci : si vous choisissez une collation forte (sensible à la casse et aux accents) alors TOUS les noms d'objets SQL vont devenir sensible à la casse. Ce qui signifie que dans vos applications comme dans votre code Transact SQL, si vous avez créé une table de nom TCommandeEnCours, alors l'appel de cet objet dans une requête de cette manière : SELECT * FROM tCVommandeENcours provoquera une erreur !
A +
Gilles a écrit:
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar ...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes les bases afin d'avoir, lors de prochaine ajour de champ type chaine la collation adéquate :-), comment faire ?
Merci pour vos réponses
Gilles
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Bonjour,
j'ai écrit cet article qui vous renseignera sur une partie de la problématique :
http://sqlpro.developpez.com/cours/sqlserver/collations/
Cepandant, le changement de collation au niveau de la base avec une collation
différente au niveau du serveur affectera sensiblement les performances. Il vaut
mieux en effet changer la collation du serveur. C'est seulement dans ce cas que
les performances s'améliorerons.
Mais cela possède quelques particularités parmi lesquelles la plus importante
est celle-ci :
si vous choisissez une collation forte (sensible à la casse et aux accents)
alors TOUS les noms d'objets SQL vont devenir sensible à la casse.
Ce qui signifie que dans vos applications comme dans votre code Transact SQL, si
vous avez créé une table de nom TCommandeEnCours, alors l'appel de cet objet
dans une requête de cette manière :
SELECT *
FROM tCVommandeENcours
provoquera une erreur !
A +
Gilles a écrit:
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar
...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes
SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER
BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes
les bases afin d'avoir, lors de prochaine ajour de champ type chaine la
collation adéquate :-), comment faire ?
Merci pour vos réponses
Gilles
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
j'ai écrit cet article qui vous renseignera sur une partie de la problématique : http://sqlpro.developpez.com/cours/sqlserver/collations/
Cepandant, le changement de collation au niveau de la base avec une collation différente au niveau du serveur affectera sensiblement les performances. Il vaut mieux en effet changer la collation du serveur. C'est seulement dans ce cas que les performances s'améliorerons. Mais cela possède quelques particularités parmi lesquelles la plus importante est celle-ci : si vous choisissez une collation forte (sensible à la casse et aux accents) alors TOUS les noms d'objets SQL vont devenir sensible à la casse. Ce qui signifie que dans vos applications comme dans votre code Transact SQL, si vous avez créé une table de nom TCommandeEnCours, alors l'appel de cet objet dans une requête de cette manière : SELECT * FROM tCVommandeENcours provoquera une erreur !
A +
Gilles a écrit:
Bonjour a tous,
Par défaut toutes nos bases et champs de type chaine alpha (char, varchar ...) ont reçu la collation par défaut FRENCH_CI_AS
Nous nous somme aperçu que cette collation nous convenais pas ...
Comment changer les collations de toutes nos colonnes de nos base ?
J'ai déja un source qui reprend toutes mes colonnes SELECT * From INFORMATION_SCHEMA.Columns WHERE DATA_TYpe like '%char%' ORDER BY TABLE_NAME
Mais on ne peut pas le basculer en Update car ce n'est qu'une table d'info
Et je suppose qu'il faut aussi changer le patramétrage par défaut de toutes les bases afin d'avoir, lors de prochaine ajour de champ type chaine la collation adéquate :-), comment faire ?
Merci pour vos réponses
Gilles
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************