PDA

View Full Version : ایجاد فیلد مشترک در جداول



payam59
شنبه 20 خرداد 1391, 19:13 عصر
چطور میشه یک فیلد جدید و یک SP که بین همه جداول مشترکه در چند دیتابیس ایجاد کرد؟
موضوع اینکه هر دیتابیس نزدیک 300 تا جدول داره.
(متاسفانه دوستان عزیز از T-SQl خیلی سر در نمیارم)

حمیدرضاصادقیان
یک شنبه 21 خرداد 1391, 06:52 صبح
سلام.
در SQL Server شما یک دیتابیس به نام Model دارید که اگر یک Sp داخل اون تعریف کنید یا کلا یک object تعریف کنید با ساختن هر دیتابیس داخل اون اضافه میشه.
حالا برای ایجاد یک فیلد مشترک بین دیتابیسها نمیدونم تحلیل شما برای چیه و دلیل این کار چی هست؟
شما میتونید بین دیتابیسهای مختلف دستورات مختلف رو اجرا کنید.
مقداری بیشتر در مورد کارتون توضیح بدید شاید راهکار بهتری موجود باشه.

SReza1
یک شنبه 21 خرداد 1391, 15:40 عصر
هر چيزي در بانك model وجود دارد. ضمن اينكه با خوندن اطلاعات از جدول sysobjects اطلاعات خوبي دستگيرت ميشه.

payam59
یک شنبه 21 خرداد 1391, 21:14 عصر
دقیقا در هر table قصد دارم یک فیلد بنام user اضافه کنم.
این فیلد باید در همه جدولها و با همین نام هم اضافه بشه
مشکل اینکه باشرمندگی از اسکریپ نویسی و کد نویسی سردر نمی ارم
دوستان اگه لطف کنند بیشتر راهنمایی کنند ممنون میشم

با تشکر از آقای صادقیان و آقا رضا

SReza1
دوشنبه 22 خرداد 1391, 14:34 عصر
دقیقا در هر table قصد دارم یک فیلد بنام user اضافه کنم.
این فیلد باید در همه جدولها و با همین نام هم اضافه بشه
مشکل اینکه باشرمندگی از اسکریپ نویسی و کد نویسی سردر نمی ارم
دوستان اگه لطف کنند بیشتر راهنمایی کنند ممنون میشم

با تشکر از آقای صادقیان و آقا رضا

فكر كنم فقط با اسكريپت نويسي اين كار را بايد بكني. من ابزاري سراغ ندارم

مهرداد صفا
چهارشنبه 10 شهریور 1395, 12:28 عصر
چطور میشه یک فیلد جدید و یک SP که بین همه جداول مشترکه در چند دیتابیس ایجاد کرد؟
موضوع اینکه هر دیتابیس نزدیک 300 تا جدول داره.
(متاسفانه دوستان عزیز از T-SQl خیلی سر در نمیارم)


سلام خسته نباشید!
با استفاده از T-SQL:
- یک کوئری روی جدول SYS.Tables بزنید و نام جداول ایجاد شده توسط کاربر رو بگیرید. این جدول یک فیلد به نام type_desc داره که برای جداول کاربر مقدارش user_table هست.
- یک cursor برای کوئری بالا تعریف کنید و به ازای هر رکورد یک فرمان داینامیک برای اضافه کردن column روی جدول مربوط به رکورد ایجاد کنید.
دقیقا اگر این کد رو کپی کنید و روی دیتابیس اجرا کنید، به تمام جداولتون در دیتابیس یک column به نام UserName اضافه میشه.



--بسم الله الرحمن الرحیم
--اللهم صل علی محمد و آل محمد

declare c cursor for select name from sys.tables where type_desc='user_table';
declare @table_name NVarChar(max);
declare @tsql nvarchar(max);
open c;
fetch from c into @table_name;
while @@fetch_status=0
begin
set @tsql=N'alter table ' +
@table_name +
N' add UserName NvarChar(100)';
execute @tsql;
fetch from c into @table_name;
end;

close c;
deallocate c;

khorsandreza
چهارشنبه 10 شهریور 1395, 15:39 عصر
سلام دوستان موضوع مدل در دیتا بیس برایم تازگی داشت مرجع و یا مستندات در این باره اگر دسترسی دارید اعلام بفرمائید . و یا در سایت بحث شده باشد