PDA

View Full Version : محل ذخیره سازی SP



میلاد قاضی پور
پنج شنبه 18 شهریور 1389, 02:10 صبح
سلام . من هنوزم که هنوزه در پیدا کردن پراسیجر هایی که مینویسم مشکل دارم .قبلا یکی از دوستان راهنمایی کردن که ممکنه درن پراسیجر های دیتابیس دیگه ای ذخیره شده باشه وقتی چک کردم دیدم بله اونجاست . اما حالا هر پراسیجری مینویسم وقتی میام پیداش کنم که کجا ذخیره شده آب میشه میره تو زمین . میشه راهنمایی کنید که چجوری میشه محل ذخیره سازی پراسیجر هارو خودمون تعیین کنیم یا پیداشون کنیم ؟http://barnamenevis.org/forum/images/buttons/post_thanks.gif

میلاد قاضی پور
پنج شنبه 18 شهریور 1389, 02:21 صبح
ممکنه یکی دو هفته به خاطر مسائلی که پیش میاد معطل بشم ولی به محض اینکه تاپیک میزنم جوابشو خودم پیدا میکنم . لونشونو یافتم :لبخندساده:ممنون.

بهزادصادقی
پنج شنبه 18 شهریور 1389, 02:31 صبح
من پیشنهاد می کنم که متن هر یک از stored procedure های خود را اول از همه در درون یک فایل جداگانه ذخیره سازی. این فایل را هر کجا که مناسب می بینی و یادت نمی رود در روی هارد خود ذخیره کن. مثلا من در درون پوشه Documents خود، برای هر یک از مشتریانم یک پوشه به نام آنها می سازم و کد تمام stored procedure هایی را که برای سیستم آنها می نویسم توی همان پوشه خودشان ذخیره می کنم.

اگر این کار را بکنی، آن وقت لازم است که هر وقت می خواهی یکی از stored procedure های خود را تغییر دهی، اول متن آن را در فایل آن در روی هاری تغییر دهی، و بعد آن فایل را از طریق SQL Server Management Studio اجرا کنی. به عبارت دیگر، دیگر منبع اصلی کد stored procedure تو دیگر آن چه در یک دیتابیس ذخیره شده نیست. بلکه منبع اصلی کد آن همان فایلی است که به عنوان source در روی هارد ذخیره شده.

یکی از فواید این رویکرد این است که تو می توانی در اول هر یک از این فایل ها مشخص کنی که آن stored procedure باید در کدام دیتابیس پیاده سازی شود. فرض کنید شما دیتا بیسی داری به اسم LostAndFound. حال، شما می خواهید کاری کنید که یک stored procedure خاص فقط به آن دیتا بیس اضافه شود و نه هیچ دیتا بیس دیگری. شما می توانید این کار را به سادگی انجام دهید. فقط لازم است که این دو خط را به آغاز قایل هر stored procedure ای که اراده می کنید اضافه کنید:



use LostAndFound
go


این باعث می شود که زمانی که SQL Server Management Studio محتویات آن فایل را که کد stored procedure شما است را اجرا می نماید، قبل از هر چیزِی، دیتابیس LostAndFound را به عنوان محل پیاده سازی و اجرای آن کد تعیین نماید.

میلاد قاضی پور
پنج شنبه 18 شهریور 1389, 04:17 صبح
در اینصورت اس کیو ال سرور چطوری فایل مقصد رو پیدا میکنه ؟ چجوری باید آدرس بدیم بهش ؟فرض کنیم بخوایم در برناممون از این اس پی استفاده کنیم . اگه توی خود دیتابیس باشه میشه اسم اون اس پی رو به برنامه و اس کیو ال کامند داد اما اگه روی فایل باشه چی؟

بهزادصادقی
پنج شنبه 18 شهریور 1389, 04:32 صبح
شما اول کد را توی یک فایل می نویسی. بعد با استفاده از SQL Server Management Studio آن فایل را باز کرده و بعد آن را اجرا می نمائید. در هنگام اجرای دستورات درون فایل، SQL Server می آید و با توجه به آن دستورات اقدام به تولید یک stored procedure در دیتابیس مورد نظر شما می کند. بعد از اینکه فایل اجرا شد، آن stored procedure در دیتابیس مورد نظر شما ایحاد شده و آماده بهره برداری است. درست مثل هر stored procedure دیگری.

از حالا به بعد، SQL Server احتیاجی به آن فایل که دستورات stored procedure شما در آن ذخیره شده ندارد. اتفاقا، SQL Server اصلا نمی داند که همچین فایلی وجود دارد. چون در حقیقت، از دید SQL Server، تنها اتفاقی که افتاد این بود که SQL Server یک سری دستوراتی را که برنامه SQL Server Management Studio برایش فرستاده بود اجرا کرد، و اجرا کردن آن دستورات منجر به ایجاد آن stored procedrue شد. درست مثل اینکه شما خودت با دست آن دستورات را توی یکی از پنجره های SQL Server Management Studio تایپ کرده بودی و بعد آن را اجرا کرده بودی.

کد آن stored procedure از آن به بعد در روی خود آن دیتا بیس موجود است. و هر گاه شما می خواهید اجرایش کنید، مثل همه stored procedure های معمولی فقط اسمش را به SQL Server می دهید. اگر خواستید، شما می توانید طبق روال حاضر خودتان، کد آن را از SQL Server درخواست کرده و آن را Modify نمایید.

ولی شما این کار را نخواهید کرد. هر وقت احتیاج دارید آن stored procedure را تغییر دهید، بر می کردید سراغ آن فایل اولی. فایل منبع. شما تغییرات خود را در آنحا می هید و بعد آن فایل را save کرده و بعد دوباره آن را با استفاده از SQL Server Management Studio اجرا می نمائید، و آن اجرای دوباره آن stored procedure را با کد جدیدش از نو می سازد.