Определение набора символов таблицы / базы данных?
Какую команду 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'