Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode sobrepor a ordenação de banco de dados para char, varchar, text, nchar, nvarchar e ntext dados especificando uma ordenação diferente para uma coluna específica de uma tabela e usando um dos seguintes:
A cláusula COLLATE de CREATE TABLE e ALTER TABLE. Por exemplo:
CREATE TABLE dbo.MyTable (PrimaryKey int PRIMARY KEY, CharCol varchar(10) COLLATE French_CI_AS NOT NULL ); GO ALTER TABLE dbo.MyTable ALTER COLUMN CharCol varchar(10)COLLATE Latin1_General_CI_AS NOT NULL; GOSQL Server Management Studio. Para obter mais informações, consulte Ordenação e Suporte a Unicode.
Usando a propriedade
Column.Collationno SQL Server Management Objects (SMO).
Não é possível alterar a ordenação de uma coluna que atualmente é referenciada por qualquer uma das seguintes opções:
Uma coluna computada
Um índice
Estatísticas de distribuição, geradas automaticamente ou pela instrução CREATE STATISTICS
Uma restrição CHECK
Uma restrição de chave estrangeira (FOREIGN KEY)
Quando você trabalha com tempdb, a cláusula COLLATE inclui uma opção database_default para especificar que uma coluna em uma tabela temporária usa o padrão de ordenação do banco de dados de usuário atual para a conexão em vez da ordenação de tempdb.
Collations e colunas de texto
Você pode inserir ou atualizar valores em uma text coluna cuja ordenação é diferente da página de código da ordenação padrão do banco de dados. O SQL Server converte implicitamente os valores para a ordenação da coluna.
Configurações de ordenação e tempdb
O banco de dados tempdb é criado sempre que o SQL Server é iniciado e tem a mesma ordenação padrão que o banco de dados modelo . Normalmente, isso é o mesmo que a ordenação padrão da instância. Se você criar um banco de dados de usuário e especificar uma ordenação padrão diferente do modelo, o banco de dados do usuário terá uma ordenação padrão diferente do tempdb. Todos os procedimentos armazenados temporários ou tabelas temporárias são criados e armazenados no tempdb. Isso significa que todas as colunas implícitas em tabelas temporárias e todas as constantes, variáveis e parâmetros coercíveis padrão em procedimentos armazenados temporários têm ordenações diferentes de objetos comparáveis criados em tabelas permanentes e procedimentos armazenados.
Isso pode levar a problemas com uma incompatibilidade em ordenações entre bancos de dados definidos pelo usuário e objetos de banco de dados do sistema. Por exemplo, uma instância do SQL Server utiliza a ordenação Latin1_General_CS_AS e você executa as seguintes instruções:
CREATE DATABASE TestDB COLLATE Estonian_CS_AS;
USE TestDB;
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, Col1 nchar );
Nesse sistema, o banco de dados tempdb usa a ordenação Latin1_General_CS_AS com a página de código 1252, e TestDB e TestPermTab.Col1 usam a ordenação Estonian_CS_AS com a página de código 1257. Por exemplo:
USE TestDB;
GO
-- Create a temporary table with the same column declarations
-- as TestPermTab
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar );
INSERT INTO #TestTempTab
SELECT * FROM TestPermTab;
GO
Com o exemplo anterior, o banco de dados tempdb usa a ordenação Latin1_General_CS_AS, e TestDB, TestTab.Col1 usam a ordenação Estonian_CS_AS. Por exemplo:
SELECT * FROM TestPermTab AS a INNER JOIN #TestTempTab on a.Col1 = #TestTempTab.Col1;
Como o tempdb usa a ordenação de servidor padrão e TestPermTab.Col1 usa uma ordenação diferente, o SQL Server retorna este erro: "Não é possível resolver o conflito de ordenação entre 'Latin1_General_CI_AS_KS_WS' e 'Estonian_CS_AS' na operação de igualdade."
Para evitar o erro, você pode usar uma das seguintes alternativas:
Especifique que a coluna da tabela temporária use a ordenação padrão do banco de dados do usuário, não tempdb. Isso permite que a tabela temporária funcione com tabelas formatadas da mesma forma em vários bancos de dados, se isso for necessário para o sistema.
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar COLLATE database_default );Especifique a ordenação correta para a
#TestTempTabcoluna:CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar COLLATE Estonian_CS_AS );
Consulte Também
Definir ou alterar a ordenação do servidor
Definir ou alterar a ordenação de banco de dados
Suporte a ordenações e a Unicode