Конфликты схем сопоставления (collation) в Microsoft SQL Server 2000
Категория реферата: Рефераты по информатике, программированию
Теги реферата: онегин сочинение, конспекты по литературе
Добавил(а) на сайт: Тигран.
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата
При соединениях JOIN или UNION с таблицами из базы с другой схемой сопоставления.
При работе с временными таблицами в контексте рабочей базы данных. Временные таблицы создаются в базе TempDB, где, как было уже отмечено, используется серверная схема сопоставления, и символьные данные в этом случае корректно сравнить не удается.
Самый общий случай – когда пытаются сравнить значения символьных полей разных схем сопоставления (даже в пределах одной таблицы или базы данных).
Сообщение об ошибке говорит само за себя – сервер не в состоянии сравнить символы из различных схем сопоставления. Решение напрашивается следующее: привести данные к одной схеме collation.
Если в запросах к БД OLD_BASE идет работа с временными таблицами, либо переменными табличного типа, то при их создании надо явно указывать нужную схему collation для каждого символьного поля. Например:
create table #t (f1 int not null, f2 char(5) collate SQL_Latin1_General_CP1251_CI_AS, f3 varchar(150) collate SQL_Latin1_General_CP1251_CI_AS) |
Далее, выполнить соединение между полями с различными схемами напрямую нельзя. Соответственно, нельзя сделать JOIN или UNION для таблиц с различными схемами collation из одной или разных баз. Иначе опять будет выдано сообщение об ошибке. В этом случае объединяемые поля также необходимо привести к одной схеме при помощи преобразования схемы сопоставлений. Допустим, соединение таблиц OLD_BASE и NEW_BASE можно выполнить так:
select * from NEW_BASE.dbo.Report as A join OLD_BASE.dbo.Report as B on A.char_key = B.char_key collate Cyrillic_General_CI_AS |
а запрос на объединение так:
select int_data, date_data, char_key from NEW_BASE.dbo.Report union all select int_data, date_data, char_key collate Cyrillic_General_CI_AS from OLD_BASE.dbo.Report |
Преобразование схем сопоставления полей можно делать в различных вариантах соединений. Но писать каждый раз подобные запросы, с явным указанием схемы collation – не самое лучшее времяпровождение. Тогда можно рассмотреть вариант приведения всех баз к единой схеме – серверной. Для изменения схемы collation, используемой в БД по умолчанию, служит команда
alter database OLD_BASE collate Cyrillic_General_CI_AS |
Однако это еще не изменит схему для символьных полей в базе. Менять их нужно либо вручную через Enterprise Manager, либо написать подобный запрос:
alter table Report alter column char_key char(5) collate Cyrillic_General_CI_AS |
При этом имеется ряд ограничений – нельзя изменить схемы для вычисляемых полей, индексированных полей, полей с ограничением CHECK или внешних ключей. Необходимо вначале удалить их, а после изменения схемы сопоставления заново создать. Так что работа здесь может быть проделана большая и серьезная.
Рекомендуем скачать другие рефераты по теме: учебный реферат, понятие культуры.
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата