powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ограничение длина запроса
3 сообщений из 3, страница 1 из 1
Ограничение длина запроса
    #32026133
Casper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем !!!
Конструкция EXEC ('insert into ' + @@TableName + ' (...')
Имеет ли место ограничение на длину или нет.
Заранеее спасибо
...
Рейтинг: 0 / 0
Ограничение длина запроса
    #32026136
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOL - Transact-SQL Reference - EXECUTE

"If the N is included, the string is interpreted as nvarchar data type with a maximum value of the server's available memory ."
...
Рейтинг: 0 / 0
Ограничение длина запроса
    #32026173
DAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если исп. переменные _ то достаточно.
Нижеследующей процедурой я через EXEC затягиваю скрипты из файлов до 128 Кб.

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


ALTER PROCEDURE SP_ExeFileScr
-- Выполнение SQL скриптов файла.
@FileName varchar(100), -- Спецификация файла
@ERR_MES varchar(255)=NULL output -- Сообщение об ошибке
-- Спецификация файла @FileName, завершеннаая символом(и) '#nnn' определяет
-- показ скрипта Nnnn файла или всех, когда nnn не указано.
AS set nocount on
declare @I int, @J int, @L int, @R int, @C int, @N_S int, @N_ES int, @N_SS int,
@P0 varchar(4000),@P1 varchar(4000),@P2 varchar(4000),@P3 varchar(4000),
@P4 varchar(4000),@P5 varchar(4000),@P6 varchar(4000),@P7 varchar(4000),
@P8 varchar(4000),@P9 varchar(4000),@R0 varchar(4000),@R1 varchar(4000),
@R2 varchar(4000),@R3 varchar(4000),@R4 varchar(4000),@R5 varchar(4000),
@R6 varchar(4000),@R7 varchar(4000),@R8 varchar(4000),@R9 varchar(4000),
@N0 varchar(4000),@N1 varchar(4000),@N2 varchar(4000),@N3 varchar(4000),
@N4 varchar(4000),@N5 varchar(4000),@N6 varchar(4000),@N7 varchar(4000),
@N8 varchar(4000),@N9 varchar(4000),@M0 varchar(4000),
@t varchar(4000),@LfCr char(2)
declare @ErrScr table( [int] NOT NULL identity Primary Key,[t] [nvarchar](4000) NULL)
create table #Scr ( [int] NOT NULL identity,t [nvarchar](4000),[x] [varchar](5),
Primary Key())
-- 0000000000000000 < АНАЛИЗ ДОПУСТИМОСТИ ПАРАМЕТРОВ > 000000000000000000000000000000
select @FileName=rtrim(ltrim(@FileName)),@L=datalength(isnull(@FileName,'')),
@I=charindex('#',@FileName)
if @L = 0 or isnull(@I,10) = 1 begin
select @ERR_MES=' - '+MESSAGES+' = NULL' from EVENT where N_EVENT = 1900052
select @t=dbo.f_AssMes(MESSAGES,@ERR_MES,char(134)) from EVENT where N_EVENT = 1001054
select '' t,@t e
select @ERR_MES=dbo.f_ErrMes(@ERR_MES,'SP_ExeFileScr',0) return 1001054 end
if @I != 0
select @t=case when @I = @L then '-1' else substring(@FileName,@I+1,@L-@I) end,
@N_SS=case when isnumeric(@t) = 0 then 1 else convert(int,@t) end,
@FileName=rtrim(substring(@FileName,1,@I-1))
-- ======================================================================================
create table #Yf ([y] [int],[d] [int],[p] [int])
insert into #Yf EXEC [master].[dbo].[xp_fileexist] @FileName
if not exists(select '*' from #Yf where y = 1 and d = 0) begin -- Файла НЕТ
select @t=dbo.f_AssMes(MESSAGES,@FileName,char(134)) from EVENT where N_EVENT = 1005101
select @t t,(select dbo.f_AssMes(MESSAGES,@FileName,char(134))
from EVENT where N_EVENT = 1001045) e
select @ERR_MES=dbo.f_ErrMes(@FileName,'SP_ExeFileScr',0)
drop table #Yf return 1001045 end
drop table #Yf -- ЗАГРУЗКА файла во временную таблицу
insert into #Scr(t,x) EXEC [master].[dbo].[xp_readerrorlog] 1, @FileName
if @@ERROR != 0 begin
select @t=dbo.f_AssMes(MESSAGES,@FileName,char(134)) from EVENT where N_EVENT = 1005101
select @t t,(select dbo.f_AssMes(MESSAGES,@FileName,char(134))
from EVENT where N_EVENT = 1005084) e
select @ERR_MES=dbo.f_ErrMes(@FileName,'SP_ExeFileScr',0) return 1005084 end
-- ......................................................................................
select @I=0,@LfCr=char(13)+char(10),@N_S=1,@N_ES=0
while 1 = 1 begin
-- @@@@@@@@@@@@@@@ < ОЧЕРЕДНОЙ СКРИПТ > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
select @J=0,@L=0,@P0='',@P1='',@P2='',@P3='',@P4='',@P5='',@P6='',@P7='',@P8='',@P9='',
@R0='',@R1='',@R2='',@R3='',@R4='',@R5='',@R6='',@R7='',@R8='',@R9='',
@N0='',@N1='',@N2='',@N3='',@N4='',@N5='',@N6='',@N7='',@N8='',@N9='',
@M0=''
while 1 = 1 begin select @C=NULL set rowcount 1
-- @@@@@@@@@@@@@@@ < ВЫДЕЛЕНИЕ И ИСПОЛНЕНИЕ СКРИПТА > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
select @I=i,@C=i,@t=rtrim(t) from #Scr where i > @I order by i
if @@ERROR != 0 begin set rowcount 0
select @t=dbo.f_AssMes(MESSAGES,@FileName,char(134))
from EVENT where N_EVENT = 1005101
select @t t,(select dbo.f_AssMes(MESSAGES,'#Scr',char(134))
from EVENT where N_EVENT = 1000040) e
select @ERR_MES=dbo.f_ErrMes('#Scr','SP_ExeFileScr',0) return 1000040 end
set rowcount 0
if @C is NULL or upper(rtrim(ltrim(@t))) = 'GO' break
select @R=isnull(datalength(@t),0)
if @R > 0 begin
if @L+@R+2 > 4000 select @L=0,@J=@J+1
if @J > 30 begin -- !!!!!!!!!!! РАЗМЕР СКРИПТА > 124000
if (select count(*) from @ErrScr) = 0
insert into @ErrScr(t) values('')
insert into @ErrScr(t) select '-- '+MESSAGES+' N'+convert(varchar(10),@N_S)
from EVENT where N_EVENT = 1900071
if datalength(@P0) != 0 insert into @ErrScr(t) values (@P0)
if datalength(@P1) != 0 insert into @ErrScr(t) values (@P1)
if datalength(@P2) != 0 insert into @ErrScr(t) values (@P2)
if datalength(@P3) != 0 insert into @ErrScr(t) values (@P3)
if datalength(@P4) != 0 insert into @ErrScr(t) values (@P4)
if datalength(@P5) != 0 insert into @ErrScr(t) values (@P5)
if datalength(@P6) != 0 insert into @ErrScr(t) values (@P6)
if datalength(@P7) != 0 insert into @ErrScr(t) values (@P7)
if datalength(@P != 0 insert into @ErrScr(t) values (@P
if datalength(@P9) != 0 insert into @ErrScr(t) values (@P9)
if datalength(@R0) != 0 insert into @ErrScr(t) values (@R0)
if datalength(@R1) != 0 insert into @ErrScr(t) values (@R1)
if datalength(@R2) != 0 insert into @ErrScr(t) values (@R2)
if datalength(@R3) != 0 insert into @ErrScr(t) values (@R3)
if datalength(@R4) != 0 insert into @ErrScr(t) values (@R4)
if datalength(@R5) != 0 insert into @ErrScr(t) values (@R5)
if datalength(@R6) != 0 insert into @ErrScr(t) values (@R6)
if datalength(@R7) != 0 insert into @ErrScr(t) values (@R7)
if datalength(@R != 0 insert into @ErrScr(t) values (@R
if datalength(@R9) != 0 insert into @ErrScr(t) values (@R9)
if datalength(@N0) != 0 insert into @ErrScr(t) values (@N0)
if datalength(@N1) != 0 insert into @ErrScr(t) values (@N1)
if datalength(@N2) != 0 insert into @ErrScr(t) values (@N2)
if datalength(@N3) != 0 insert into @ErrScr(t) values (@N3)
if datalength(@N4) != 0 insert into @ErrScr(t) values (@N4)
if datalength(@N5) != 0 insert into @ErrScr(t) values (@N5)
if datalength(@N6) != 0 insert into @ErrScr(t) values (@N6)
if datalength(@N7) != 0 insert into @ErrScr(t) values (@N7)
if datalength(@N != 0 insert into @ErrScr(t) values (@N
if datalength(@N9) != 0 insert into @ErrScr(t) values (@N9)
if datalength(@M0) != 0 insert into @ErrScr(t) values (@M0)
insert into @ErrScr(t) values ('-- ..................')
select @N_ES=@N_ES+1
while 1 = 1 begin select @C=NULL set rowcount 1
select @I=i,@C=i,@t=t from #Scr where i > @I order by i
if @@ERROR != 0 begin set rowcount 0
select @t=dbo.f_AssMes(MESSAGES,@FileName,char(134)) from EVENT where N_EVENT = 1005101
select @t t,(select dbo.f_AssMes(MESSAGES,'#Scr',char(134))
from EVENT where N_EVENT = 1000040) e
select @ERR_MES=dbo.f_ErrMes('#Scr','SP_ExeFileScr',0) return 1000040 end
set rowcount 0
if @C is NULL or upper(rtrim(ltrim(@t))) = 'GO' break end
break end
-- ......................................................................................
if @J = 0 select @P0=@P0+@t+@LfCr else if @J = 1 select @P1=@P1+@t+@LfCr
else if @J = 2 select @P2=@P2+@t+@LfCr else if @J = 3 select @P3=@P3+@t+@LfCr
else if @J = 4 select @P4=@P4+@t+@LfCr else if @J = 5 select @P5=@P5+@t+@LfCr
else if @J = 6 select @P6=@P6+@t+@LfCr else if @J = 7 select @P7=@P7+@t+@LfCr
else if @J = 8 select @P8=@P8+@t+@LfCr else if @J = 9 select @P9=@P9+@t+@LfCr
else if @J = 10 select @R0=@R0+@t+@LfCr else if @J = 11 select @R1=@R1+@t+@LfCr
else if @J = 12 select @R2=@R2+@t+@LfCr else if @J = 13 select @R3=@R3+@t+@LfCr
else if @J = 14 select @R4=@R4+@t+@LfCr else if @J = 15 select @R5=@R5+@t+@LfCr
else if @J = 16 select @R6=@R6+@t+@LfCr else if @J = 17 select @R7=@R7+@t+@LfCr
else if @J = 18 select @R8=@R8+@t+@LfCr else if @J = 19 select @R9=@R9+@t+@LfCr
else if @J = 20 select @N0=@N0+@t+@LfCr else if @J = 21 select @N1=@N1+@t+@LfCr
else if @J = 22 select @N2=@N2+@t+@LfCr else if @J = 23 select @N3=@N3+@t+@LfCr
else if @J = 24 select @N4=@N4+@t+@LfCr else if @J = 25 select @N5=@N5+@t+@LfCr
else if @J = 26 select @N6=@N6+@t+@LfCr else if @J = 27 select @N7=@N7+@t+@LfCr
else if @J = 28 select @N8=@N8+@t+@LfCr else if @J = 29 select @N9=@N9+@t+@LfCr
else select @M0=@M0+@t+@LfCr select @L=@L+@R+2 end end
-- EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
if @N_SS is NULL begin
if @J < 31 begin -- Выполнение скрипта
if datalength(@P0) != 0 exec(@P0+@P1+@P2+@P3+@P4+@P5+@P6+@P7+@P8+@P9+
@R0+@R1+@R2+@R3+@R4+@R5+@R6+@R7+@R8+@R9+
@N0+@N1+@N2+@N3+@N4+@N5+@N6+@N7+@N8+@N9+@M0)
if @@ERROR != 0 begin
if (select count(*) from @ErrScr) = 0
insert into @ErrScr(t) values('')
insert into @ErrScr(t) select '-- '+MESSAGES+' N'+convert(varchar(10),@N_S)
from EVENT where N_EVENT = 1900070
if datalength(@P0) != 0 insert into @ErrScr(t) values (@P0)
if datalength(@P1) != 0 insert into @ErrScr(t) values (@P1)
if datalength(@P2) != 0 insert into @ErrScr(t) values (@P2)
if datalength(@P3) != 0 insert into @ErrScr(t) values (@P3)
if datalength(@P4) != 0 insert into @ErrScr(t) values (@P4)
if datalength(@P5) != 0 insert into @ErrScr(t) values (@P5)
if datalength(@P6) != 0 insert into @ErrScr(t) values (@P6)
if datalength(@P7) != 0 insert into @ErrScr(t) values (@P7)
if datalength(@P != 0 insert into @ErrScr(t) values (@P
if datalength(@P9) != 0 insert into @ErrScr(t) values (@P9)
if datalength(@R0) != 0 insert into @ErrScr(t) values (@R0)
if datalength(@R1) != 0 insert into @ErrScr(t) values (@R1)
if datalength(@R2) != 0 insert into @ErrScr(t) values (@R2)
if datalength(@R3) != 0 insert into @ErrScr(t) values (@R3)
if datalength(@R4) != 0 insert into @ErrScr(t) values (@R4)
if datalength(@R5) != 0 insert into @ErrScr(t) values (@R5)
if datalength(@R6) != 0 insert into @ErrScr(t) values (@R6)
if datalength(@R7) != 0 insert into @ErrScr(t) values (@R7)
if datalength(@R != 0 insert into @ErrScr(t) values (@R
if datalength(@R9) != 0 insert into @ErrScr(t) values (@R9)
if datalength(@N0) != 0 insert into @ErrScr(t) values (@N0)
if datalength(@N1) != 0 insert into @ErrScr(t) values (@N1)
if datalength(@N2) != 0 insert into @ErrScr(t) values (@N2)
if datalength(@N3) != 0 insert into @ErrScr(t) values (@N3)
if datalength(@N4) != 0 insert into @ErrScr(t) values (@N4)
if datalength(@N5) != 0 insert into @ErrScr(t) values (@N5)
if datalength(@N6) != 0 insert into @ErrScr(t) values (@N6)
if datalength(@N7) != 0 insert into @ErrScr(t) values (@N7)
if datalength(@N != 0 insert into @ErrScr(t) values (@N
if datalength(@N9) != 0 insert into @ErrScr(t) values (@N9)
if datalength(@M0) != 0 insert into @ErrScr(t) values (@M0)
insert into @ErrScr(t) values ('go')
select @N_ES=@N_ES+1 end end end
else if @J < 31 begin
if (@N_SS < 0 or @N_SS = @N_S) and datalength(@P0) != 0
select '-- N'+convert(varchar(10),@N_S)+@LfCr+
@P0+@P1+@P2+@P3+@P4+@P5+@P6+@P7+@P8+@P9+
@R0+@R1+@R2+@R3+@R4+@R5+@R6+@R7+@R8+@R9+
@N0+@N1+@N2+@N3+@N4+@N5+@N6+@N7+@N8+@N9+@M0 t end
else begin select t from @ErrScr order by i delete @ErrScr end
if @C is NULL begin if datalength(@P0) = 0 select @N_S=@N_S-1 break end
if datalength(@P0) != 0 select @N_S=@N_S+1 end
-- ======================================================================================
if @N_SS is NULL begin select @t=convert(varchar(10),@N_S)+char(134)+@FileName+
char(134)+convert(varchar(10),@N_ES)
if @N_SS > 0 -- Фиксация в журнале факта приема SQL скриптов
exec sp_PutJouEvent @ISP=0, @N_ARM=0, @S_EVENT='SP_ExeFileScr',@N_EVENT=101011,@MES=@t
select @t=dbo.f_AssMes(MESSAGES,@t,char(134)) from EVENT where N_EVENT = 101011
if (select count(*) from @ErrScr) != 0 begin
update @ErrScr set t=@t where i = 1
select t,'' e from @ErrScr order by i end else select @t t,'' e end
drop table #Scr return 0
-- #### (c) "PolySystem" 02.11.01 ####################################################






GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ограничение длина запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]