Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с collation, cannot resolve collation...  
V
    Опции темы
Lunatikus
Дата 8.11.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



При переносе клиента с тестового компьютера вне сети в реальную сеть и на релаьный сервер, при создании ##таблицы и попытке записать туда данные выдается ошибка невозможности приведения типов collation. Как пр исоздании таблицы явно указать collation?
Код

CREATE TABLE ##t1(pole1 varchar(30) NOT NULL,pole2 varchar(100) NULL,pole3 float NULL)

пожалуйста,помогите,я в ступоре  smile  в инф. базе просто написано, для чего,а синтаксиса в различных случаях нет,только общий
http://technet.microsoft.com/ru-ru/library/ms184391.aspx


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Servena
Дата 8.11.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Попробуй это сделать при создании БД:
Код

CREATE DATABASE myDB
COLLATE Traditional_Spanish_CI_AS

Ссылка на все названия в МСДН:
ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.SQL.v2005.en/ssmprog3/html/eee6bae6-0c15-4959-9cd8-c8fe7c440bf0.htm
PM MAIL   Вверх
Lunatikus
Дата 8.11.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



база создана и заполнена, у нее есть свой коллэйт,вот под него мне надо подстроить свою временную таблицу.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Servena
Дата 8.11.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



А если попробовать создать БД с твоей таблицей с такой же Коллейт что и в той БД куда ты будешь переносить? А потом уже перенести.
Или изменить коллейт у себя
Код

CREATE DATABASE myDB
COLLATE Traditional_Spanish_CI_AS

а потом перенести таблицу?
PM MAIL   Вверх
Lunatikus
Дата 8.11.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



у меня ошибка вылетате только при создании временной глобальной таблицы, в которую я переношу данные выборкой из базы base1 у нее есть известный коллейт(при простых выборках и инсертах в базу никаких проблем).При создании временной таблицы я указываю текстовым полям COLLATE database_default. И все равно пр ипопытке инсерта выборки данных из этой же базы base1 происходит конфликт по collate...
=((((

Это сообщение отредактировал(а) Lunatikus - 8.11.2007, 17:03


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
SergKO
Дата 8.11.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



tempdb, в которой создается временная таблица имеет другую схему сопоставления, чем Ваша БД. А tempdb имеет схему сопоставления сервера. Выход единственный - переустановка SQL сервера с указанием требуемой схемы сопоставления. Вроде, есть утилита, которая изменяет collation, но, по сути, она неявно переустанавливает сервер.

Хотя, есть вариант, явно указывать collation при вставке, но, по-моему, это не стоит делать.

Это сообщение отредактировал(а) SergKO - 8.11.2007, 20:11
PM MAIL   Вверх
Lunatikus
Дата 9.11.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



я решил проверить, что будет если я не буду делать временную таблицу ,А просто сделаю запрос на выборку того,что надо вставлять в нее. В ней несколько left join'ов. Результат-та же ошибка конфликта collation...т.е. проблема не в ##таблице. Или при конструкции ADOQuery.open все равно создается временная таблица? К тому же парадокс в том,что в этом запросе используются все таблицы одной базы и у меня еще полно запросов, которые спокойно выполняются с таблицами из этой же базы.
Вот,на всякий случай приведу конфликтный запрос(на тестовом отдельном компе-сервере он выполнялся без проблем):
Код

DF.ADOQ14_1.SQL.Append(' SELECT d.status ,d.univer ,u.cod_artic as art,');
DF.ADOQ14_1.SQL.Append('        ''plann1''=CASE WHEN (d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)- '); //на полях plann1 и plann не стоит заострять внимание
DF.ADOQ14_1.SQL.Append('                   ROUND(d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1))>=0.8 ');
DF.ADOQ14_1.SQL.Append('                   THEN (ROUND(d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1)+1)*');
DF.ADOQ14_1.SQL.Append('                   (CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END) WHEN  (d.zayavka/(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND(d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN a.EDN_V_UPAK ELSE 1 END),0,1))<=0.2 THEN ROUND(d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN a.EDN_V_UPAK ELSE 1 END),0,1)*(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END) ');
DF.ADOQ14_1.SQL.Append('                   WHEN  ((d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND(d.zayavka/');
DF.ADOQ14_1.SQL.Append('                   (CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1))<0.8 AND (d.zayavka/(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND(d.zayavka/(CASE WHEN a.EDN_V_UPAK>0 THEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK ELSE 1 END),0,1))>0.2) THEN CASE WHEN (d.zayavka/(CASE WHEN u.kratn>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN u.kratn ELSE 1 END)-ROUND(d.zayavka/(CASE WHEN u.kratn>0 THEN u.kratn ');
DF.ADOQ14_1.SQL.Append('                   ELSE 1 END),0,1))>=0.5 THEN (ROUND(d.zayavka/(CASE WHEN u.kratn>0 THEN u.kratn ');
DF.ADOQ14_1.SQL.Append('                   ELSE 1 END),0,1)+1)*(CASE WHEN u.kratn>0 THEN u.kratn ELSE 1 END) ELSE ');
DF.ADOQ14_1.SQL.Append('                   ROUND(d.zayavka/(CASE WHEN u.kratn>0 THEN u.kratn ELSE 1 END),0,1)*(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   u.kratn>0 THEN u.kratn ELSE 1 END) END END, ');
DF.ADOQ14_1.SQL.Append('        ''plann''=CASE WHEN ((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)- ');
DF.ADOQ14_1.SQL.Append('                   ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1))>=0.8 ');
DF.ADOQ14_1.SQL.Append('                   THEN (ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1)+1)*');
DF.ADOQ14_1.SQL.Append('                   (CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END) WHEN  ((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN a.EDN_V_UPAK ELSE 1 END),0,1))<=0.2 THEN ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN a.EDN_V_UPAK ELSE 1 END),0,1)*(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END) ');
DF.ADOQ14_1.SQL.Append('                   WHEN  (((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND((d.zayavka/u.[коэффициент пересчета])/');
DF.ADOQ14_1.SQL.Append('                   (CASE WHEN a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END),0,1))<0.8 AND ((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK>0 THEN a.EDN_V_UPAK ELSE 1 END)-ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN a.EDN_V_UPAK>0 THEN ');
DF.ADOQ14_1.SQL.Append('                   a.EDN_V_UPAK ELSE 1 END),0,1))>0.2) THEN CASE WHEN ((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN u.kratn>0 ');
DF.ADOQ14_1.SQL.Append('                   THEN u.kratn ELSE 1 END)-ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN u.kratn>0 THEN u.kratn ');
DF.ADOQ14_1.SQL.Append('                   ELSE 1 END),0,1))>=0.5 THEN (ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN u.kratn>0 THEN u.kratn ');
DF.ADOQ14_1.SQL.Append('                   ELSE 1 END),0,1)+1)*(CASE WHEN u.kratn>0 THEN u.kratn ELSE 1 END) ELSE ');
DF.ADOQ14_1.SQL.Append('                   ROUND((d.zayavka/u.[коэффициент пересчета])/(CASE WHEN u.kratn>0 THEN u.kratn ELSE 1 END),0,1)*(CASE WHEN ');
DF.ADOQ14_1.SQL.Append('                   u.kratn>0 THEN u.kratn ELSE 1 END) END END, ');
DF.ADOQ14_1.SQL.Append('        a.rez_kolch as ost,a.kon_kolch as ost2,a.TIP_TOVR as nal,a.ID_SCLAD as sclad,e.[в каталоге] as stand,s.hand,s.com ,m.kolc_predm '+'as schet,u.kratn as kr,a.EDN_V_UPAK as fas ');

DF.ADOQ14_1.SQL.Append(' FROM (SELECT d1.status ,d1.univer ,d1.zayavka ');
DF.ADOQ14_1.SQL.Append('       FROM  '+deal[NomSelectFilial]+' d1 ');
DF.ADOQ14_1.SQL.Append('       WHERE d1.data=:data1 AND d1.zayavka>0 AND d1.univer<=''153000-AO'') d ');
DF.ADOQ14_1.SQL.Append(' LEFT JOIN (SELECT u1.Универартикул ,count(u1.Универартикул) cont,max(u1.COD_ARTIC) as COD_ARTIC,max(u1.[Коэффициент пересчета]) as [Коэффициент пересчета],'+'max(u1.[кратность]) as kratn ');  //по ходу именно с первым слиянием возникает ошибка: елси просто делать выборку без слияний, все без ошибок
DF.ADOQ14_1.SQL.Append('            FROM '+univer+' u1 WHERE u1.[Пред-во]=''МДМ(Москва)'' ');
DF.ADOQ14_1.SQL.Append('            GROUP BY u1.Универартикул) u  ON d.univer=u.Универартикул AND u.cont=1 ');
DF.ADOQ14_1.SQL.Append(' LEFT JOIN '+sp_artc_H002+' a ON a.COD_ARTIC=u.COD_ARTIC AND a.ID_SCLAD IN (2,31,35,37) AND a.TIP_TOVR<>''НЕТ'' ');
DF.ADOQ14_1.SQL.Append(' LEFT JOIN '+edin_spisok+' e ON e.Артикул=u.COD_ARTIC ');
DF.ADOQ14_1.SQL.Append(' LEFT JOIN '+schet[NomSelectFilial]+' s ON s.art=u.cod_artic AND s.auto=:data2 AND NOT u.cod_artic is NULL');
DF.ADOQ14_1.SQL.Append(' LEFT JOIN '+scl_move_H002+' m ON m.NAME_PREDM=u.cod_artic AND (TYPDOCM_PR=''C'' OR TYPDOCM_PR=''С'') AND VID_DOC=''ФИЛИАЛ'' ');
DF.ADOQ14_1.SQL.Append('                                  AND NUMDOCM_PR IN ('+nom_schet_string+') ');
DF.ADOQ14_1.Parameters.ParamByName('data1').Value:=strtodate(formatdatetime('dd.mm.yyyy',strtodate(SG.Cells[0,SG.row])-srok_podachi[NomSelectFilial]));
DF.ADOQ14_1.Parameters.ParamByName('data2').Value:=strtodate(SG.Cells[0,SG.row]);
DF.ADOQ14_1.open;



--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Servena
Дата 9.11.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Как это можно воспроизвести?
А если все разбить на части:
т.е. оставить СЕЛЕКТ * и джоины? Нужно как то локализовать ошибку, ато так и не понятно при какой операции она возникает?
Или без языка программирования в СКЛ менеджере?


PM MAIL   Вверх
Lunatikus
Дата 9.11.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



SergKO, у меня сервер и все базы на нем,судя по параметрам, имеют один тип collation

Добавлено через 2 минуты и 7 секунд
Servena, да ,ты прав, локализовать надо. Без джойнов ошибки нет. Она появляется при первом слиянии. Но мне это ни о чем не говорит =( синтаксически то все верно.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Lunatikus
Дата 9.11.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



прошу прощенья,ошибся. Ошибка возникает при слияние с sp_artc_H002


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Servena
Дата 9.11.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



А к твоему серверу можно через СКЛ менеджер подключиться с вне?
PM MAIL   Вверх
Lunatikus
Дата 9.11.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



у меня нет сервера,у меня есть только доступ к нему через учетку + я не могу поставить у себя на компе менеджер =( могу только через свою учетку с помощью проги. 
Блин,я вообще даже не представляю,в каком место МОЖЕТ БЫТЬ проблема с коллэйтом =( может, это изза того что все слияния , начиная со второго идут через сравнение данных не основного набора и сливаемого а первого подливаемого(univer) и нового подливаемого?


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Servena
Дата 9.11.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



А вообще, ты пробовал выполнить этот запрос с СКЛ менеджера?
PM MAIL   Вверх
Lunatikus
Дата 9.11.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 2
Всего: 6



проверил,нет,не изза этого

Добавлено через 33 секунды
Servena, да,все запросы на тестовом компе проверял в менеджере.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
boevik
Дата 9.11.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



У каких то из этих полей 
Код

a.COD_ARTIC=u.COD_ARTIC AND a.ID_SCLAD IN (2,31,35,37) AND a.TIP_TOVR<>''НЕТ''

collate не совпадате. 
Скорее всего у слова ''НЕТ''.

Можно использовать следующий синтакс:
Код

a.COD_ARTIC=u.COD_ARTIC AND a.ID_SCLAD IN (2,31,35,37) AND a.TIP_TOVR collate database_default<>''НЕТ'' collate database_default



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.