SQL Server 2012 to be released officially by March 7, 2012.
Wednesday, January 25, 2012
Friday, August 12, 2011
How to get .rdl file of the Reports on Report Server
Question:
Do you want to have copy of a report on the ReportServer?
What would be the case when, tt was not saved in SourceSafe. Is there a way to get the .rdl file for that report copied to local computer from the ReportServer?
Answer:
For SQL Server 2005 Reporting Services
- Go to Report on Report Manager
- Click properties of Report
- Under the report definition you will see Edit and Update link.
- if you click on Edit you can open or Save the RDL files
For SQL Server 2008 Reporting Services
- Go to Report on Report Manager
- Click properties of Report
- Select Download on the top right corner
- Now you can open or Save the RDL files
Monday, August 01, 2011
Can we backup reportservertempdb?
I have been asked by a DBA, if we can backup reportservertempdb, why not!
Here is the answer:
We should backup the database reportservertempdb as we backup the reportserver.
The reason to backup the reportservertempdb is to avoid having to recreate it if there is a hardware failure. In the event of hardware failure, it is not necessary to recover the data in reportservertempdb, but you do need the table structure.
If you lose reportservertempdb, the only way to get it back is to recreate the report server database. If you recreate the reportservertempdb, it is important that it have the same name as the primary report server database.
System database msdb size in huge! How to purge MSDB Backup and Restore History?
On one of my SQL Server 2008 Instance, the msdb database sizes around 4 GB. I decided to find out the which table / index occupies major junk on this. I have used query below;
| --- Query 1, if there is partition SELECT TOP 10 SERVERNAME=@@SERVERNAME,DB_NAME=DB_NAME(),TABLE_NAME=OBJECT_NAME(I.ID),INDEX_NAME=I.NAME,INDID,USED, ROWS, SIZE_N_MB = ROUND((USED*8.0/1024.0),2), |
| --- Query 2 If there are partitions SELECT object_name(i.object_id) as objectName, |
The output resulted;
The following 5 big tables takes up 88% of the total database size of 3.8 GB. These 5 tables occupy 3.3 GB on the msdb database.
Query 1: Output
| TABLE_NAME | INDEX_NAME | INDID | USED | ROWS | SIZE_N_MB | ROWMODCTR | STATISTICDT |
| backupfile | PK__backupfi__57D1800A17C286CF | 1 | 233057 | 4438738 | 1820.76 | 2646909 | 2/14/2011 15:57 |
| backupset | PK__backupse__21F79AAB0E391C95 | 1 | 115791 | 1489763 | 904.62 | 228112 | 6/19/2011 6:00 |
| backupmediafamily | PK__backupme__0C13C86F0880433F | 1 | 50738 | 1489616 | 396.39 | 23386 | 7/26/2011 7:00 |
| backupfilegroup | PK__backupfi__760CD67A12FDD1B2 | 1 | 43284 | 2967333 | 338.16 | 1775145 | 2/14/2011 15:57 |
| backupmediaset | PK__backupme__DAC69E4D04AFB25B | 1 | 29250 | 1489616 | 228.52 | 44462 | 7/22/2011 15:43 |
| sysjobhistory | clust | 1 | 3553 | 33177 | 27.76 | 2428 | 7/25/2011 8:14 |
Query 2: Output
| objectName | indexName | totalPages | usedPages | dataPages | totalSpaceMB | usedSpaceMB | dataSpaceMB | Rows |
| backupfile | PK__backupfi__57D1800A17C286CF | 233073 | 233043 | 231653 | 1820 | 1820 | 1809 | 4438738 |
| backupset | PK__backupse__21F79AAB0E391C95 | 100217 | 100200 | 99826 | 782 | 782 | 779 | 1489763 |
| backupfilegroup | PK__backupfi__760CD67A12FDD1B2 | 43289 | 43283 | 43077 | 338 | 338 | 336 | 1489616 |
| backupmediafamily | PK__backupme__0C13C86F0880433F | 39473 | 39459 | 39287 | 308 | 308 | 306 | 2967333 |
| backupmediaset | PK__backupme__DAC69E4D04AFB25B | 18737 | 18728 | 18654 | 146 | 146 | 145 | 1489616 |
Analyze and find out the minimum and maximum date range date available
| SELECT COUNT(*) AS 'TotalRecords', |
Resolution:
The solution is we have to purge these MSDB Backup and Restore history tables
1. The sp_delete_backuphistory system stored procedure takes a single parameter - a cutoff date. Any data older than the supplied date is purged from the msdb tables.
2. The sp_delete_database_backuphistory system stored procedure allows you to delete historical backup data for a specific database. Unfortunately, this procedure does not offer the finer option of choosing a cutoff date. It's all or nothing.
3. sp_purge_jobhistory Removes the history records for a job.
4. Try considering creating indexes on the above said 5 tables, if no of rows are huge.
Source: http://weblogs.sqlteam.com/geoffh/archive/2008/01/21/MSDB-Performance-Tuning.aspx
| use msdb Create index IX_backupset_backup_set_id on backupset(backup_set_id) |
5. Alternatively, check when the statistics of these tables are last updated. Just run sp_updatestats. Just try sp_delete_backuphistory after the statistics are updated. The result is awesome! Very quick response.
Permanent Resolution
6. Further restrict the Job history growth by setting in SQL Agent –> History tab.
7. Also on the SQL Server Maintenance Plan “History Cleanup Task” can be of helpful
Sunday, July 31, 2011
SQL Server 2008: syspolicy_purge_history job
This job is created automatically when on SQL Server 2008 Policy Management is enabled.
Policy Management is a new feature introduced on SQL Server 2008 onwards.
Once the Policy Management defined, the policy can be evaluated against targets to check for compliance. Each evaluation of compliance will be recorded in tables in system database msdb,
1. syspolicy_policy_execution_history_details_internal
2. syspolicy_policy_execution_history_internal
3. syspolicy_policy_category_subscriptions_internal
The evaluation condition is built on top of object facets, which is predefined by Microsoft.
Purpose of the job, syspolicy_purge_history:
It is to remove records in those tables to maintain so it does not pile up and take up space unnecessarily. It has three steps
It does what instance it is running in and then erases system health records.
Step 1 :
The first step verifies if Policy Management is enabled. If yes, it will go to the second step
IF (msdb.dbo.fn_syspolicy_is_automation_enabled() != 1)
BEGIN
RAISERROR(34022, 16, 1)
END
step 2
Deletes policy evaluation history prior to cutoff date, defined by HistoryRetentionInDays.
EXEC msdb.dbo.sp_syspolicy_purge_history
step 3
It works out what instance it is running in and then erases system health records.
if ('$(ESCAPE_SQUOTE(INST))' -eq 'MSSQLSERVER') {$a = '\DEFAULT'} ELSE {$a = ''};
(Get-Item SQLSERVER:\SQLPolicy\$(ESCAPE_NONE(SRVR))$a).EraseSystemHealthPhantomRecords()
Tuesday, July 12, 2011
Silent Mode Installation of SQL Server 2008 SP2
Here is the command for SQL Server 2008 Express Edition Silent mode installation of SP2.
| SQLEXPR_x86_ENU.exe /Q /ACTION=PATCH /INSTANCENAME=SQLEXPRESS |
Friday, May 27, 2011
CHECKPOINT in SQL Server
What is CHECKPOINT?
As per BOL definition “ Writes all dirty pages for the current database to disk.
Dirty pages are data pages that have been entered into the buffer cache and modified, but not yet written to disk.
Checkpoints save time during a later recovery by creating a point at which all dirty pages are guaranteed to have been written to disk”
This minimizes the active portion of the log that must be processed during a full recovery of a database.
What are the Events that causes CHECKPOINT?
1. Before Database Backup
Before a database backup, the Database Engine automatically performs a checkpoint so that all changes to the database pages are contained in the backup.
2. Active Log exceeds recovery interval
The active portion of the log exceeds the size that the server could recover in the amount of time specified in the recovery interval server configuration option.
3. The log becomes 70 percent full, and the database is in log-truncate mode.
A database is in log truncate mode when both these conditions are TRUE: the database is using the Simple recovery model, and, after execution of the last BACKUP DATABASE statement that referenced the database, one of the following events occurs:
- BULK_LOG Recovery: A minimally logged operation is performed in the database, such as a minimally logged bulk copy operation or a minimally logged WRITETEXT statement is executed.
- An ALTER DATABASE statement is executed that adds or deletes a file in the database
4. Stopping a SQL Server issues a checkpoint in each database on the server
5. CHECKPOINT:
A CHECKPOINT statement is explicitly executed. A checkpoint occurs in the current database for the connection.
6. Database Shutdown
An activity requiring a database shutdown is performed. For example, AUTO_CLOSE is ON and the last user connection to the database is closed, or a database option change is made that requires a restart of the database.
Thursday, May 19, 2011
SQL Server Management Studio – SSMS is a 32 bit application
SQL Server Management Studio – SSMS is a 32 bit application. Even when we install 64 bit SQL Server Database Engine, we will get 32 bit SSMS installed on the server.
Default SSMS install location
| 32 Bit Server | C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE |
| 64 Bit Server | C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE |