Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách lấy lại thủ tục, hàm, bảng được lưu trữ đã bị loại bỏ trong SQL Server 2008

Tôi có Giải pháp cho câu hỏi của mình. Đầu tiên Cần tạo một thủ tục

CREATE PROCEDURE [dbo].[sp_Recover_Dropped_Objects]
    @Database_Name NVARCHAR(MAX),
    @Date_From DATETIME,
    @Date_To DATETIME
AS

DECLARE @Compatibility_Level INT

SELECT @Compatibility_Level=dtb.compatibility_level
FROM master.sys.databases AS dtb WHERE [email protected]_Name

IF ISNULL(@Compatibility_Level,0)<=80
BEGIN
    RAISERROR('The compatibility level should be equal to or greater SQL SERVER 2005 (90)',16,1)
    RETURN
END

Select [Database Name],Convert(varchar(Max),Substring([RowLog Contents 0],33,LEN([RowLog Contents 0]))) as [Script]
from fn_dblog(NULL,NULL)
Where [Operation]='LOP_DELETE_ROWS' And [Context]='LCX_MARK_AS_GHOST'
And [AllocUnitName]='sys.sysobjvalues.clst'
AND [TRANSACTION ID] IN (SELECT DISTINCT [TRANSACTION ID] FROM    sys.fn_dblog(NULL, NULL)
WHERE Context IN ('LCX_NULL') AND Operation in ('LOP_BEGIN_XACT') 
And [Transaction Name]='DROPOBJ'
And  CONVERT(NVARCHAR(11),[Begin Time]) BETWEEN @Date_From AND @Date_To)
And Substring([RowLog Contents 0],33,LEN([RowLog Contents 0]))<>0

Thực hiện quy trình như bên dưới

EXEC sp_Recover_Dropped_Objects 'Sample_Training','2015/12/24','2015/01/07'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khám phá các tùy chọn chờ khóa ưu tiên thấp trong SQL Server 2014 CTP1

  2. Cách liên kết cơ sở dữ liệu Access với SQL Server trong Access 2016

  3. Loại toán hạng đụng độ:int không tương thích với ngày + Câu lệnh INSERT xung đột với ràng buộc FOREIGN KEY

  4. Truyền MSSQL ([varcharColumn] thành int) trong SELECT được thực thi trước khi mệnh đề WHERE lọc ra các giá trị không hợp lệ

  5. Làm cách nào để giữ lại các thẻ CDATA khi lưu trữ các kết quả truy vấn trong một biến Xml?