Ayarlama veya sütun harmanlamayı değiştirme
Veritabanı harmanlama için kılabilirsiniz char, varchar, text, nchar, nvarchar, ve ntextbir tablonun belirli bir sütun için farklı harmanlama belirtme ve aşağıdakilerden birini kullanarak veri:
collate yan tümcesi create table ve alter table. Örneğin:
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; GO
SQL Server Management Studio. Daha fazla bilgi için Harmanlama ve Unicode desteği.
Kullanarak Column.CollationEmlak SQL ServerManagement Objects (smo).
Şu anda aşağıdakilerden herhangi biri tarafından başvuruda bulunulan bir sütunun harmanlama değiştiremezsiniz:
Hesaplanmış bir sütun
Dizin
Ya da otomatik olarak veya STATISTICS create deyimi tarafından oluşturulan dağıtım istatistikleri
check kısıtlaması
FOREIGN key kısıtlaması
İle çalışırken tempdb, collate yan tümcesi içeren bir database_defaultgeçici bir tablodaki bir sütun harmanlama yerine bağlantı için geçerli kullanıcı veritabanı harmanlama varsayılan kullanacağını belirtmek için seçenek tempdb.
Harmanlamalar ve metin sütunları
Ekleme veya güncelleştirme değerleri bir text, harmanlama veritabanının varsayılan harmanlama kod sayfasından farklı sütun. SQL Serverörtülü değerleri sütun harmanlama için dönüştürür.
Harmanlamalar ve tempdb
Tempdb veritabanı her zaman inşa edilmiş SQL Serverbaşlatılır ve aynı varsayılan harmanlama olarak sahip modeli veritabanı. Bunun tipik örneği varsayılan harmanlama aynıdır. Bir kullanıcı veritabanı oluşturmak ve daha bir farklı varsayılan harmanlama belirtme modeli, daha bir farklı 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 oluşturulan farklı alfabe demektir.
Bu alfabe bir uyuşmazlıkla ilgili sorunların veritabanları kullanıcı tanımlı ve sistem veritabanı nesneleri yol açabilir. Örneğin, örneğini SQL Serverkullandığı Latin1_General_CS_AS harmanlama ve aşağıdaki deyimleri yürütme:
CREATE DATABASE TestDB COLLATE Estonian_CS_AS;
USE TestDB;
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, Col1 nchar );
Bu sistemde, tempdb veritabanı kod sayfası 1252, Latin1_General_CS_AS harmanlama kullanır ve TestDBve TestPermTab.Col1kullanmak Estonian_CS_ASharmanlama kod sayfası 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 veritabanı kullanır Latin1_General_CS_AS harmanlama, ve TestDBve TestTab.Col1kullanmak Estonian_CS_ASharmanlama. Örneğin:
SELECT * FROM TestPermTab AS a INNER JOIN #TestTempTab on a.Col1 = #TestTempTab.Col1;
Çünkü tempdb default Sunucu harmanlaması kullanır ve TestPermTab.Col1kullandığı farklı harmanlama, SQL Server bu hatayı döndürür: "'Estonian_CS_AS' arasında harmanlama çakışma çözülemiyor ve 'Latin1_General_CI_AS_KS_WS' eşit işlem."
Hatayı önlemek için aşağıdaki seçenekleri birini kullanabilirsiniz:
Geçici tablo sütun kullanıcı veritabanının varsayılan harmanlama kullanmaması belirtmek tempdb. Eğer bu sistem gerekli Bu çoklu veritabanları, benzer şekilde biçimlendirilmiş tablolarla ç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 #TestTempTabsütun:
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar COLLATE Estonian_CS_AS );
Ayrıca bkz.
Kavramlar
Ayarlama veya Sunucu harmanlaması değiştirme