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

Откуда:
Сообщений: 179
При работе с 1-3 записи (при тестировании) все было нормально, но когда пользователь ввел побольше записей (несколько сотен) то начало выдавать ошибку вот на этом куске кода.

CREATE PROCEDURE dbo.TMP
@spisok_id NVARCHAR(MAX),-- @spisok_id - что бы отбирало только по нужным
@what_is INT -- условие определяющее что расщитываем (не выполненые заявки, не по заявке, сверх заявки ...)

AS
BEGIN

  DECLARE @sSQL NVARCHAR(max);


   -- создание временной таблицы - так как при создании ее в динамическом запросе она сразу дропается 
  CREATE TABLE #t1 
  (ID_ZAIAV INT,
   NOM INT,
   TMC_NAME NVARCHAR(100),
   TO_DEP NVARCHAR(4),
   DEP_NAME NVARCHAR(50),
   UMD NVARCHAR(1),
   KOD NVARCHAR(8),
   QUAN FLOAT,
   PRICE FLOAT,
   DAT_VNES DATETIME,
   DOC NVARCHAR(10),
   DAT_DOC DATETIME) 


  -- отберем все содержимое ттн-к и привяжем к id_zaiavki
  SET @sSQL='insert into #t1 (ID_ZAIAV, NOM, TMC_NAME, TO_DEP, DEP_NAME, UMD, KOD, QUAN, PRICE, DAT_VNES, DOC, DAT_DOC) 
      select t.id_zaiav, z.nom, ts.tmc_name, t.to_dep, t.dep_name, ts.umd, ts.kod, ts.quan, ts.price, t.dat_vnes,
      t.doc, t.dat_doc   
  from ttns t, ttns_soderg ts, zaiavkas z   
  where t.id_ttn=ts.id_ttn and t.id_zaiav=z.id_zaiav and t.id_zaiav IN ('+@spisok_id+')  
  order by id_zaiav, to_dep, umd, kod'

  EXEC(@sSQL)
  --EXEC sp_executesql @sSQL -- можно и так

END



Ошибка

String or binary data would be truncated.
The statement has been terminated.


Как я понимаю переполнение tempdb, но почему, неужели 200 записей это предел?
Как тогда вообще можно решить вопрос с динамическими запросами по другому, подскажите, работаю в Delphi.
Спасибо.
5 дек 13, 17:31    [15248244]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1579
Интересно.
Alex-ZZZ
String or binary data would be truncated.
The statement has been terminated.
...
Как я понимаю переполнение tempdb, но почему, неужели 200 записей это предел?
И как cделан такой вывод? Где в сообщении хоть что-то про tempdb?
5 дек 13, 17:38    [15248309]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Virtuoz
Member

Откуда: Украина
Сообщений: 307
Попробуйте заюзать переменную с типом table вместо временной таблицы.
5 дек 13, 17:38    [15248312]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Неправильно вы понимаете. Вы пытаетесь вставить в поле переменной длины значение, которое больше, чем максимально возможноая длина поля.
5 дек 13, 17:39    [15248319]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Гавриленко Сергей Алексеевич
Неправильно вы понимаете. Вы пытаетесь вставить в поле переменной длины значение, которое больше, чем максимально возможноая длина поля.
именно так
попробуйте выполнить тот селект
select len(ts.tmc_name), len(t.to_dep)...
и все станет видно
5 дек 13, 18:05    [15248542]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Alex-ZZZ
Member

Откуда:
Сообщений: 179
Попробую, но @spisok_id присваиваю '1', оно ни как не может быть длиннее максимально возможного, если я правильно понял о чем вы говорите.
6 дек 13, 11:02    [15251416]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Alex-ZZZ
Member

Откуда:
Сообщений: 179
А понял вы имеете ввиду что поле меньше размером чем данные которые пытаюсь вставить. Сейчас проверю.
6 дек 13, 11:04    [15251438]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex-ZZZ
но @spisok_id присваиваю '1', оно ни как не может быть длиннее максимально возможного

А причем тут переменная ? Вам про размер полей таблицы говорят и про размер добавляемых в эти поля значенний
6 дек 13, 11:04    [15251439]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании временной таблицы  [new]
Alex-ZZZ
Member

Откуда:
Сообщений: 179
Да спасибо так и есть, так и не вспомнил когда я поле в таблице расширил )))
6 дек 13, 11:19    [15251570]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить