PDA

View Full Version : دستور insert into و یک error



programer1389
دوشنبه 07 تیر 1389, 11:28 صبح
وقتی میخواهم با یک برنامه که بانکش sql server2000 هست عملیات insert into رو انجام بدم با این مشکل برخورد میکنم البته قبلا مشکلی نبود امروز اینجوری شده لطفا سریع راهنمایی کنید

yosefi_hossein
دوشنبه 07 تیر 1389, 12:40 عصر
:خجالت:سلام این خطا مال زمانی که فایل log شما full شده 1 back up از بانکتون بگیرید درست میشه

programer1389
دوشنبه 07 تیر 1389, 13:08 عصر
چه ربطی به back upداره؟

Ali_Hashemi
دوشنبه 07 تیر 1389, 13:19 عصر
همونطور که yosefi_hossein (http://barnamenevis.org/forum/member.php?u=118232) گفتند این خطا به علت Full شدن فایل Log دیتابیس شما هست.
راه حل شما اینه که از فایل Log بکاپ بگیرید و اون رو Truncate کنید. میتونید این کار رو از Enterprise Manager انجام بدید ولی برای سادگی کار , میتونید این دستوراتی که نوشتم رو اجرا کنید تا کارهایی که گفتم به صورت اتوماتیک انجام بشه و مشکلتون رفع بشه:


Declare @Databasename varchar(100)
Set @Databasename = 'MessageService'

Declare @LogFileName varchar(200)
Declare @SQL nvarchar(1000)

Set @SQL = 'select @LogFileName = name from '+@Databasename+'..sysfiles where groupid = 0'
exec SP_executesql @SQL , N'@LogFileName varchar(200) output', @LogFileName output

Set @SQL = 'Use '+@Databasename+'
DBCC SHRINKFILE('+@LogFileName+', 1)
BACKUP LOG '+@Databasename+' WITH TRUNCATE_ONLY
DBCC SHRINKFILE('+@LogFileName+', 1)'
Print @SQL
execute(@SQL)تنها کاری که لازمه انجام بدید اینه که در خط دوم به جای MessageService , نام دیتا بیس خودتون رو بنویسید و اسکریپت رو اجرا کنید
(این کد رو همین الان نوشتم وتست کردم و بدون مشکل اجرا میشه(SQL 2000, 2005). ولی برای SQL2008 به بعد از روش دیگری برای این کار استفاده میشه و این اسکریپت ساپورت نمیشه)

programer1389
دوشنبه 07 تیر 1389, 13:49 عصر
من اومدم روی سرور چند تا دیتابیس ازمایشی رو پاک کردم بدون اینکه دستی به دیتابیس اصلی بزنم مشکل حل شد فکر کنم درایوی که دیتابیس هام روش بود پر شده باشه