Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Вниз

Проблема с правильным определением типа поля в MS SQL.   Найти похожие ветки 

 
Карелин Артем ©   (2005-10-19 09:12) [0]

Мне надо вытащить тип поля таблицы и вставить его в DDL запрос. Только начал заниматься этим, как наступил на грабли:
Поле описано как [field1] float(53), если же смотреть результаты запроса к таблице с этим полем типа EXEC sp_columns @table_name = table2, то видим, что precision = 15, length = 8, scale=null и radix=10.
Где там кроется загадочное 53 и как это трактовать результаты запросы непонятно.
Как получить правильный тип поля и какие еще типы полей требуют такого шаманства?


 
Johnmen ©   (2005-10-19 09:41) [1]

>Поле описано как [field1] float(53),

???????? Где описано ?????


 
Карелин Артем ©   (2005-10-19 09:49) [2]


> Johnmen ©   (19.10.05 09:41) [1]

CREATE TABLE [table2] (
 [id_table2] bigint IDENTITY(0, 1) NOT FOR REPLICATION NOT NULL,
 [Name1] nvarchar(60) COLLATE Cyrillic_General_CI_AS,
 [Name2] nvarchar(40) COLLATE Cyrillic_General_CI_AS,
 [Date_time] datetime,
 [Money_] money,
 [Integ] int,
 [Workstation] varchar(60) COLLATE Cyrillic_General_CI_AS DEFAULT (@@servername) NOT NULL,
 [field1] float(53),
 [field2] binary(1),
 CONSTRAINT [PK_table2] PRIMARY KEY ([id_table2], [Workstation])
)
ON [PRIMARY]
GO


 
Johnmen ©   (2005-10-19 09:51) [3]

>Карелин Артем ©   (19.10.05 09:49) [2]

Это ты сам написал или снял скрипт создания с существующей таблицы?


 
MOA ©   (2005-10-19 09:54) [4]

Цитата из BOL (Transact-SQL Reference - float and real):
n is     Precision  Storage size
1-24   7 digits    4 bytes
25-53 15 digits   8 bytes
Note  Microsoft® SQL Server™ 2000 treats n as one of two possible values. If 1<=n<=24,  n is treated as 24. If 25<=n<=53, n is treated as 53.
Удачи!


 
Карелин Артем ©   (2005-10-19 09:57) [5]


> Johnmen ©   (19.10.05 09:51) [3]

Взял базу, на которой провожу эксперименты, открыл ее в EMS MS SQL Manager, открыл таблицу и скопировать часть скрипта с вкладки DDL.


 
Карелин Артем ©   (2005-10-19 09:58) [6]


> MOA ©   (19.10.05 09:54) [4]

Спасибо большое. С меня пузырь :)


 
Johnmen ©   (2005-10-19 10:17) [7]

>Карелин Артем ©   (19.10.05 09:57) [5]

По-моему, ты вводишь в заблуждение.
- где такая закладка DDL
- в сгенерённом скрипте не м.б. указано float(53) по определению

Ну а про типы с пл.точкой уже сказали...


 
Nikolay M. ©   (2005-10-19 10:25) [8]


> как это трактовать результаты запросы непонятно.
> Как получить правильный тип поля и какие еще типы полей
> требуют такого шаманства?

Последовательность получения ответа самостоятельно такая:
1) запустить профайлер, в нем запустить новый trace, очистить результаты
2) в QA ткнуть правой лапой на таблицу, выбрать пункт CREATE, чтобы QA показал скрипт для создания таблицы
3) возвращаемся в профайлер, выделяем все пойманные event-ы в верхней части окна, копируем все команды sql из нижней части окна в QA
4) анализируем получившийся скрипт, в частности, видим полезную, но недокументированную ХП sp_MShelpcolumns, смысл ее вполне понятен, для получения бОльшей информации можно посмотреть ее текст.


 
Карелин Артем ©   (2005-10-19 10:42) [9]


> Johnmen ©   (19.10.05 10:17) [7]

Снимок экрана дать? ))


 
Карелин Артем ©   (2005-10-19 10:46) [10]


> Johnmen ©   (19.10.05 10:17) [7]

Название софта в моем посте посмотри еще раз повнимательнее и сравни с тем, которым пользуешься.


 
Johnmen ©   (2005-10-19 10:53) [11]

>Карелин Артем ©   (19.10.05 10:42) [9]
>Снимок экрана дать? ))

Да, пожалуйста.


 
Карелин Артем ©   (2005-10-19 12:07) [12]


> Johnmen ©   (19.10.05 10:53) [11]

Вечером выложу где-нибудь.


 
Danilka ©   (2005-10-19 13:04) [13]

Johnmen ©   (19.10.05 10:53)


В MSSQL, "float( n )" - n означает кол-во битов для мантиссы, а не кол-во цифер :)
то-есть, если, например, в IB есть FLOAT - 4 байта и DOUBLE PRECISION 8 байт, то в MSSQL им соотетствуют float(24) и float(53)
Вто-такая вот заморочка. :)


 
Johnmen ©   (2005-10-19 13:19) [14]

>Danilka ©   (19.10.05 13:04) [13]

Да нет никакой заморочки.
Как интерпретировать float(X) в самописном скрипте создания таблицы уже сказал BOL устами MOA ©
И  IB_FLOAT = MSSQL_REAL,  IB_DOUBLE PRECISION = MSSQL_FLOAT


 
Danilka ©   (2005-10-19 13:46) [15]

Johnmen ©   (19.10.05 13:19)


Дык, а чему ты тогда удивляешься, честно говоря, не понял.. :)
Для меня самое больше удивление в свое время было с тем, что непонятно, нафига этот параметр n придумали для флоата. :)


 
Johnmen ©   (2005-10-19 14:02) [16]

>Danilka ©   (19.10.05 13:46) [15]

Хм... Я нигде не удивлялся...:)
Просто просил автора показать, где там "вкладка DDL"


 
Карелин Артем ©   (2005-10-19 23:00) [17]


> Johnmen ©   (19.10.05 14:02) [16]

У меня на работе вырубили электричество в неподходящий момент, однако скриншот я тебе все-таки покажу, хоть и не свой. http://www.sqlmanager.net/en/products/mssql/manager/screenshots/11
Однако внимательнее читай что пишут. Может тогда и сможешь отличить надпись Enterprise manager от EMS MS SQL manager.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.044 c
14-1131705105
CHES
2005-11-11 13:31
2005.12.04
Трудно быть йогом


2-1132333023
Дева
2005-11-18 19:57
2005.12.04
О фильтре


4-1127833308
фывыч
2005-09-27 19:01
2005.12.04
о tprocessentry32


3-1129664306
oledb
2005-10-18 23:38
2005.12.04
вставка блоба в FB


4-1128096356
SpyBoy
2005-09-30 20:05
2005.12.04
ОЗУ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский