How to catch an error message and send it by EMail? - sql-server

Now when I take a backup I received error the problem not in error the problem in
How can I catch this body of the error message and send it by EMail or insert it into a table
I have stored for Backup
EXEC dbo.dothebackup2;
After execution I received this error:
Msg 3206, Level 16, State 1, Line 1
Backup device 'Professor_Tape' does not exist. To view existing backup devices, use the sys.backup_devices catalog view. To create a new backup device use either sp_addumpdevice or SQL Server Management Studio.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Now how can I save this message in the table?

There are a couple of ways to do this task.
1 - Wrap the call to the backup stored procedure in a SQL Agent job. On failure of the job step, alert a operator, your DBA distribution list to react to the issue.
The Agent automatically keeps history by time or physical file size. See this MSDN article on how to adjust the rentention period.
Check out this MSDN article on how to notify an operator of a job status.
2 - Check out some of the more professional free backup solutions. I use the Ola Hallengren scripts for backups, index maintenance and consistency checks.
I hope this helps you.
Sincerely
John

Related

AZURE SQL MI Error: Stale/aborted version cleanup was aborted for database id '10' due to database shutdown

I am trying to restore SQL server .bak file to Azure SQL Managed Instance database through SSMS but getting an error
Msg 22003, Level 16, State 1, Line 18 Stale/aborted version cleanup was aborted for database id '10' due to database shutdown. Msg 3013, Level 16, State 1, Line 18 RESTORE DATABASE is terminating abnormally.
I am using the command
CREATE CREDENTIAL [https://STORAGEACCOUNT.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE' ,
SECRET = '<<by using original key>>'
RESTORE DATABASE [TestDataBase] FROM URL = 'https://STORAGEACCOUNT.blob.core.windows.net/backups/TestDataBase.bak'
I have also tried by using SSMS restore wizard but no luck.
Does anyone face this issue or any help will be great help...
We have checked the internal resources for similar issues that users are facing and found the following:
The restore of database failed may have failed cause of DBCC CHECKDB that is run as part of the workflow has failed due to version store cleanup errors. As part of DBCC CHECKDB we run version store cleanup and due to some defect version store cleanup has failed. This manifests when DBCC CHECKDB is run in single user mode. We fixed the defect and the fix will be deployed in near future(during this month - June 2020). We apologize for the inconvenience caused by this issue.
Workaround : Below are the two option to self-mitigate the problem until the fix is deployed:
1) Take backups with CHECKSUM. This way we will not do DBCC CHECKDB at migration time as we have some confidence that the database is physically consistent. Taking backups with CHECKSUM is generally a good practice to make sure that the consistency of the database is intact.
2) Retry. The current understanding of the issue is that it is transient and is not specific to any backup. Restore fails about 9% of the time, so we appreciate your patience. The fix is deploying with next deployment.
You may also refer the below document for reference.
https://learn.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-get-started-restore
Hope this helps.
Thanks
Navtej S

SQL Database in Asynchronous AO relication - Log file not shrining after backup

I have a database whose log file size is 527GB, showing almost 100% use. The DB is in AO Asynchronous replication with another SQL server. DB is in Full backup mode, and Log backup is happening every hour. I tried to shrink log file, it didn't work, gave me following message.
Msg 1468, Level 16, State 2, Line 2
The operation cannot be performed on database "MYDB" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
The log for database 'MYDB' cannot be shrunk until all secondaries have moved past the point where the log was added..
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
I think its not doing it because of replication all logs are not transferred and its been all the time. How do solve the issue without taking Database out of AO replication group? I can move it to Synchronous mode, but I do not want it to move out of AO.
To check out the cause of your problem have a look at results of the query below (log_truncation_holdup_reason field):
select * from sys.dm_db_log_stats(db_id('YourDatabaseName'))
UPD: For versions lower than 2016 SP2 you can get the same using a query:
SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = 'YourDatabaseName'
If it is AVAILABILITY_REPLICA then check active transactions to understand which one could cause it.
dbcc opentran
Depending on results you will be able to decide what you should do.

I am trying to backup a database and am getting MSG 3013

I have tried to backup in Microsoft SSMS with the GUI backup task, and it fails after a few seconds, so then I tried running this command:
BACKUP DATABASE databasename TO DISK = 'd:\databasename_full.Bak' WITH FORMAT, MEDIANAME = 'd_datbasenamebackup', NAME = 'Full Backup of databasename';
And get a very generic error of the following
Msg 3013, Level 16, State 1, Line 1 BACKUP DATABASE is terminating abnormally.
I am wondering if anyone has come across this error before. Everything I have read is saying there is a media fault, which I know isn't the case.
There is a Microsoft support page for this Error Message 3013.
It is apparently caused when a filemark in your backup device could not be read. Resolution steps below:
To allow SQL Server to perform new backups to the backup device, you
must manually delete or erase the device by using the following
command:
BACKUP DATABASE mydatabase TO DISK='C:\MyDatabase.bak' with FORMAT

Database Recovery Pending - SQL Server 2014

My server is shutting down because the electrical. And when I opened my database in SSMS, database is recovery pending.
I checked my ERROR LOG, the message are :
4 transactions rolled forward in database 'POSDW' (14:0). This is an
informational message only. No user action is required.
restoreHkDatabase: DbId 14, Msg 41313, Level 16, State 1, The C
compiler encountered a failure. The exit code was 2.
[ERROR] Database ID: [14] 'POSDW'. Failed to load XTP checkpoint.
Error code: 0x82000009.
(d:\sql12_main_t\sql\ntdbms\hekaton\sqlhost\sqlmin\hkhostdb.cpp : 3126
- 'RecoverHkDatabase') Error: 41313, Severity: 16, State: 1.
I already tried to take offline but when I bring online I get error.
Can you guys help me.
Thanks
It looks like corruption. You can try one of the following options:
Restore from existing backup
Try enter the database into emergency mode and run DBCC CHECKDB. according to the results you can see if you can restore the pages from existing backup (in some cases) or run DBCC CHECKDB .
If you have functional replica of the data take the data from there.
Hope this helps.
You were able to move the database files while they were in "Recovery Pending" mode because that status means SQL couldn't open the database files for some reason. It also means it couldn't lock the files as well.
Setting a database to "offline" is similar because it unlocks the underlying files (that's why you can move database files while it's offline).
I'm pretty sure that if you'd try setting all these databases to "online" you'd get the error message you talk about or something similar.
ALTER DATABASE MyDB SET ONLINE
You can use the above statement to try and activate databases that are "offline" or are in "Recovery Pending" mode. If there's some kind of problem, SQL Server will let you know at that moment.
You can also read this thread: How to fix Recovery Pending State in SQL Server Database?

Error while restoring db from Enterprise to BI edition of SQL Server

Every day we restore backups from production on 3 different servers. Same process has been used for months and it always works. Recently we decided to start restoring backups from production server on the 4th server meant for BI. We are however unable to do it as database restores well at first and once the restore finishes database goes into "Suspect" mode and the following message is displayed:
Msg 3908, Level 16, State 1, Line 3
Could not run BEGIN TRANSACTION in database 'DatabaseName' because the database is in emergency mode or is damaged and must be restarted.
Msg 3314, Level 16, State 3, Line 3
During undoing of a logged operation in database 'DatabaseName', an error occurred at log record ID (205933:123232:2). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.
Msg 934, Level 21, State 1, Line 3
SQL Server cannot load database 'DatabaseName' because Change Data Capture is enabled. The currently installed edition of SQL Server does not support Change Data Capture. Either disable Change Data Capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports Change Data Capture.
Msg 933, Level 21, State 1, Line 3
Database 'DatabaseName' cannot be started because some of the database functionality is not available in the current edition of SQL Server.
Msg 3314, Level 21, State 5, Line 3
During undoing of a logged operation in database 'DatabaseName', an error occurred at log record ID (205933:123232:1). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
From the error message it looks like we have the problem with one of the log entries, but if this is the case why are we able to restore same backups on different servers?
Our production server from where the backups are coming runs SQL Server 2014 Enterprise edition and has CDC enabled on 4 tables.
Our BI server on which I am trying to restore the backup runs SQL Server BI edition.
Is there any way to bypass this without disabling cdc? Unfortunately we are not allowed to disable this particular feature. I did my reading, but I was unable to find anything helpful.
The only way around that I see is to restore backup on another server, disable cdc and then back up new database and transfer backup to BI server. It more more complicated and hence more likely to break than direct backup transfer. If you see any better way please let me know. Any suggestions will be highly appreciated!

Resources