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

Откуда:
Сообщений: 68
Доброго времени суток!

Подскажите как подсчитать контрольную сумму строки таблицы? Алгоритм любой....
Есть таблица:
CREATE TABLE [Test_Aparat]
([ID_Complete] nchar(20) NOT NULL,
[Drawing] integer NOT NULL,
[Operator_ID] integer NOT NULL,
[Exec_DateTime] smalldatetime NOT NULL,
[Result] int NOT NULL,
[ScanBlank] IMAGE NULL)
т.е. это скрипт для её создания.... Имя [Test_Aparat] и список полей со свойствами (nchar(20), int, image..)

Как подсчитать контрольную сумму для каждой строки в данной таблице?.. Я понимаю, что надо как то все поля слить в один массив и потом подсчитать контрольную сумму всех байтов. Но реальная реализация?... Как слить в массив разные типы данных nchar(20), int, image?..
18 мар 15, 09:07    [17397622]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
1) алгоритмов куча - CHECKSUM, HashBytes, BINARY_CHECKSUM
2) реализация - вычисляемое поле
18 мар 15, 09:14    [17397646]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Из справки "CHECKSUM Несопоставимыми типами данных являются text, ntext, image." Это же и к BINARY_CHECKSUM

А меня поля есть image и ntext (я его пропустил в скрипте..)
18 мар 15, 09:30    [17397720]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yra
А меня поля есть image и ntext (я его пропустил в скрипте..)

И зачем вам контрольная сумма на 4Гб данных ?
18 мар 15, 09:31    [17397725]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Откуда такие большие числа?... В поле image хранится фото (приметно 1 мб) ntext (примерно 1кб)... А считать КС требование ТЗ

И все же вопрос открытый...
18 мар 15, 09:57    [17397830]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yra
Откуда такие большие числа?..

Из спецификации сервера. Вы ее не читали что ли ?
Так там написано, что максимальный размер BLOB поля есть 2Гб
А 2*2 = 4

Yra
В поле image хранится фото (приметно 1 мб) ntext (примерно 1кб).

Еще раз вопрос - для чего вам контрольная сумма всех полей записи
18 мар 15, 10:02    [17397860]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Yra
считать КС требование ТЗ

Контрольную сумму для содержимого поля несопоставимого типа считайте внешними средствами (UDF?) и заносите в отдельное поле. При подсчёте контрольной суммы записи используйте контрольную сумму, а не контент, поля несопоставимого типа.
18 мар 15, 10:06    [17397882]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Yra
Откуда такие большие числа?... В поле image хранится фото (приметно 1 мб) ntext (примерно 1кб)...

а нафига вы вообще тогда используете такие типы данных, учитывая, что МС их давно пометили, как устаревшие и обещают выкосить в следующих версиях...

чем varbinary и varchar не угодили?
18 мар 15, 10:07    [17397887]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Но макс. длина поля типа varbinary - 1..8000 байт. А как же в него сохранять фото размером около 1Мб?
18 мар 15, 10:39    [17398056]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Yra
Но макс. длина поля типа varbinary - 1..8000 байт. А как же в него сохранять фото размером около 1Мб?
VARBINARY(MAX)
VARCHAR(MAX)
NVARCHAR(MAX)
18 мар 15, 10:50    [17398134]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Но как я понял, что длина VARCHAR(MAX) =8000 байт - мы проходим
А вот длина VARBINARY(MAX) те же 8000 байт - мало.... Фотка около 1Мб. Так что, подходит только Image?
18 мар 15, 11:04    [17398265]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Yra
Но как я понял, что длина VARCHAR(MAX) =8000 байт - мы проходим
А вот длина VARBINARY(MAX) те же 8000 байт - мало.... Фотка около 1Мб. Так что, подходит только Image?
Это где такое написано?
Все, кроме Вас читают, что VARCHAR(MAX) - 2 миллиарда символов с хвостиком...
18 мар 15, 11:07    [17398288]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Хе! Извиняюсь. Действительно не доглядел....

А подскажите, я до этого в своем приложении DELPHI заполнял поле image так:

adoQuery1.SQL.Text:='UPDATE [Test_Aparat] SET [ScanBlank] = :scanBlank WHERE [ID_Complete]=:ID_Aparat';
adoQuery1.Parameters.ParamByName('scanBlank').LoadFromFile(<путь к файлу>,ftGraphic)
adoQuery1.ExecSQL;

Как загружать файл в поле VARBINARY(MAX). Или все справедливо как и для поля типа image ?
18 мар 15, 11:21    [17398363]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
Yra
Member

Откуда:
Сообщений: 68
Все проверил - РАБОТАЕТ! Разницы нет..
Всем спасибо! Удачи....
18 мар 15, 12:46    [17398928]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
Yra
Все проверил - РАБОТАЕТ! Разницы нет..
Всем спасибо! Удачи....


Я обычно делаю HASH_BYTES('MD5', ...)
18 мар 15, 14:55    [17399941]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
msLex
Member

Откуда:
Сообщений: 9289
a_voronin
Yra
Все проверил - РАБОТАЕТ! Разницы нет..
Всем спасибо! Удачи....


Я обычно делаю HASH_BYTES('MD5', ...)

HASH_BYTES не работает с varbinary/varchar(max)
18 мар 15, 15:43    [17400398]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
msLex
a_voronin
пропущено...


Я обычно делаю HASH_BYTES('MD5', ...)

HASH_BYTES не работает с varbinary/varchar(max)


substring надобно заюзать
18 мар 15, 20:15    [17401946]     Ответить | Цитировать Сообщить модератору
 Re: Контрольная сумма строки  [new]
msLex
Member

Откуда:
Сообщений: 9289
a_voronin
msLex
пропущено...

HASH_BYTES не работает с varbinary/varchar(max)


substring надобно заюзать

ага, и вдруг окажется что 123 и 1234 (при substring(1, 3)) имеют одну md5?

для varbinary/varchar(max) лучше прикрутить сборку и считать md5 через стандартный dotnet class
18 мар 15, 20:33    [17402080]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить