تغییر بخشی از چندین رکورد در sql server
با سلام
اگر در یک جدول sql بیش از یک میلیون رکورد تاریخ داشته باشم به تاریخ 2016 البته فیلد مربوطه از نوع datetime است و بخوام همه رو بکنم 2019 چطوری باید عمل کنم
ممنون
9 پاسخ
ممنون جناب احمدی
اون datecol منظورتون اسم فیلد تاریخی است ؟
چک کنید درایوی که فایل Log روش هست فضای خالی داره؟
زیاد
از فضا نیست
این دستابیس کانکشن بازی هم نداره
بله، منظور اسم فیلد مورد نظرتون هست.
جناب آقای احمدی
بعد از اجرای دستوری که فرمودید پیغام زیر رو میده
The transaction log for database 'NewSMDA' is full due to 'LOG_BACKUP'.
که بعدش من سعی کردم shrink بکنمش که نشد
بنظرتون مشکل از کجاست که پیغام full بودن log file رو میده ؟
یکبار از بانکتون Full Backup بگیرید و بعد اسکریپت زیر رو اجرا کنید ببینید حل میشه؟
USE DbName; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE DbName SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE (LogName, 1); GO -- Reset the database recovery model. ALTER DATABASE DbName SET RECOVERY FULL; GO
ممنون ولی باز هم پیغام زیر رو داد
The transaction log for database 'NewSMDA' is full due to 'ACTIVE_TRANSACTION'.
سلام، وقت بخیر
شما می تونید از تابع DATEADD استفاده کنید، به این صورت:
UPDATE [Table] SET [DateCol] = DATEADD(YEAR, 3, [DateCol])
اسکریپت بالا 3 سال به همه تاریخ های جدول اضافه می کنه. البته کد بالا در صورتی جواب میده که همه تاریخ ها 2016 باشند.
روی دیتابیس راست کلیک کنید، گزینه Properties از قسمت Files چک کنید تنظیمات مربوط به AutoGrowth و MaxSize فایل ها چقدر هست: