Определение набора символов таблицы / базы данных?

Какую команду T-SQL можно выполнить, чтобы найти набор символов таблицы или базы данных в SQL Server?

изменить: Версия сервера: Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1600.1 (X64)

3 ответа

Вы можете проверить версию, используя

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 для столбцов).

Набор символов зависит от типа данных столбца. Вы можете получить представление о том, какие наборы символов используются для столбцов в базе данных, а также сопоставления, используя этот 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;

Если используется набор символов по умолчанию, имя_символа_символа должно быть iso_1 (ISO 8859-1) для типов данных char и varchar. Поскольку nchar и nvarchar хранят данные Unicode в формате UCS-2, имя_символа_символа для этих типов данных является UNICODE.

Чтобы проверить сортировку 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'
Другие вопросы по тегам