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

Откуда:
Сообщений: 197
Привет всем! Опять напала на меня проблема=))
Записывал картинки в таблицу-поле с типом image! Все было хорошо, изображения записывались и отображались в приложении! Но появилась потребность повесить на таблицу триггер, который начал ругаться, что сполем типа image он работать не будет и посоветовал мне перейти на тип varbinary(max) что я и сделал. Но возникла другая проблема-теперь он не записывает в поле данные и начинает выдавать ошибку:
Сообщение 8152, уровень 16, состояние 10, строка 1
Символьные или двоичные данные могут быть усечены.

Пробовал разные размеры, форматы-результат один! Повторюсь если поле типа image все работает нормально!
Записываю таким макаром:
UPDATE [ATI].[dbo].[Pribori] SET [Image1]=(SELECT * FROM OPENROWSET (BULK 'E:\Pictures\1253.jpg', SINGLE_BLOB) AS [File]) Where ID_Pribori=1

Буду признателен за подсказку в решении моего вопроса! Спасибо.
19 июн 13, 11:00    [14452425]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Но возникла другая проблема-теперь он не записывает в поле данные и начинает выдавать ошибку:

Кто "он" ? Триггер ?

FOGOT-BAstA
Буду признателен за подсказку в решении моего вопроса!

Ошибка говорит о том, что размер добавляемых данных превышает допустимый размер поля
19 июн 13, 11:10    [14452490]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Crimean
Member

Откуда:
Сообщений: 13148
на русском - поле на 2 символа, а пишем 3. сервер волнуется. давится несложно

-- dbcc useroptions

set ansi_warnings on
go

declare @a table ( f char(2))
insert into @a select '123'
go

set ansi_warnings off
go

declare @a table ( f char(2))
insert into @a select '123'
go

Server: Msg 8152, Level 16, State 14, Line 3
String or binary data would be truncated.
The statement has been terminated.

(1 row(s) affected)
19 июн 13, 11:15    [14452530]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory, не триггер! изображения не записываются в таблицу!
ну то что ему места не хватает-это из описания ошибки понятно!
Может как-то по-другому надо записывать или преобразовывать?!
19 июн 13, 11:16    [14452534]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Glory, не триггер!

Тогда почему вы пришет про триггер ?

FOGOT-BAstA
изображения не записываются в таблицу!

Приведите текст команды
19 июн 13, 11:18    [14452540]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory, про триггер я написал, что бы было понятно почему я перешел с типа image на тип varbinary(max)! В SQL Server 2012 триггер с интсрукцией insert,update,delete не работает с image!
Текст какой команды? Триггера?
19 июн 13, 11:21    [14452563]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Текст какой команды? Триггера?

Той команды, которая вызывает ошибку
19 июн 13, 11:23    [14452576]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory, в 1 посте же...
UPDATE [ATI].[dbo].[Pribori] SET [Image1]=(SELECT * FROM OPENROWSET (BULK 'E:\Pictures\1253.jpg', SINGLE_BLOB) AS [File]) Where ID_Pribori=1
19 июн 13, 11:24    [14452583]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
чего-о все слились!
19 июн 13, 13:36    [14453618]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Image1 - точно varbinary (max), а не varbinary (8000)?
19 июн 13, 13:41    [14453654]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Точно! Вот скрипт таблицы:
CREATE TABLE [dbo].[Pribori](
	[ID_Pribori] [int] IDENTITY(1,1) NOT NULL,
	[NaimPribor] [varchar](50) NULL,
	[TypePribor] [varchar](100) NULL,
	[InvNomer] [varchar](50) NULL,
	[ZavNomer] [varchar](50) NULL,
	[PeriodPoverki] [int] NULL,
	[Image1] [varbinary](max) NULL,
	[Spisan] [bit] NULL,
	[DatePoverki] [datetime] NULL,
	[DatePoverkiNext] [datetime] NULL,
	[Otvetstvenniu] [varchar](50) NULL,
	[Otmetki] [varchar](max) NULL,
	[Mesto] [varchar](50) NULL)
19 июн 13, 13:46    [14453694]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Значит ошибка где-то в другом месте.

use tempdb
go
if object_id('dbo.Pribori') is not null
    drop table dbo.Pribori
go    
create table [dbo].[pribori](
	[id_pribori] [int] identity ,
	[image1] [varbinary](max) null
)
go
insert [pribori] default values
UPDATE [dbo].[Pribori] SET [Image1]=(SELECT * FROM OPENROWSET (BULK 'D:\Distr\MS SQL\MS SQL 2008\Updates\SQLServer2008SP3-CU11-KB2834048-x64.exe', SINGLE_BLOB) AS [File]) Where ID_Pribori=1
select datalength(a.image1) from dbo.Pribori a Where ID_Pribori=1
go
--------------------------------------------
220207720
19 июн 13, 13:52    [14453751]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Гавриленко Сергей Алексеевич, спасибо! попробовал ваш вариант-получилось!
Решил заново создать таблицу, перед этим данные скопировал что были, и тогда все нормально занеслось! Так и не смог понять причину ошибки!
19 июн 13, 14:36    [14454185]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Апну тему ибо не понимаю. Опять не записывает и выдает ошибку про данные, которые могут быть усечены! Тут же создаю идентичную таблицу, и вуаля-все прекрасно заносится! Сломал голову уже как решить данную проблему!
8 авг 13, 12:28    [14680473]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Удалил триггер и начало все записываться! Триггер на запись изменений произведенных с данными в таблице!
CREATE TRIGGER [dbo].[UpdatePribori] ON [dbo].[Pribori] 
FOR INSERT, UPDATE
AS
Declare @usr char(15)
Set @usr=user

Select * Into #t_Ins1 from inserted
Select * Into #t_Del1 from deleted

-- объявляем курсор
DECLARE curCOLNAMEofPribori CURSOR READ_ONLY
FOR
 SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='Pribori'

OPEN curCOLNAMEofPribori

DECLARE @colname sysname

FETCH NEXT FROM curCOLNAMEofPribori INTO @colname

WHILE (@@FETCH_STATUS = 0)

BEGIN

Insert Into UpdatePribori (ColName, ID, Value1, Value2, UpdatedBy, UpdateDate) EXEC('Select ' +'''' + @colname + '''' + ', d.ID_Pribori ' + ', d.'+@colname + ', i.' + @colname +', ' + 'SYSTEM_USER' +', ' + 'GETDATE()' + ' FROM #t_Ins1 i JOIN #t_Del1 d ON i.ID_Pribori = d.ID_Pribori AND (i.' + @colname + ' <> d.'+@colname + ' Or (d.'+ @colname + ' Is Null And i.'+@colname + ' Is Not Null ) Or (i.'+ @colname + ' Is Null And d.'+@colname + ' Is Not Null ) )') 

FETCH NEXT FROM curCOLNAMEofPribori INTO @colname

END

CLOSE curCOLNAMEofPribori

DEALLOCATE curCOLNAMEofPribori

Ему не нравятся поля типа varbinary что ли?
8 авг 13, 12:37    [14680540]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Ему не нравятся поля типа varbinary что ли?

Ему не нравится, что добавляемые данные больше размера поля
8 авг 13, 12:39    [14680558]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory
Ему не нравится, что добавляемые данные больше размера поля

Так написал же, что абсолютно такая же таблица, только без триггера, нормально заносит данные-без ошибки!
8 авг 13, 12:53    [14680673]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
FOGOT-BAstA,

структуру UpdatePribori покажите.
Какого типа Value1 и Value2?
8 авг 13, 12:55    [14680694]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Так написал же, что абсолютно такая же таблица, только без триггера, нормально заносит данные-без ошибки!

Вы про [dbo].[Pribori] или про UpdatePribori ?
8 авг 13, 12:56    [14680700]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory
FOGOT-BAstA
Так написал же, что абсолютно такая же таблица, только без триггера, нормально заносит данные-без ошибки!

Вы про [dbo].[Pribori] или про UpdatePribori ?

Про Pribori!
iap, проверил значения, стояло varchar(500) в обоих, поставил на max,- стал заносить значения! Но возник вопрос-какой максимальный размер изображения может уместиться в этому поле (varchar(max))?
8 авг 13, 13:07    [14680809]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
Про Pribori!

Ну так, а триггер куда данные заносит ?

FOGOT-BAstA
Но возник вопрос-какой максимальный размер изображения может уместиться в этому поле (varchar(max))?

Открыть хелп невозможно что ли ?
8 авг 13, 13:09    [14680821]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
а все прочел -2 гига!
8 авг 13, 13:09    [14680823]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory
FOGOT-BAstA
Про Pribori!

Ну так, а триггер куда данные заносит ?

FOGOT-BAstA
Но возник вопрос-какой максимальный размер изображения может уместиться в этому поле (varchar(max))?

Открыть хелп невозможно что ли ?

После того как написал понял=)) Так и знал что ктонить напишет такую фразу!
8 авг 13, 13:11    [14680836]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
После того как написал понял=))

Имя триггера и номер строки в нем были в сообщении об ошибке
Нужно было всего лишь прочитать эту информацию
8 авг 13, 13:13    [14680863]     Ответить | Цитировать Сообщить модератору
 Re: Символьные или двоичные данные могут быть усечены  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Glory, где в этом сообщении имя триггера и номер строки?

Сообщение 8152, уровень 16, состояние 10, строка 1
Символьные или двоичные данные могут быть усечены.
8 авг 13, 13:34    [14680995]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить