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

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

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

Ответ 1

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

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';

Если это & ​​lt; 9.0, то вы используете SQL Server 2000 или ниже. В 2000 году я считаю, что вы можете проверить аналогичные столбцы (например, syscolumns.collationid для столбцов).

Ответ 2

Набор символов зависит от типа данных столбца. Вы можете понять, какие наборы символов используются для столбцов в базе данных, а также для сопоставлений с использованием этого 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 хранят данные Unicode в формате UCS-2, для этих типов данных имя_имя_имя_имя_собывает UNICODE.

Ответ 3

Чтобы проверить, что Collation 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'