Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
Скопировал базу на другой SQL SRVER 2000 на другой сервер вместе c DTS пакетами, в которых из текстовых файлов импортировлись данные в том числе формата "1-12-2005", который старый сервер сохранял в поле datetime как 1 дек., а новый сервер стал сохранять как 12 янв.
На обоих машинах региональные настройки Russia.

При редактировании DTS пакетов при запуске preview и test дата отображается корректно, а при выполнении пакета сохраняется значение с переменой месяца и дня.

В чем может быть дело?
24 дек 05, 04:54    [2205951]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
Еще одно наблюдение:
Если выполнять DTS пакет из EM, то дата сохраняется корректно, а при запуске stored procedure с командой:
EXEC master..xp_cmdshell 'DTSRUN /S "ACCESS" /E /N "ИмпортДокументов"', no_output
уже ошибка

Может кто-нибудь разъяснить причину проблемы?
24 дек 05, 05:26    [2205957]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
aleks2
Guest
Dr. Den
Еще одно наблюдение:
Если выполнять DTS пакет из EM, то дата сохраняется корректно, а при запуске stored procedure с командой:
EXEC master..xp_cmdshell 'DTSRUN /S "ACCESS" /E /N "ИмпортДокументов"', no_output
уже ошибка

Может кто-нибудь разъяснить причину проблемы?


Учетная запись службы SQL-сервер имеет настройки Regional Settings отличные от ВАШЕЙ уч. записи. Если SQL-сервер запущен как LocalSystem, то настройки Regional Settings "по-умолчанию" для OC отличаются от настроек ВАШЕЙ уч. записи.
24 дек 05, 07:43    [2205980]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
Не уверен но посмотрите в БОЛ SET DATEFORMAT
24 дек 05, 07:49    [2205983]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
Всем спасибо за внимание к моей проблеме.

2aleks2:
Что такое Учетная запись службы SQL-сервер я понимаю:
Новый SQL-сервер запускается под той же учетной записью что и старый.

А вот что такое МОЯ учетная запись я не понял.
Под какой учетной записью выполняется DTS пакет если его запускать из процедуры вышеуказанным способом?

Я опыта DBA не имею (я им и не являюсь), поэтому не подскажите где смотреть Regional Settings для каждой учетной записи?

2Timon:
Спасибо за совет, но сначала я хочу понять причину проблему, а уж затем выбрать способ ее решения.
24 дек 05, 08:18    [2205996]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
aleks2
Guest
Dr. Den
Всем спасибо за внимание к моей проблеме.

2aleks2:
Что такое Учетная запись службы SQL-сервер я понимаю:
1) Новый SQL-сервер запускается под той же учетной записью что и старый.

А вот 2) что такое МОЯ учетная запись я не понял.
3) Под какой учетной записью выполняется DTS пакет если его запускать из процедуры вышеуказанным способом?

Я опыта DBA не имею (я им и не являюсь), поэтому не подскажите где смотреть Regional Settings для каждой учетной записи?

2Timon:
Спасибо за совет, но сначала я хочу понять причину проблему, а уж затем выбрать способ ее решения.


1) Хе-хе... ну и? Компутер то другой. А настройки Regional Settings локальны для компутера. Вот и думай.

2) Это та, под которой ты запустил EM.

3) Если из EM - под твоей, если EXEC master..xp_cmdshell - под уч. записью SQL-сервера.
24 дек 05, 10:07    [2206043]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
aleks2
Guest
где смотреть Regional Settings для каждой учетной записи

А войди интерактивно на комп под нужной уч. записью и смотри... в оба.
24 дек 05, 10:10    [2206045]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
Еще может быть.

Под какой учеткой таск в ДТС подключается к Вашему СКЛ серверу? Попробуйте поменять этой учётке Language.
24 дек 05, 10:14    [2206048]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
aleks2

1) Хе-хе... ну и? Компутер то другой. А настройки Regional Settings локальны для компутера. Вот и думай.

2) Это та, под которой ты запустил EM.

3) Если из EM - под твоей, если EXEC master..xp_cmdshell - под уч. записью SQL-сервера.

1) См. 1-ый пост:
Dr. Den
На обоих машинах региональные настройки Russia.

2) EM я запускал на новом сервере, соответственно под админовской учеткой соответственно с Regional Settings - Russia.
3) А вот тут для меня и неясности. Получается что запуская DTS из под ЕМ он корректно выполняется под учетной записью админа, а запуская через EXEC master..xp_cmdshell DTS выполняется некорректно под доменной учетной записью, при чем старый сервер под этой же учеткой выполнял пакет корректно.
Timon
Под какой учеткой таск в ДТС подключается к Вашему СКЛ серверу? Попробуйте поменять этой учётке Language.

Из вышеизложенного выходит что DTS выполнеяется под доменной учетной записью, под которой старый сервер срабатывает как положено, а новый нет.
27 дек 05, 04:22    [2211116]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
И еще один вопрос.
Можно ли при выполнении Transform Data Task нзависимо ни от каких настроек компьютера передавать дату из текстового файла с полем формата " 1-12-2005" в поле таблицы формата smalldatetime значение соответствующее 1 дек.2005?

Пробовал 3 способа:
1. Оригинальный через Copy Column (не прошел по вышеизложенным причинам).
2. ActiveX скрипт: превидение " 1-12-2005" к "20051201" - проблемы те же.
3. DateTime String: Вид источника "d-MM-yyyy", вид получателя "yyyyMMdd" - при пустом значении в исходнике DTS формирует дату "20000000" что приводит к ошибке.

Для себя вижу один способ - переносить в текстовое поле, а из него уже парсить до стандартного формата "yyyyMMdd", но это приводит к дополнительным нагрузкам на сервер и потери времени.

Есть идеи?
27 дек 05, 06:57    [2211140]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
andy st
Member

Откуда:
Сообщений: 802
Dr. Den

Есть идеи?

Server properties -> server settings -> default language for user
поставить english (или какой был на оригинальном сервере).
и рестартить сервис.
мне такое как-то помогло...
27 дек 05, 07:21    [2211153]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
andy st
Dr. Den

Есть идеи?

Server properties -> server settings -> default language for user
поставить english (или какой был на оригинальном сервере).
и рестартить сервис.
мне такое как-то помогло...

Смотрел. На обоих серверах стоит English
27 дек 05, 07:41    [2211169]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
andy st
Member

Откуда:
Сообщений: 802
Dr. Den
Смотрел. На обоих серверах стоит English

а чем сервера принципиально отличаются?
какие операционки стоят?
27 дек 05, 07:47    [2211173]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Какой язык по умолчанию задан для того ЛОГИНА на сервере под которым стартован сервис сервера?
27 дек 05, 07:56    [2211180]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
Всем спасибо. Ответ найден. Раньше просто не мог проверить. Надо было зайти на новый сервер под учетной записью сервиса SQL Server и установить для нее региональные настройки, что собственно Вы и предлагали сделать.

Осталось узнать насчет этого:
Dr. Den
Можно ли при выполнении Transform Data Task нзависимо ни от каких настроек компьютера передавать дату из текстового файла с полем формата " 1-12-2005" в поле таблицы формата smalldatetime значение соответствующее 1 дек.2005?

Пробовал 3 способа:
1. Оригинальный через Copy Column (не прошел по вышеизложенным причинам).
2. ActiveX скрипт: превидение " 1-12-2005" к "20051201" - проблемы те же.
3. DateTime String: Вид источника "d-MM-yyyy", вид получателя "yyyyMMdd" - при пустом значении в исходнике DTS формирует дату "20000000" что приводит к ошибке.

Для себя вижу один способ - переносить в текстовое поле, а из него уже парсить до стандартного формата "yyyyMMdd", но это приводит к дополнительным нагрузкам на сервер и потери времени.

Есть идеи?
27 дек 05, 08:42    [2211217]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
aleks2
Guest
convert(smalldatetime, '1-12-2005', 105)
27 дек 05, 09:10    [2211262]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
aleks2
convert(smalldatetime, '1-12-2005', 105)
Для этого необходимо держать текстовое поле в таблице получателе и апдейтить поле smalldatetime через указанную каманду. Я правильно понял? Если да, то вариацию этого способа я уже указал ранее как неоптимальную.
Dr. Den
Для себя вижу один способ - переносить в текстовое поле, а из него уже парсить до стандартного формата "yyyyMMdd", но это приводит к дополнительным нагрузкам на сервер и потери времени.
Мой вопрос в том, как обойтись без доп преобразований при выполнении данной задачи, т.е. средствами DTS напрямую: "исходник"->"получатель" без постобработок TSQL.
27 дек 05, 09:19    [2211283]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
aleks2
Guest
А что тебе мешает создать преобразование DateString в DTS?
27 дек 05, 13:32    [2212645]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
aleks2
А что тебе мешает создать преобразование DateString в DTS?
Если ты о DateTime String, то то, что мне мешает я описал выше:
Dr. Den
3. DateTime String: Вид источника "d-MM-yyyy", вид получателя "yyyyMMdd" - при пустом значении в исходнике DTS формирует дату "20000000" что приводит к ошибке.
28 дек 05, 01:46    [2214920]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
andy st
Member

Откуда:
Сообщений: 802
Dr. Den
aleks2
А что тебе мешает создать преобразование DateString в DTS?
Если ты о DateTime String, то то, что мне мешает я описал выше:
Dr. Den
3. DateTime String: Вид источника "d-MM-yyyy", вид получателя "yyyyMMdd" - при пустом значении в исходнике DTS формирует дату "20000000" что приводит к ошибке.

а что мешает написать такое преобразование
        ... = дата в каком-то виде
	if  isdate(...) then
			DTSDestination("Дата") = CDate( ...)
	else
		DTSDestination("Дата") = null
	end if
??
28 дек 05, 05:52    [2214959]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
andy st
Dr. Den
aleks2
А что тебе мешает создать преобразование DateString в DTS?
Если ты о DateTime String, то то, что мне мешает я описал выше:
Dr. Den
3. DateTime String: Вид источника "d-MM-yyyy", вид получателя "yyyyMMdd" - при пустом значении в исходнике DTS формирует дату "20000000" что приводит к ошибке.

а что мешает написать такое преобразование
        ... = дата в каком-то виде
	if  isdate(...) then
			DTSDestination("Дата") = CDate( ...)
	else
		DTSDestination("Дата") = null
	end if
??

Ну наверно BOL мешает:
BOL
CDate recognizes date formats according to the locale setting of your system. The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings.
28 дек 05, 06:06    [2214964]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
andy st
Member

Откуда:
Сообщений: 802
Dr. Den

Ну наверно BOL мешает:

isdate(...)
28 дек 05, 07:15    [2214992]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
andy st
Dr. Den

Ну наверно BOL мешает:

isdate(...)
Вы упорно мне доказываете, то чего сами не проверяли.
Разъясняю по полочкам:
1. isdate(" 1.12.2005") независимо от региональных настроек (English или Russia) выдаст True.
2. Cdate залезит в Regional Settings и если увидит English, то запишет на сервер дату 12 янв. 2005.
28 дек 05, 07:42    [2215019]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
andy st
Member

Откуда:
Сообщений: 802
Dr. Den
Вы упорно мне доказываете, то чего сами не проверяли.
Разъясняю по полочкам...

еще как проверял. ;)
собственно isdate относилось к
Dr. Den

"20000000"


а любый другие проблемы решаются преобразованием даты в строку и последующим настриганием с помошью mid любого нужного формата даты.
любители же "вааще общего вида" читают из реестра текущие региональные настройки.
28 дек 05, 12:01    [2216010]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с форматом даты после преноса сервера  [new]
Dr. Den
Member

Откуда:
Сообщений: 112
andy st
еще как проверял. ;)
собственно isdate относилось к
Dr. Den

"20000000"
К чему относится IsDate уже будет не важно, т.к. сохраняться будет результат CDate, а то, что он будет сохранять зависит от региональных настроек.
andy st
а любый другие проблемы решаются преобразованием даты в строку и последующим настриганием с помошью mid любого нужного формата даты.
Когда передо мной возникнут "любый другие проблемы" я обязательно воспользуюсь Вашим советом, а в данном контексте способ не сработает, потому что:
1. Дата уже строкового формата (но это не главное).
2. В момент сохранения настригованного с помошью mid любого нужного формата даты SQL Server полезет в региональные настройки со всеми вытекающими...
andy st
любители же "вааще общего вида" читают из реестра текущие региональные настройки.
Это лирическое отступление или радикальное решения моего вопроса:
Dr. Den
Можно ли при выполнении Transform Data Task нзависимо ни от каких настроек компьютера передавать дату из текстового файла с полем формата " 1-12-2005" в поле таблицы формата smalldatetime значение соответствующее 1 дек.2005?


p.s.
Если действительно желаете мне помочь, то попробуйте симитировать с помошью Transform Data Task импорт даты " 1.12.2005" (1 дек.2005) из текстового файла в поле smalldatetime, при этом региональные настройки учетной записи SQL Server должны быть ENGLISH. Если у Вас получится, то опишите, пожалуйста, порядок действий без двусмысленностей, типа IsDate(...).
29 дек 05, 02:38    [2219255]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить