Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
Читаю про временные таблицы и переменные типа table, про то, что во всех случаях создается таблица в tmpdb.
Выполняю код для проверки:
select count(*) from tempdb.information_schema.tables
where table_name like '%#%'

declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.information_schema.tables
where table_name like '%#%'

create table #a(col int)
insert into #a values(1)

select count(*) from tempdb.information_schema.tables
where table_name like '%#%'
и он не показывает, что создается таблица в tmbdb для переменной типа table.
выводит результат: 288, 288, 289.

Как понимать этот результат?

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
23 авг 13, 17:53    [14749118]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Почему вы считаете, что название такой таблицы будет содержать символ '#' ?
Этого никто не обещал.
23 авг 13, 17:55    [14749130]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
Глеб,

select count(*) from tempdb.information_schema.tables

declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.information_schema.tables

create table #a(col int)
insert into #a values(1)

select count(*) from tempdb.information_schema.tables

тот-же результат
23 авг 13, 17:58    [14749140]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Вот так убеждайтесь:

select count(*) from tempdb.dbo.sysobjects
GO
declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.dbo.sysobjects
GO
select count(*) from tempdb.dbo.sysobjects
23 авг 13, 17:59    [14749147]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
Глеб
Вот так убеждайтесь:

select count(*) from tempdb.dbo.sysobjects
GO
declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.dbo.sysobjects
GO
select count(*) from tempdb.dbo.sysobjects
так видно.
и так тоже:
select count(*) from tempdb.information_schema.tables
go

declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.information_schema.tables
go

select count(*) from tempdb.information_schema.tables
go


а почему в первом случае не видно?
23 авг 13, 18:05    [14749171]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
o-o
Guest
Глеб
Почему вы считаете, что название такой таблицы будет содержать символ '#' ?
Этого никто не обещал.


не-не, тоже с # начинается.
можно, например, так увидеть:

declare @t table(col int)
insert into @t values(1)

select object_name(id) as name 
into #t1
from tempdb.dbo.sysobjects
GO
select object_name(id) as name 
into #t2
from tempdb.dbo.sysobjects

select name from #t1
except
select name from #t2


или так:

checkpoint;

declare @t table(col int)
insert into @t values(1);

select Operation, AllocUnitName
from sys.fn_dblog(null, null);
23 авг 13, 18:14    [14749204]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
o-o,

вот этот скрипт:
declare @t table(col int)
insert into @t values(1)

select object_name(id) as name 
into #t1
from tempdb.dbo.sysobjects
GO
select object_name(id) as name 
into #t2
from tempdb.dbo.sysobjects

select name from #t1
except
select name from #t2

select name from #t2
except
select name from #t1

мне дважды ничего не вводит
23 авг 13, 18:18    [14749219]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
переменная типа table
... мне дважды ничего не вводит ...

не выводит, поправлюсь
23 авг 13, 18:20    [14749229]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
o-o
Guest
переменная типа table
переменная типа table
... мне дважды ничего не вводит ...

не выводит, поправлюсь


извиняюсь.
или до скрипта выполнить
use tempdb

или в object_name указать базу tempdb вторым параметром:
object_name(id, 2)
23 авг 13, 18:24    [14749241]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
переменная типа table
Глеб
Вот так убеждайтесь:

select count(*) from tempdb.dbo.sysobjects
GO
declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.dbo.sysobjects
GO
select count(*) from tempdb.dbo.sysobjects
так видно.
и так тоже:
select count(*) from tempdb.information_schema.tables
go

declare @t table(col int)
insert into @t values(1)

select count(*) from tempdb.information_schema.tables
go

select count(*) from tempdb.information_schema.tables
go


а почему в первом случае не видно?


Видимо, потому что таблица создается при копиляции батча, до начала исполнения первой инструкции батча.
23 авг 13, 19:18    [14749413]     Ответить | Цитировать Сообщить модератору
 Re: таблица в tmpdb для переменной типа table  [new]
переменная типа table
Guest
ок, всем спасибо!
23 авг 13, 20:41    [14749614]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить