PDA

View Full Version : سوال: مشکل در shrink کردن دیتابیس



mahdidabaghi
سه شنبه 15 فروردین 1391, 11:08 صبح
سلام خدمت دوستان
من یه پروسیجر تو اس کیو ال واسه shrink کردن دیتابیس درست کردمو زمانی که تو خود محیط اس کیو ال اجراش میکنم بدون هیچ مشکلی اجرا میشه و عملیاتشم موفقیت آمیزه
ولی نمیدونم این پروسیجرو چجوری تو مخیط سی شارپ فراخونیش کنم
میشه منو راهنمایی کنین چجور میتونم؟
اینم پروسیجر من تو اس کیو ال
alter procedure sherink
as
begin
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE His1
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (His1_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE His1
SET RECOVERY FULL;
GO
end
his1 نام دیتابیس منه
ممنون میشم راهنماییم کنین

mahdidabaghi
سه شنبه 15 فروردین 1391, 14:06 عصر
fدوستان من باید پروژمو تو این 2- 3 روز تحویل بدم وبا این مشکل بزرگ نمیدونم چی کار کنم
ممنون میشم کمکم

mahdidabaghi
چهارشنبه 16 فروردین 1391, 22:10 عصر
یعنی واقعا اینجا کسی تا حالا به این مشکل برنخورده؟

p.yazdkhasti
چهارشنبه 16 فروردین 1391, 22:29 عصر
سلام
به منظور اجرای این Stored Procedure می توانید از کد زیر استفاده نمایید. در کد زیر متغیر conString برابر با Connection String لازم جهت ارتباط با پایگاه داده می باشد. همچنین لازم است به جای عبارت StoredProcedureName نام Stored Procedure خود را در پایگاه داده قرار دهید. از ExecuteNonQuery به این دلیل اسفاده شده است که Proc شما خروجی ندارد.

var conString = "";
using ( var con = new SqlConnection(conString))
{
using ( var command = new SqlCommand("StoredProcedureName", con))
{
command.CommandType = CommandType.StoredProcedure;
con.Open();
command.ExecuteNonQuery();
con.Close();
}
}

mahdidabaghi
چهارشنبه 16 فروردین 1391, 22:51 عصر
ممنون از شما دوست بسیار گرامی
فقط یه سوال دیگه و اون این که ایا باوارد شدن اطلاعات خیلی زیاد (حدود 20000 رکورد 60 فیلدی) با شرینک کردن به روش بالا ایا مشکلی پیش میاد یا نه؟
ممنون میشم به این سوال حقیر هم جواب بدین

p.yazdkhasti
چهارشنبه 16 فروردین 1391, 23:58 عصر
سلام
Shrink کردن پایگاه داده زیاد توصیه نمی شود. بهتر است به جای آن مستقیما فایل Log را مستقیما truncate نمایید. علاوه بر این SQL Server قابلیتی با نام Auto Shrink دارد که مانند Proc شما کار می کند و در صورت نیاز به صورت اتوماتیک اجرا می شود. دقت کنید شما در Proc خود Recovery Model را برای Truncate کردن فایل Log به Simple تغییر می دهید که این موضوع برای عملکرد مورد نیاز شما لازم است ولی نشان می دهد که شما پلن مشخصی برای Backup گیری از پایگاه داده خود ندارید.
ممنون

mahdidabaghi
پنج شنبه 17 فروردین 1391, 22:39 عصر
متشکرم
بهترین روش از نظر شما کدوم روشه؟