2011-09-06 84 views
15

在SQL Server中可以運行什麼T-SQL命令來查找表或數據庫的字符集?確定表/數據庫的字符集?

編輯: Server版本:Microsoft SQL Server的2008 R2(RTM) - 10.50.1600.1(X64)

+0

運行SQL Server Management Studio並運行'Select @@ Verion'來檢查SQL Server的版本。 –

+0

請參閱'DATABASEPROPERTYEX'和'SERVERPROPERTY' – Lijo

回答

20

可以使用檢查版本

SELECT @@VERSION; 

這是9.00或更高,則可以檢查使用

SELECT collation_name FROM sys.columns 
WHERE name = 'column name' 
AND [object_id] = OBJECT_ID('dbo.table name'); 

以及數據庫使用

一列的排序規則
SELECT collation_name FROM sys.databases 
WHERE name = 'database name'; 

如果它是< 9.0那麼您使用的是SQL Server 2000或更低版本。對於2000年我相信你可以檢查類似的列(例如syscolumns.collationid列)。

8

要檢查的SQL Server的排序規則在SQL Server Management Studio中運行這個(把你的數據庫名稱在適當的地方)

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation; 

注意整理設置可以設置每個級別

服務器

SELECT SERVERPROPERTY('Collation') as ServerCollation 

數據庫

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation; 

柱(SQL Svr的2005或更高)

Select TABLE_NAME, COLUMN_NAME, Columns.COLLATION_NAME 
From INFORMATION_SCHEMA.COLUMNS 

SELECT name, collation_name 
FROM syscolumns 
WHERE OBJECT_ID IN 
(
    SELECT OBJECT_ID 
    FROM sysobjects 
    WHERE type = 'U' 
    AND name = 'TableNameGoesHere' 
) 
AND name = 'ColumnNameGoesHere' 
+0

我收到空作爲響應。這是什麼意思? – shealtiel

+0

您是否在查詢中放入了適當的數據庫名稱? –

+0

'sys.columns'和'sys.objects'無效

12

的字符集取決於列的數據類型(比SQL Svr的2005以下)。你可以使用什麼樣的使用此SQL數據庫中的列以及排序規則的字符集的想法:

select data_type, character_set_catalog, character_set_schema, character_set_name, collation_catalog, collation_schema, collation_name, count(*) count 
from information_schema.columns 
group by data_type, character_set_catalog, character_set_schema, character_set_name, collation_catalog, collation_schema, collation_name; 

如果它使用默認的字符集,CHARACTER_SET_NAME應ISO_1(ISO 8859- 1)用於char和varchar數據類型。由於nchar和nvarchar以UCS-2格式存儲Unicode數據,因此這些數據類型的character_set_name是UNICODE。