/ / tsql sql няколко временни таблици със същото име - sql-server, tsql, съхранени процедури, отчитане-услуги, sql-server-2012

tsql sql няколко таблици temp със същото име - sql-server, tsql, съхранени процедури, отчитане-услуги, sql-server-2012

Работя по доклад, използващ RDL файлове и съхранени процедури. Името на RDL файла е test.rdl и имам четири (4) съхранени процедури, свързани с този файл test.rdl. така че този файл ще има четири набора от данни.

име на файла:

test.rdl

имена на съхранени процедури:

  • sp_test_1
  • sp_test_2
  • sp_test_3
  • sp_test_4

всяка от тези съхранени процедури има временни таблици със същото име (#temp).

create table #temp(
ID int,
Name varchar(max),
Location varchar(max)
)

insert into #temp

select * from anothertable where date between "20171001" and "20171031"

няколко допълнителни заявки, за да получите желания резултат и след това най-накрая пуснете таблицата temp.

select . . . . . . . . . .

drop table #temp

така че всички четири съхранени процедури имат временна таблица, използваща едно име (#temp).

така че въпросът ми е, ще работи добре, когатоRDL тестовият файл се изпълнява и когато всички четири (4) запомнени процедури се извикват едновременно? моята загриженост е с таблицата #temp, и четирите запомнени процедури са с drop table #temp в края на теста. това ще повлияе ли на запълването на временните таблици по време на изпълнение, тъй като една от съхранените процедури може да завърши с таблица, докато другата работи, което води до отмяна на заявка или довършване с непълни резултати?

някои мога да обясня. Надявам се, че това е валиден въпрос.

Отговори:

2 за отговор № 1

Общо казано.... Местни таблици с временни таблици (с помощта на единичен #) са достъпни само за процедурата, която ги е извикала, или процедурите, които са били извикани от същата процедура като тази, която е създала временната таблица.

От вашето описание звучи като че ли имате само 4 масиви от данни, всяка от които изпълнява Stored Procedure и всяка от тези SP създава временна таблица, наречена #temp, Не разполагате с SP, която вика другите SP ...

Ако приемем, че е правилно, тогава ще работи добре, всъщност дори не трябва да изпускате временната таблица в края на процеса, тъй като това става автоматично.

Фактът, че всички таблици с временни стойности са посочени с едно и също име, няма значение, действителното име на таблицата за физически темп, съхранявана в базата данни, няма да бъде #temp, а нещо повече tempdb.dbo.#temp_______________000000000123, то е, че те всъщност са всички уникални таблици в базата данни, но SQL Server обработва превода до / от името, което сте го създали автоматично.