определение набора символов таблицы / базы данных? - PullRequest
17 голосов
/ 06 сентября 2011

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

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

Ответы [ 3 ]

22 голосов
/ 06 сентября 2011

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

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 году вы можете проверить похожие столбцы (например, <code>syscolumns.collationid для столбцов).

13 голосов
/ 10 мая 2012

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

9 голосов
/ 06 сентября 2011

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