• بعص النصائح لكل مدير قاعده بيانات #MSSQL #SQLSERVER

    احيانا نجد مشكله فى خادم قواعد البيانات ونجد ان حاله الداتا بيز تصبح (in recovery) وحسب حجم الخلل او حجم استعاده البيانات تستغرق قاعده البيانات الوقت حتى ترجع

    اليكم هذا الامر الخاص بخادم MSSQL SERVER وسيسمح لك بمعرفه التقدم والوقت المتبقي بالدقائق والساعات حتى ترجع قاعده البيانات

     DECLARE @DBName VARCHAR(64) =DATABASENAME
    DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
    INSERT INTO @ErrorLog
    EXEC sys.xp_readerrorlog 0, 1, 'Recovery of database', @DBName
    
    SELECT TOP 5
    	 [LogDate]
    	,SUBSTRING([TEXT], CHARINDEX(') is ', [TEXT]) + 4,CHARINDEX(' complete (', [TEXT]) - CHARINDEX(') is ', [TEXT]) - 4) AS PercentComplete
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
    	,[TEXT]
    
    FROM @ErrorLog ORDER BY [LogDate] DESC

    اما في حاله ان اردت ان تستعلم عن الزياده المفاجئه فى قاعده البيانات وتحليل الاداء يمكنك ان كنت تستخدم خاصيه النسخ الاحتياطى عن طريق قاعده البيانات ان تقوم بالاستعلام التالي والذي سيمكنك من معرفه حجم الداتا بيز فى كل عمليه نسخ احتياطى ومن ثم تعرف المشكله حدثت فى اى توقيت

    SELECT DISTINCT backup_date, [DATABASENAME] as Database_Size
    from
          (select isnull(backup_size / (1024 * 1024 * 1024), 0) as backup_size,
          database_name,
          cast(cast(backup_finish_date as varchar(12)) as datetime) as backup_date
          from msdb.dbo.backupset
          where type = 'd') p
    pivot
          (
          sum(backup_size)
    FOR database_name IN (tavl2
    )) as pvt 
    order by backup_date

    وفى حاله وجدت ملف ال lOG ممتلء وتريد ان تفرغ المساحه الخاصه به ان كان حجمه كبير يمكنك من خلال التالي

    اشر علي قاعده البيانات من خلال SQL Server Management Studio

    قم بالضغط بالماوس يمين واختار Tasks > shrink> files ثم اختر Logfile او Datafile سيظهر  لك المساحه الفارغه التى تستطيع تفريغها

     




اترك رد - رأيك يهمنى :)