Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 31.12.2020
Сообщений: 86

Произойдет усечение строковых или двоичных данных в столбце

29.12.2021, 11:30. Показов 6550. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
System.Data.SqlClient.SqlException: "Произойдет усечение строковых или двоичных данных в столбце "password" таблицы "some.dbo.bs_user". Усеченное значение: "dtRkkULQXyqyLyN".


T-SQL
1
2
3
4
5
6
7
8
9
10
 
CREATE TABLE [dbo].[bs_user] (
    [id]         INT        NOT NULL,
    [name]       NCHAR (15) NOT NULL,
    [login]      NCHAR (10) NOT NULL,
    [password]   NVARCHAR (15) NOT NULL,
    [bs_role_id] INT        NOT NULL,
    [role]       NCHAR (10) NOT NULL,
    PRIMARY KEY CLUSTERED ([id] ASC)
);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2021, 11:30
Ответы с готовыми решениями:

BULK INSERT Ошибка преобразования массовой загрузки данных (усечение) в строке 1, столбце 2
Всем привет! Пытаюсь заполнить такую таблицу с помощь BULK INSERT CREATE TABLE .( IDENTITY(1,1) NOT NULL, (20) NOT NULL, ...

Сложение строковых переменных в столбце
Добрый день коллеги! У меня есть примерно такая таблица Пардон... заголовок не правильный. Не переменных, а строковых значений. ...

Сложение или вычитание в столбце базы данных
Привет! Есть база с ячейкой Сумма (int) Как по нажатию кнопки добавить сумму из текстбокса к уже имеющийся сумме в бд ? Тоесть...

15
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
29.12.2021, 11:52
chukaz, подсчитайте сколько символов вы в пароле использовали и сколько помещается в поле в таблице.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 13:25
SQL
1
2
3
4
5
6
7
CREATE TABLE [dbo].[bs_user] (
    [id]  INT IDENTITY(1,1) PRIMARY KEY,
    [name]       NVARCHAR (MAX) NOT NULL,
    [login]      NVARCHAR (MAX) NOT NULL,
    [password]   NVARCHAR (MAX) NOT NULL,
    [bs_role_id] INT REFERENCES [dbo].[bs_role](id)  NOT NULL,
)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
29.12.2021, 14:36
MsGuns, nvarchar(max) тут явно избыточен. И это не говоря о том что ТСу следует хранить хеш пароля.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 15:43
Цитата Сообщение от OwenGlendower Посмотреть сообщение
MsGuns, nvarchar(max) тут явно избыточен
Вы в курсе, как сервер хранит варчары ?
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
29.12.2021, 15:48
MsGuns, с полями такого размера сложно использовать индексы) Да и маленькие поля хранятся на странице с записью, а не отдельно, как большие. Разница не бог весть какая, но есть.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
29.12.2021, 15:49
Цитата Сообщение от MsGuns Посмотреть сообщение
Вы в курсе, как сервер хранит варчары ?
А вы хотите нормально общаться или ищете перепалки?

Я знаю что nvarchar(max) хранится отдельно от других данных строки (т.е. row) что ухудшает производительность. И их нужно использовать только когда необходимо в самом деле хранить очень длинные строки. Имя, логин и пароль в эту категорию не входят.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 16:04
Цитата Сообщение от OwenGlendower Посмотреть сообщение
А вы хотите нормально общаться или ищете перепалки?
Боже упаси ! Извините, если нечаянно обидел

Еще много лет назад один очень грамотный человек объяснил мне, что бояться max в варчарах не следует ибо серверы "заточены" на то, чтобы работать с ними быстро. Ограничения ставятся для того, чтобы исключить неверные данные (валидация на сервере) - и только.

В данном случае, возможно, Вы правы, ибо слишком длинные пароли или логины не нужны априори.
С точки зрения скорости обработки поисков и выборок max если и влияет, то мизерно. По крайней мере я это не замечал ни разу за 10 лет работы с разными серверами (Interbase/Firebird, MS SQL, PostgreSQL, Oracle, MySQL).

А вот индексы - это да. Особенно если межтабличные связи построены на символьных полях и для скорости для этих полей строятся индексы. Но, ИМХО, сама по себе такая ситуация - результат не очень грамотного (если сказать мягко) проектирования БД.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
29.12.2021, 16:11
Цитата Сообщение от MsGuns Посмотреть сообщение
С точки зрения скорости обработки поисков и выборок max если и влияет, то мизерно. По крайней мере я это не замечал ни разу
А я замечал. Было несколько случаев в MS SQL когда пришлось избавляться от (max) типов данных из-за проблем с производительностью.

Цитата Сообщение от MsGuns Посмотреть сообщение
Извините, если нечаянно обидел
Никаких обид. Все нормально.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 16:17
Простой пример.
Есть таблица с 100 символьными колонками, имеющими, допустим ограничение 100 символов. Число записей - 1млн.
Для того, чтобы перебрать их все для выборки только по одной колонке, серверу нужно считать их все. Пусть средний коэффициент заполненности полей 50%. Добавим еще коэффициент сжатия - в результате получим что-то около 30 реальных байтов на каждое поле. В результате получим 30 * 100 * 1млн = 3 гига байт, и это не считая других полей таблицы, не символьных.

В случае же варчара данные для проверки будут считываться только по одной колонке. Далее понятно

Добавлено через 45 секунд
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Было несколько случаев в MS SQL когда пришлось избавляться от (max) типов данных из-за проблем с производительностью.
Индексы по этим полям были ?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
29.12.2021, 16:30
Цитата Сообщение от MsGuns Посмотреть сообщение
Индексы по этим полям были ?
Нет, насколько я помню. Тем более что nvarchar(max) нельзя индексировать, а можно только добавить к индексу как nonkey column. А я не припоминаю что мне приходилось ими пользоваться.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 16:30
И еще один пример.
Когда я работал на большом заводе, то были вынуждены вести лог для нескольких десятков основных таблиц , содержащих информацию с документов. Лог был один, универсальный, который содержал длинные записи: старое значение-новое значение для каждого поля измененной таблицы, id ПК, данные пользователя, дата и время, специальная информация - всего с десятка полтора-два полей. За год таких записей в логе набиралось около 10 млн, а то и больше. Учитывая, что в лог писалось в триггерах чуть ли не по каждому "чиху" пользователей (а их было около тысячи по заводу), вся система стала подтормаживать. И тогда мы попробовали заменить чары на варчары. Проблема ушла
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
29.12.2021, 16:47
MsGuns, я понял. Мы про немного разные вещи говорим. Я имел в виду только избыточность (max) типов для задачи ТС. Вы же говорили про char vs varchar.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
29.12.2021, 17:02
Цитата Сообщение от MsGuns Посмотреть сообщение
В случае же варчара данные для проверки будут считываться только по одной колонке.
Вообще, нет. С диска всё равно будет подниматься вся страница с записью, вне зависимости от того, находится нужное поле в самой записи или там только ссылка и нужно снова к диску обращаться.

Цитата Сообщение от MsGuns Посмотреть сообщение
И тогда мы попробовали заменить чары на варчары.
Так это разные ситуации. Мы же говорим о варчаре с указанным максимальным размером, а не чаром фиксированным. Конечно варчар будет эффективнее. Но это не значит, что варчар должен быть сразу MAX.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
29.12.2021, 17:05
Цитата Сообщение от Usaga Посмотреть сообщение
С диска всё равно будет подниматься вся страница с записью
Совершенно верно, только на этой странице записей этих будет в разы больше
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
29.12.2021, 17:06
MsGuns, их там будет фиксированное количество вне зависимости от размера полей. Страница будет нарезана на порции по 8К. И меньше, чем страницами, SQL Server данные не читает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.12.2021, 17:06
Помогаю со студенческими работами здесь

Stringgrid: запрет ввода данных в определенной строке или столбце
как можно сделать что бы в определенной строке/столбце ввод данных в таблицу был невозможен? Заранее спасибо.

Найти вероятность того, что в течение рабочего дня не произойдет остановки: а)хотя бы 1 станка б)2 или 4 станков
4) Рабочий обслуживает 5 станков. Вероятность остановки станка в течение рабочего дня равна 0,2. Какова вероятность того, что в течение...

Обработка строковых данных
Прошу помощи Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними...

Обработка строковых данных
ввести строку содержащую несколько слов.составить слово из последних букв слов,введенной строки.

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru