Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ограничение длина запроса
|
|||
|---|---|---|---|
|
#18+
Привет всем !!! Конструкция EXEC ('insert into ' + @@TableName + ' (...') Имеет ли место ограничение на длину или нет. Заранеее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2002, 14:02 |
|
||
|
Ограничение длина запроса
|
|||
|---|---|---|---|
|
#18+
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 ." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2002, 14:25 |
|
||
|
Ограничение длина запроса
|
|||
|---|---|---|---|
|
#18+
Если исп. переменные _ то достаточно. Нижеследующей процедурой я через 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2002, 07:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32026133&tid=1823382]: |
0ms |
get settings: |
14ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 420ms |

| 0 / 0 |
