powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите девушке
25 сообщений из 55, страница 2 из 3
помогите девушке
    #32024615
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не Рыцарь. Мне просто сейчас делать нечего.

Olga, Вам можно позавидовать. По кол-ву откликов Вы вполне можете соперничать c соседней волной душевного стриптиза под названием "Достал SQL". Так что в плане фидбэка женский ник, безусловно, эффективен. Особенно по весне.
Теперь по делу. 1.Советы относительно AnsiToOEM годятся только для 6.5 и раньше, когда bcp юзала DBLib. 2.Люди, говорящие про collation, по-моему, вообще не понимают, чем nchar отличается от char. 3.Я тоже не понимаю одну вещь: почему возник этот вопрос, п.ч. на моей памяти DTS всегда конвертила таблицы из одной кодировки в другую корректно. Единственный глюк был в 7.0, когда данные переносились нормально, а DTS Object Transfer дурил, невзирая на опцию Auto Translate. Но это было пофиксено еще в SP2 к семерке, не говоря уже о 2000. Вы интересуетесь чисто абстрактно или действительно во что-то уперлись?
...
Рейтинг: 0 / 0
помогите девушке
    #32024630
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Завидовать кол-ву откликов это несовсем логично. Лично меня интересует только качество получаемых ответов. Задача вцелом решается стороним приложением без проблем и вообщем не стоит и выеденного яйца. Но у меня проблема в том что необходимо организовать репликацию с N серверов на которых базы находятся в кодировке 866 (вернее хранятся), а целевая база должна быть в кодировке 1251. Выполнить репликацию, а затем транслировать целевую базу в другую кодировку очень проблематично всилу ее большого объёма и оганичений по ресурсам сервера (железа). Всилу этого интересует вопрос каким образом пересоздать базы на источниках при помощи DTS (ведь его можно запускать ночью по эаданию когда машины свободны), но в нужной кодировке. Делать это при помощи стороннего проиложения очень непросто всилу наличия ещё больших железных проблем на других сереверах и в сети.
...
Рейтинг: 0 / 0
помогите девушке
    #32024642
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> пересоздать базы на источниках при помощи DTS (ведь его можно запускать ночью по эаданию когда машины свободны), но
>> в нужной кодировке...

Немного я не уловил суть высказывания - вы это каждой ночью собираетесь проделывать? Или же все-таки - 1 раз превернете кодировку на источниках и забудете про эти "проблемы"?
Если второе, то - как вариант:
- создаете пустую БД с нужной вам кодировкой;
- скриптуете все объекты в "старой" базе (например, тем же DMO);
- этими скриптами создаете нужную структуру в "новой" базе;
- грузите данные из "старой" базы в "новую" (хоть через Linked Servers).

З.Ы. Подозреваю, что "Copy Database Wizard" - делает то же самое... но как известно - "сапог в бою надежней"...
© "В бой идут - одни старики".
...
Рейтинг: 0 / 0
помогите девушке
    #32024643
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это необходимо делать регулярно -по расписанию запускать DTS
...
Рейтинг: 0 / 0
помогите девушке
    #32024647
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дед Маздай
> 1.Советы относительно AnsiToOEM годятся только для 6.5 и раньше, когда bcp юзала DBLib.
Можно узнать почему? Мне кажется AnsiToOem (или, простите, CharToOem в Win32) не относится к той или иной версии SQL Server - это просто функции перекодировки из ANSI кодировки в OEM.

> 2.Люди, говорящие про collation, по-моему, вообще не понимают, чем nchar отличается от char.
И здесь тоже, просветите сирых и убогих про collation. Потому что про юникодную кодировку olga ни слова не говорила.

2 Olga
Насчёт пресловутой OemToChar признаюсь, что-то не получилось - не смог я пока заставить её в VBScriptе работать, а времени разбираться нет пока.
Всё-таки попробуйте просто втупую перегнать Copy Database Wizardом в другую базу с установленным нужным collation.
...
Рейтинг: 0 / 0
помогите девушке
    #32024649
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это Windows Collation - и выгрузка данных через bcp и через что угодно выгружат их в кодировке 1251, но отображает их некорректно ибо иммено так они и хранятся в базе. Если открыть текстовый файл и указать редактору кодировку 866 - отобразится всё корректно. Но меня интересует каким образом можно указать DTS-у преобразовать кодировку данных при преносе в другую базу?
...
Рейтинг: 0 / 0
помогите девушке
    #32024658
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно на выгруженные данные натравить перекодировщик из OEM в ANSI.
Но как это сделать на лету в DTS я пока не знаю.
Продолжим изыскания чуть позже.
...
Рейтинг: 0 / 0
помогите девушке
    #32024660
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это надо делать налету и я тоже не знаю как
...
Рейтинг: 0 / 0
помогите девушке
    #32024662
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> выгрузка данных через bcp и через что угодно выгружат их в кодировке 1251...
>> Если открыть текстовый файл и указать редактору кодировку 866 - отобразится всё корректно...

Чем дальше я все это читаю, тем больше ничего не понимаю...


"Выгрузка через bcp" - ничего не может сказать о хранимых данных, т.к. bcp суть утилита для командной строки, а у мелко-мягких все эти утилиты выводят все на STDOUT - именно в кодировке 866 ("обратная совместимость" называется).
"через что угодно" - это как правило, на практике, различные "клиенты", цепляющиеся к серверу по ODBC, или OLEDB - так у них у всех параметры драйвера по-умолчанию установлены в - Perform translation for character data = Yes (он же - "AutoTranslate=Yes" в ConnectionString), т.е. - все что отдается клиенту уже должно быть перевернуто в 1251.

В одном из этих случаев - ваши выгруженные файлы должны читаться редактором как 866, а в другом - как 1251, но к кодировке хранения - это не имеет никакого отношения...

Кстати, по поводу параметра AutoTranslate - может попробуете "натравить" DTS на ODBC-источник, а уже в нем (источнике) - переключите пару раз этот параметр в Yes/No, да и будете знать ответ - работает оно так как надо, или нет?

(у меня просто сейчас "под боком" нет 7-рки с DTS-ом).
...
Рейтинг: 0 / 0
помогите девушке
    #32024665
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ODBC стоит ANSI to OEM, а надо наоборот и кроме того к кодировке хранения (Cyrillic_General_Bin)- это не имеет никакого отношения...
...
Рейтинг: 0 / 0
помогите девушке
    #32024673
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно узнать как туда данные были запихнуты в 866 кодировке?
...
Рейтинг: 0 / 0
помогите девушке
    #32024677
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложение использует именно эту (866)кодировку и хранит их в базе именно в 866-ой кодировке (OEM)
...
Рейтинг: 0 / 0
помогите девушке
    #32024713
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, чем больше я вас читаю, тем больше убеждаюсь, что либо вы топчетесь вокруг пустой проблемы, которая яйца ломаного не стоит, либо я чего-то не понимаю в этой жизни. Последнее вероятней. Тем не менее рискну изложить свое видение на проблему, как я ее понимаю, и, соответственно, как бы я ее стал решать.
Итак, забудем про кодировки. Есть сервера А и Б. С А нужно отреплицировать данные на Б, применив к ним по дороге какое-то пользовательское преобразование, которое можно описать в терминах VBScript или JavaScript.
На сервере А создаем новую публикацию, предварительно отметив Show advanced options. На этапе Transform Published Data говорим Yes. Все остальное - обычным чередом. После этого из контекстного меню созданной публикации выбираем Define transformation of published data. В кач-ве назначения выбираем сервер Б и ту базу на нем (ббб), куда идет тиражирование. На следующем этапе определяем трансформации публикуемых данных идентично DTS, напр., DTSDestination("CompanyName") = UCase(DTSSource("CompanyName")). Здесь вы прописываете свое хитрое преобразование. Сохраняем получившийся DTS-пакет ааа как локальный на дистрибуторе. Создаем подписку (допустим, push), отмечая Show advanced options. Выбираем сервер-подписчик (Б) и базу на нем (ббб). На этапе Specify DTS Package выбираем пакет ааа на дистрибуторе. Абзац.
...
Рейтинг: 0 / 0
помогите девушке
    #32024732
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед, а ты молодец
Только напиши что в DTS Package надо написать.
UCase не канает
Я вот уже долго вожусь - проблема заинтересовала. Таки смоделировал ситуацию: в таблице лежит значение в 866. Как его перекодировать в пекедже пока не знаю - там VB(J)Script, и не все функции работают из WinAPI.
...
Рейтинг: 0 / 0
помогите девушке
    #32024736
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VBS есть
"AscW is provided for 32-bit platforms that use Unicode characters. It returns the Unicode (wide) character code, thereby avoiding the conversion from Unicode to ANSI."

Поможет ?
...
Рейтинг: 0 / 0
помогите девушке
    #32024738
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я всё-таки победил через DTS! ))
Чувствовал кое-чем, что истина где-то рядом.
В общем идея такая. Нужно сделать две Transform Data Task. Первая - из исходной базы в текстовый файл, файл обозвать ANSI(!). Вторая - из текстового файла в базу куда надо, но сказать, что файл (тот же самый, разумеется) уже OEM(!). Кроме того, связать обе этих задачи Workflow по Completion, а то наверно первая задача не успевала файл закрыть - вторая падала.
Вот )) Горд как лев. Всё делается за две минуты.
С наступающим 8 марта, olga.
...
Рейтинг: 0 / 0
помогите девушке
    #32024761
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо я все-таки чего-то не понимаю, либо Вы по-прежнему пытаетесь изыскать самый дорогой способ определения постоянной Планка.
Итак, вспомним про перекодировки.

"Только напиши что в DTS Package надо написать. UCase не канает...."
Я почти уверен, что в пакете ничего писать не надо. DTS корректно определяет кодовые страницы источника и назначения и соответствующим образом преобразует символьные данные при переносе. Поскольку проверять мне это сейчас в лом, то рассмотрим на всякий пожарный запасную ситуацию:

"Как его перекодировать в пекедже пока не знаю - там VB(J)Script, и не все функции работают из WinAPI."
Оберните вызов oemtoansi в СОМ-объект, зарегистрируйте на сервере и дерните из VBScript. Все равно будет быстрее, чем Ваше преобразование через промежуточный текстовый файл.

"Дед, а ты молодец..."
Спасибо за лестный отзыв, только Ваше мнение меня... Ну, примерно, как Вас UCase.
...
Рейтинг: 0 / 0
помогите девушке
    #32024762
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт, склероз. Всех здешних девушек с праздником. Заходите почаще - я, может, побреюсь и галстук повяжу. Хотя нет, конечно, это вряд ли.
...
Рейтинг: 0 / 0
помогите девушке
    #32024816
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в свою очередь оценил Ваш ответ, уважаемый Дед.

>Я почти уверен, что в пакете ничего писать не надо.
Вот в этом "почти" и всё дело.

>DTS корректно определяет кодовые страницы источника и назначения и соответствующим образом преобразует символьные данные при переносе.
Каким, простите, образом DTS определит, что там 866, а не 1251? Чем они отличаются с точки зрения нулей и единичек?

>Поскольку проверять мне это сейчас в лом,
А надо было бы Вам проверить, иначе получается пустой трёп.

Пожарная ситуация с обёртыванием функции WinAPI в COM-объект работает, но только это надо уметь делать, да и времени это потребует больше, чем мой убогий способ конвертации через текстовый файл.
Извините, что потревожил Вашу тонкую натуру (судя по ссылке в данном постинге на постоянную Планка). Постараюсь больше не нарушать Ваше спокойствие и, конечно же, не высказывать своё мнение о Вас. Ещё раз прошу простить меня, недостойного.
...
Рейтинг: 0 / 0
помогите девушке
    #32024833
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 KonstN на:
>> Пожарная ситуация с обёртыванием функции WinAPI в COM-объект работает, но только это надо уметь делать, да и
>> времени это потребует больше, чем мой убогий способ конвертации через текстовый файл...

Насчет это надо уметь делать за всех не могу поручиться, но ей-Богу, для тех кто умеет - времени это требует не больше, чем писать посты в эту раздувшуюся ветку...

(я только сейчас начал догадываться, в чем соб-с-но, "проблема", да и то - не совсем уверен до конца... как в том фильме: "Так это что - Ленинград??!! Вот это вот - город на Неве??!!", т.е. - данные изначально попадали на сервер в кодировке 866 и никакие Collations тут не причем, т.е. сервер даже и не подозревал о том, что хранит что-то, кроме двоичных кодов альтернативной кодировки?)

М-да... силен русский народ - в выдумывании себе трудностей, и последующем их преодолении...
...
Рейтинг: 0 / 0
помогите девушке
    #32024849
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Collations тут е действительно не причем и сервер даже и не подозревает о том, что хранит что-то, кроме двоичных кодов альтернативной кодировки. И я очень рада что это дошло. И что хотелось бы спросить ещё, написав sql-процедуру, которая получает на входе поле в 866-й перекодирует его в 1251-так это как можно подвязать эту процедуру в DTS, ибо в написании скриптов на VB я не сильна может кто поможет дельным советом?
...
Рейтинг: 0 / 0
помогите девушке
    #32024872
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8 марта минуло и снова ... истиная природа мужского лицемерия и эгоизма
...
Рейтинг: 0 / 0
помогите девушке
    #32024873
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2olga
IMHO KonstN показал вам очень красивый способ решения(кстати лично от меня спасибо ему за это) без каких-либо дополнительных функций конвертации ANSI<->OEM.
...
Рейтинг: 0 / 0
помогите девушке
    #32024893
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory
Спасибо, Glory. Действительно приятна твоя оценка - IMHO, ты имеешь здесь наибольший коэффициент полезности постингов.
2olga
Вам написать компонент-wrapper для функции OemToChar?
А сарказм ни к чему, если Вы просите помощи.
...
Рейтинг: 0 / 0
помогите девушке
    #32024894
sysop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 KonstN
А кто по Вашему в этом раунде слабое звено?
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите девушке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]