PDA

View Full Version : ایجاد temp table در c#



amin_rezaee
پنج شنبه 13 مرداد 1390, 19:02 عصر
من میخواستم یه temp table داخل sql server بسازم که کدشو بلد نبودم.
دوستان اگه کمک کنید و کدشو بهم بگید نهایت تشکر را ازتون دارم.
بعد میخواستم بدونم که این جدولو اگه روی چندین سیستم در شبکه ایجاد کنیم داده هاشون با هم قاطی نمیشن؟فقط روی همون سیستم ایجاد میشن یا داخل دیتابیس روی سرور؟

morteza271
پنج شنبه 13 مرداد 1390, 19:09 عصر
CREATE TABLE #people
(
id INT,
name VARCHAR(32)
)

این کد برای یه جدول تمپ هستش.
ولی به نظرم دیتابیس روی سرور ایجاد میشه و چون ممکنه چندکاربر به اون جدول دسترسی داشته باشن احتمالا مشکلاتی پیش میاد که باید کنترلشون کنین.
موفق باشید.

amin_rezaee
پنج شنبه 13 مرداد 1390, 22:13 عصر
کسی مطمئن نیست که جدول temp کجا تولید میشه؟

Reza_Yarahmadi
جمعه 14 مرداد 1390, 11:01 صبح
جداول Temp در SQL Server درون دیتابیس tempdb ساخته میشوند و از طریق پوشه Temporary Tables درون این دیتابیس قابل مشاهده هستند.
هر جدول Temp بر اساس کانکشن وصل شونده ساخته میشود و 2 جدول Temp که توسط 2 برنامه مختلف ساخته شده اند باهم تلاقی داده ندارند. چون نام واقعی جدول ، ترکیبی از نام انتخابی و کانکشن مورد استفاده است. برای مثال نام زیر نامی است که SQL Server برای جدولی با نام Temp# قرار داده است.
dbo.#Temp_________________________________________ __________________________________________________ ____________________00000000000B
به محض قطع شدن کانکشن هم جدول ساخته شده حذف خواهد شد.
(برای تست این موضوعات ، یک برنامه بنویسید که کارهای ساختن جدول و Select روی اون رو انجام بده ، بعد برنامه رو به طور همزمان 2 بار باز کنید و جدا بودن جداول رو تست کنید)

amin_rezaee
جمعه 14 مرداد 1390, 17:45 عصر
جداول Temp در SQL Server درون دیتابیس tempdb ساخته میشوند و از طریق پوشه Temporary Tables درون این دیتابیس قابل مشاهده هستند.
هر جدول Temp بر اساس کانکشن وصل شونده ساخته میشود و 2 جدول Temp که توسط 2 برنامه مختلف ساخته شده اند باهم تلاقی داده ندارند. چون نام واقعی جدول ، ترکیبی از نام انتخابی و کانکشن مورد استفاده است. برای مثال نام زیر نامی است که SQL Server برای جدولی با نام Temp# قرار داده است.
dbo.#Temp_________________________________________ __________________________________________________ ____________________00000000000B
به محض قطع شدن کانکشن هم جدول ساخته شده حذف خواهد شد.
(برای تست این موضوعات ، یک برنامه بنویسید که کارهای ساختن جدول و Select روی اون رو انجام بده ، بعد برنامه رو به طور همزمان 2 بار باز کنید و جدا بودن جداول رو تست کنید)
ممنون دوست عزیز.
نام جدول همونجوری بود که گفتید.حالا اگه بخوام یه دستور select بنویسم اسم جدولمو چجوری پیدا میکنم؟
connection string چجوری میشه؟باید آدرس سرور را بدم؟اگه نه روی هر سیستم باید sql server نصب کنم؟!!

Reza_Yarahmadi
جمعه 14 مرداد 1390, 20:12 عصر
حالا اگه بخوام یه دستور select بنویسم اسم جدولمو چجوری پیدا میکنم؟
جدول رو شما میسازید پس باید بدونید اسمش چیه!! جداول Temp همون طوری که از اسمشون معلومه جداول موقتی هستند و برای موارد خاص مورد استفاده قرار میگیرند و نمیشه ازشون به عنوان Data Storage استفاده کرد.

connection string چجوری میشه؟باید آدرس سرور را بدم؟
کانکشن استرینگ میتونه تنظیم شده بر اساس هر کدوم از دیتابیس های روی سرور باشه ، فقط یوزری که به SQL Server وصل میشه باید دسترسی ساخت و حذف جداول Temp رو داشته باشه.

اگه نه روی هر سیستم باید sql server نصب کنم؟!!
خدمت شما عرض کردم ، جداول Temp درون دیتابیس tempdb واقع در پوشه System Databases بر روی سرور ایجاد می ن.

shocraneh
سه شنبه 25 مرداد 1390, 16:40 عصر
می خام یک جدول temporary ایجاد کنم که متشکل از دو تا از جدول هام باشه. (با یک جدول مشکل ندارم دوتایی ایجاد مشکل می کنه )آخه تا جایی که من فهمیدم از جداول موقت زمانی استفاده میشه که نمیشه دو تا جدول رو با هم join کرد. اسکریپت دو جدول و کوئری مربوطه رو گذاشتم


GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T1](
[a] [nchar](10) NULL
) ON [PRIMARY]




GO
/****** Object: Table [dbo].[T2] Script Date: 08/16/2011 22:38:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[T2](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Shomare] [varchar](20) NULL,
[Tarikh] [varchar](10) NULL,
[Sherkat] [nvarchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF




CREATE TABLE #LocalTempTable(
Id int,
Shomare varchar(20),
Tarikh varchar(10),
Sherkat nvarchar(50),
a nchar(10))
INSERT INTO #LocalTempTable (Id,Shomare,Tarikh,Sherkat )
select * from T2
INSERT INTO #LocalTempTable (a)
select * from a

select * from #LocalTempTable

drop table #LocalTempTable




میخام خروجی این باشه
Id,Shomare,Tarikh,Sherkat,a

shocraneh
سه شنبه 25 مرداد 1390, 22:32 عصر
دوستان سوالم رو تغییر دادم

Reza_Yarahmadi
چهارشنبه 26 مرداد 1390, 17:01 عصر
برای مثال شما نیازی به استفاده از جداول موقت نیست و در صورت استفاده از SQL Server 2005 به بالا میتونید بصورت زیر عمل کنید
CREATE TABLE [dbo].[T1](
[a] [nchar](10)NULL
)ON [PRIMARY]

Insert Into T1 Values('YourValue1')
Insert Into T1 Values('YourValue2')
Insert Into T1 Values('YourValue3')
Insert Into T1 Values('YourValue4')
Insert Into T1 Values('YourValue5')
Insert Into T1 Values('YourValue6')

CREATE TABLE [dbo].[T2](
[Id] int IDENTITY(1,1)NOT NULL,
[Shomare] varchar(20)NULL,
[Tarikh] varchar(10)NULL,
[Sherkat] nvarchar(50)NULL
)ON [PRIMARY]

Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare1', 'Tarikh1', 'Sherkat1')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare2', 'Tarikh2', 'Sherkat2')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare3', 'Tarikh3', 'Sherkat3')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare4', 'Tarikh4', 'Sherkat4')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare5', 'Tarikh5', 'Sherkat5')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare6', 'Tarikh6', 'Sherkat6')
Insert Into T2 (Shomare, Tarikh, Sherkat) Values ('Shomare7', 'Tarikh7', 'Sherkat7')


Select
T2.Shomare,
T2.Tarikh,
T2.Sherkat,
T1.A
From
(Select A, Row_number() Over(Order BY A) RowNum From T1) T1
Left Outer Join
(Select *, Row_Number() Over(Order BY ID) RowNum From T2) T2
ON
T1.RowNum = T2.RowNum

Drop Table T1
Drop Table T2

shocraneh
پنج شنبه 27 مرداد 1390, 10:06 صبح
تشکر واقعا عالی بود . میشه لطف کنید توضیح بدید کی از جداول موقت استفاده میشه و یک نمونه که چه طوری این کارو باید انجام داد .نمونه مختصری باشه صرفا جهت یادگیری. ممنون از لطفتون

Reza_Yarahmadi
پنج شنبه 27 مرداد 1390, 18:25 عصر
میشه لطف کنید توضیح بدید کی از جداول موقت استفاده میشه
اکثر مواقع زمانی جداول موقت مورد استفاده قرار میگیرند که نیاز باشه رکوردهای یک (یا چند) جدول بصورت تک تک بررسی و مورد پردازش خاصی قرار بگیرند(با استفاده از کرسر رکوردها خونده بشه). اگه قرار باشه نتیجه همه پردازش ها نمایش داده بشه باید نتیجه هر پردازش توی یک جدول کمکی ذخیره بشه و در نهایت اطلاعات جدول کمکی به عنوان خروجی نمایش داده بشه.