确定表/数据库的字符集?

时间:2011-09-06 14:00:19

标签: sql-server sql-server-2008-r2 collation

可以运行哪些T-SQL命令来查找SQL Server中的表或数据库的字符集?

编辑: 服务器版本:Microsoft SQL Server 2008 R2(RTM) - 10.50.1600.1(X64)

3 个答案:

答案 0 :(得分:22)

您可以使用

查看版本
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列。)

答案 1 :(得分:13)

字符集取决于列的数据类型。您可以了解使用哪些字符集用于数据库中的列以及使用此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;

如果它使用默认字符集,则char_和varchar数据类型的character_set_name应为iso_1(ISO 8859-1)。由于nchar和nvarchar以UCS-2格式存储Unicode数据,因此这些数据类型的character_set_name是UNICODE。

答案 2 :(得分:9)

检查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

列(低于SQL Svr 2005)

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