Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
есть 2 linked сервера, один 2008R2, второй 2005
на 2008-м есть представление, которое содержит запрос из нескольких таблиц, в одной из которых содержится поле с типом smalldatetime. На 2005 есть другое представление, которое вызывает представление с 2008-го, но это поле почему-то отображается типом datetime. А представление с 2005-го задействует приложение на фокспро, которое требует именно тип данных smalldatetime и из за этого проблемы возникают, т.к. оно иногда делает апдейт поля в силу чего CAST и CONVERT не прокатывают. Вот как сделать так, чтобы 2005 подхватывал это поле именно, как smalldatetime?
12 окт 11, 11:30    [11425292]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А select @@version с обоих серверов что вернет?
12 окт 11, 11:46    [11425446]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
2008-й:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2772.0 (Intel X86)   Aug  9 2011 15:21:55   Copyright (c) Microsoft Corporation  Standard Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) 
2005-й:
Microsoft SQL Server 2005 - 9.00.5254.00 (Intel X86)   Dec 18 2010 23:05:34   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
12 окт 11, 11:51    [11425490]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Чё придётся постить багу?
Кто там знаток тонкостей терпеливее ковыряет BOL?
13 окт 11, 00:04    [11430676]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
вот сам код представления:
alter view S056
as
select 
	CAST(a.StudentNumber as varchar(9)) as number
	, CAST(a.WorkInformation as varchar(100)) as works
	, a.EducationLevelID as id_edcome
	, a.ind_plan
	, b.RateNumber as num_tarif
	, CAST(a.BirthDate as smalldatetime) as birthday
	, ISNULL(CAST(c.Value as varchar(20)), '') as tel_w
	, ISNULL(CAST(d.Value as varchar(20)), '') as tel_h
	, ISNULL(CAST(e.Value as varchar(50)), '') as email
	, CAST('' as varchar(1)) as lang
	, a.LanguageID as id_lang
	, CAST(0 as numeric(1, 0)) as computer
	, CAST(0 as numeric(1, 0)) as internet
	, CAST('' as varchar(10)) as password
	, CAST(0 as numeric(1, 0)) as video
	, ISNULL(CAST(
		(select TOP(1) f.Value 
		from ibs.Tantal1.dbo.TComments f where f.StudentID = a.StudentID) as varchar(1024)), '') as remark
	, ISNULL(a.F1_plat, 0) as F1_plat
	, ISNULL(a.F2_bank, 0) as F2_bank
	, ISNULL(a.F3_bad, 0) as F3_bad
	, ISNULL(a.F4_tasks, 0) as F4_tasks
	, ISNULL(a.F5_two, 0) as F5_two
	, ISNULL(a.OFF_ALL, 0) as OFF_ALL
	, ISNULL(a.n_numold, 0) as n_numold
	, a.DischargeDate as d_vipis -- само поле имеет тип smalldatetime, но на выходе почему-то datetime получается, и из-за этого вся проблема
	, a.not_ready
	, a.s_del
	, a.txttarif
	, a.nSpecial
	, cast(ISNULL(dbo.f_getStudentRemarks(a.StudentID, 0), '') as varchar(254)) as remark1
	, CAST(a.Comment2 as varchar(254)) as remark2
	, a.Rating as raiting
	, a.DateRating as DateRaiting
from ibs.Tantal1.dbo.TStudent a
left join ibs.Tantal1.dbo.TRates b on a.RateID = b.RateID
left join ibs.Tantal1.dbo.TPhones c on a.StudentID = c.StudentID
	and c.TypeID = 2
left join ibs.Tantal1.dbo.TPhones d on a.StudentID = d.StudentID
	and d.TypeID = 1
left join ibs.Tantal1.dbo.TEmails e on a.StudentID = e.StudentID
where a.DedicateType = 'Mail'
go
13 окт 11, 09:32    [11431362]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Azomorph, а как определили, что тип поменялся?
13 окт 11, 10:58    [11431913]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
tpg,

дык SSMS выдает, что тип в вьюхе datetime
причем через CAST или CONVERT можно привести к smalldatetime, но тогда софтина не отрабатывает update этого поля
13 окт 11, 13:43    [11433731]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Glory
Member

Откуда:
Сообщений: 104751
Azomorph
дык SSMS выдает, что тип в вьюхе datetime

а что выдает sp_columns_ex для этого объекта линкед сервера ?
13 окт 11, 13:47    [11433767]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
Картинка с другого сайта.
13 окт 11, 14:24    [11434052]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Glory
Member

Откуда:
Сообщений: 104751
А какой провайдер выбран для этого линкед сервера ? SQL native ?
13 окт 11, 14:32    [11434113]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Humanitis
Member

Откуда:
Сообщений: 4
тыц
13 окт 11, 15:23    [11434682]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
By Design.

connect.microsoft.com
1. SELECT INTO query from a remote source changes the datatype of SMALLMONEY & SMALLDATETIME columns (Сопоставление типов данных в распределенных запросах)
2. SQL Server 2008 unexpected behavior when inserting datetime value in smalldatetime column on a linked server (как последствия, типа исправим в новой версии)

Ани видимо хотят вааще избавиться от SmallDateTime, типа мешает.
M$ такие M$
14 окт 11, 00:42    [11438315]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
Mnior
By Design.

connect.microsoft.com
1. SELECT INTO query from a remote source changes the datatype of SMALLMONEY & SMALLDATETIME columns (Сопоставление типов данных в распределенных запросах)
2. SQL Server 2008 unexpected behavior when inserting datetime value in smalldatetime column on a linked server (как последствия, типа исправим в новой версии)

Ани видимо хотят вааще избавиться от SmallDateTime, типа мешает.
M$ такие M$

так в 2008-м smalldatetime живет себе спокойно, а вот когда в 2005-й с него тянешь данные, то почему-то на выходе datetime
причем если на 2008-м развернуть бекапбазы и совместимость ее оставить на уровне 2005-го, то все нормально...


2 Glory: хм... помоему натив, завтра точно скажу
а как тип провайдера может влиять? по умолчанию MSOLEDB используется
16 окт 11, 14:59    [11448083]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
Azomorph
Mnior
By Design.

пропущено...

Ани видимо хотят вааще избавиться от SmallDateTime, типа мешает.
M$ такие M$

так в 2008-м smalldatetime живет себе спокойно, а вот когда в 2005-й с него тянешь данные, то почему-то на выходе datetime
причем если на 2008-м развернуть бекапбазы и совместимость ее оставить на уровне 2005-го, то все нормально...


2 Glory: хм... помоему натив, завтра точно скажу
а как тип провайдера может влиять? по умолчанию MSOLEDB используется

удаленно к рабочему компу подключился и выяснил, MSOLEDB
но как я понял, если линкуются MS SQL, то он же в роли Натив Клиента идет, или я не прав?
16 окт 11, 15:23    [11448121]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
http://msdn.microsoft.com/en-us/library/ms175970.aspx

вот эту статью нашел, там вроде проясняется вопрос...
тут похоже мешает сама MSOLEDB, не модернизируя сервер это как-нибудь можно обойти?
16 окт 11, 15:43    [11448168]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Azomorph
так в 2008-м smalldatetime живет себе спокойно, а вот когда в 2005-й с него тянешь данные, то почему-то на выходе datetime
Чукча не читатель.
Специально для тех кто в танке только проснулся, разжёвываю:
Если почитать названия линков, а ещё хорошобы по ним пройти и прочитать, то можно понять:

Линк нативного (да-да Native) провайдера не проделывает сквозную передачу типа SmallDateTime. Точка!
By Design!

Если прочитать с десяток MS форумов (поддержка) по проблеме передачи временных типов, то внимание акцентрируется на переходе к новым типам (Date, DateTime2(0)).
Следовательно, закрытие SmallDateTime какбэ намекает нам "Поцелуйте нас в затылок". Издалека так заходят.
При этом (вторая ссылка) народ ловит лулзы, т.к. при этой тупой подстановки типов, запись в эти поля становится минным полем, ибо округление DateTime -> SmallDateTime забыли вкрутить.

Ваш КО.
16 окт 11, 15:53    [11448177]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Humanitis (13 окт 11, 15:23)
тыц
Mnior (14 окт 11, 00:42)
(Сопоставление типов данных в распределенных запросах)
Azomorph (16 окт, 15:43)
http://msdn.microsoft.com/en-us/library/ms175970.aspx
Ссылка на одно и тоже 3 раза (последние две вообще совпадают).

Полярная ночь началась, чукчи полезли в инет.
16 окт 11, 16:00    [11448186]     Ответить | Цитировать Сообщить модератору
 Re: linked server проблема с типом smalldatetime  [new]
Azomorph
Member

Откуда:
Сообщений: 300
Mnior,

сорри, не заметил сначала
да и последнюю ссылку я выудил из одной вышезапостенных :)
скорей всего буду апгрейдить до 2008-го, т.к. лицензии было 2 куплено, а задействованая одна, да и второму серверу осталось жить год максимум, пока обе базы не сольем, поэтому и апргрейдил только один сервер
и все из-за того, что софтине на фокс-про подавай именно smalldatetime (убил бы тех, кто писал эту софтину)...
16 окт 11, 18:22    [11448396]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить