PDA

View Full Version : اجرای یک SP روی پایگاه های داده مختلف



AmirAlimadadi
چهارشنبه 31 تیر 1388, 13:38 عصر
سلام به همه
من یه سوال خیلی مهم دارم، چه طوری می شه یه SP توی یه DataBase داشت ولی با صدا کردن اون SP، از دات نت، اون SP روی یه DataBase دیگه اجرا بشه، و حاصل اون روی اون دیتابیس اعمال بشه. لازم هست که بگم ساختار هر دو DataBase مثل هم هست، یعنی مطمئنا SP درست عمل می کنه.
شاید به نظر عجیب برسه، ولی من دو تا دیتابیس دارم که مثل هم هستند، حالا می خوام برای اونا SP بنویسم، اگه بخوام هر دو مثل هم باشن، باید توی هر دو تا Sp های یکسان بنویسم یا حداقل کپی کنم، ولی من نمی خوام این کار رو انجام بدم، آیا راهی هست که با مثلا یه پارامتر، نام دیتابیسی که قراره SP روش عمل کنه رو هم پاس کنیم؟!
ممنون

ASKaffash
چهارشنبه 31 تیر 1388, 14:10 عصر
سلام
کافیست در این SP که در برای دسترسی به آن DB از این شکل استفاده کنید:


Select * From OtherDB.dbo.TableName ...

AmirAlimadadi
شنبه 03 مرداد 1388, 10:34 صبح
ممنون از راهنماییتون، اما من می خوام نام دیتابیس رو به عنوان پارامتر به Sp بفرستم، در این صورت ایراد می گیره، اما در صورتی که به گفته شما مشخصا اسم دیتابیس رو بنویسیم ایراد نمی گیره که به درد من نمی خوره

Alireza Orumand
شنبه 03 مرداد 1388, 12:16 عصر
سلام
برای کاری که شما میخاهید انجام بدید فکر نمیکنم راه مستقیمی وجود داشته باشه. برای این کار شاید بهتر باشه کوئری خودتو رو به صورت یک strig ایجاد کنید و بعد هر بار به کمک sp_executesql اونو اجرا کنید. به شکل زیر


create proc proceName
@dbName nvarchar(100)
as
declare @sql NVARCHAR(MAX)
set @sql = 'select * from ' + @dbName + '.dbo.tablename'
exec sp_executesql @sql
go

موفق باشید.