Aracılığıyla paylaş


Sütun harmanlamayı değiştirme ve ayarlama

Veritabanı harmanlama için geçersiz kılma char, varchar, text, nchar, nvarchar, ve ntext belirterek belirli bir sütun için farklı bir harmanlama veri bir tablo ve aşağıdakilerden birini kullanarak:

  • collate yan tümce tümce tümcesini, create table ve alter table.Örneğin:

    CREATE TABLE MyTable
      (PrimaryKey   int PRIMARY KEY,
       CharCol      varchar(10) COLLATE French_CI_AS NOT NULL
      )
    GO
    ALTER TABLE MyTable ALTER COLUMN CharCol
                varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
    GO
    
  • SQL Server Management Studio.For more information, see Tablo sütun özellikleri (sql Server Management Studio'yu).

  • Kullanarak Column.Collation özellik , SQL Server Yönetim Nesneleri (smo).

Aşağıdakilerden herhangi biri tarafından başvuruda bulunulan sütun harmanlama değiştiremezsiniz:

  • hesaplanan sütun

  • Bir dizin

  • Ya da otomatik olarak veya İSTATİSTİKLERİ oluşturma deyim tarafından oluşturulan dağıtım istatistikleri

  • Denetim kısıtlaması

  • Bir yabancı anahtar kısıtlaması

İle çalışırken tempdb, collate yan tümce tümce tümce içeren bir database_default belirtmek için seçenek bir sütunda bir geçici tablo birleşimiyle yerine bağlantı için geçerli kullanıcı veritabanı harmanlama varsayılan kullanır tempdb.

Harmanlamalar ve metin sütunları

You can insert or update values in a text column whose collation is different from the code page of the default collation of the database.SQL Server implicitly converts the values to the collation of the column.

Harmanlamalar ve tempdb

The tempdb database is built every time SQL Server is started and has the same default collation as the model database.Bu tipik olarak varsayılan harmanlama aynıdır örnek.Bir kullanıcı veritabanı oluşturmak ve bir daha farklı bir varsayılan harmanlama belirtme modeli, bir daha farklı bir varsayılan harmanlama kullanıcı veritabanına sahip tempdb.Tüm geçici saklı yordamlar veya geçici tablolar oluşturulur ve depolanır tempdb.Bu geçici tablolar ve tüm varsayılan coercible sabitler, değişkenler ve geçici saklı yordamlar parametrelerinde tüm örtülü sütunlar benzer nesneleri kalıcı tablolar ve saklı yordamlar içinde oluşturulan farklı alfabe olması anlamına gelir.

Bu alfabe düzenlerinden bir uyuşmazlıkla ilgili sorunlarda veritabanları kullanıcı tanımlı ve sistem veritabanı nesneleri yol açabilir.Örneğin, bir örnek , SQL Server Latin1_General_CS_AS kullanır harmanlama ve aşağıdaki deyimleri yürütmek:

CREATE DATABASE TestDB COLLATE Estonian_CS_AS;
USE TestDB;
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, Col1 nchar );

Bu sistemde tempdb veritabanı kod sayfa 1252, Latin1_General_CS_AS harmanlaması kullanır ve TestDB ve TestPermTab.Col1 kullanmak Estonian_CS_AS harmanlama kod sayfa 1257.Örneğin:

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

Önceki örnekte, tempdb Latin1_General_CS_AS harmanlama veritabanı kullanır ve TestDB ve TestTab.Col1 kullanmak Estonian_CS_AS harmanlama.Örneğin:

SELECT * FROM TestPermTab a INNER JOIN #TestTempTab on a.Col1 = #TestTempTab.Col1

Çünkü tempdb varsayılan sunucu harmanlama düzeni kullanır ve TestPermTab.Col1 kullandığı başka bir harmanlama sql Server bu hata verir: "'latin1_general_ci_as_ks_ws' arasında harmanlama çakışma çözülemiyor ve 'estonian_cs_as' eşit olarak operasyona."

Hatayı önlemek için aşağıdaki yollardan birini kullanabilirsiniz:

  • Geçici tablo sütunu varsayılan karşılaştırma kümesini kullanacağını belirtmek kullanıcı veritabanıdeğil, tempdb.Sisteminiz gerekirse bu benzer şekilde biçimlendirilmiş birden çok veritabanı tablolarında çalışmak geçici tablo sağlar.

    CREATE TABLE #TestTempTab
       (PrimaryKey int PRIMARY KEY,
        Col1 nchar COLLATE database_default
       )
    
  • Belirtmek için doğru harmanlama #TestTempTab sütun:

    CREATE TABLE #TestTempTab
       (PrimaryKey int PRIMARY KEY,
        Col1 nchar COLLATE Estonian_CS_AS
       )