Thursday, October 31, 2013

Troubleshooting Database Issues:




The DPM database stores all DPM settings, configuration, and reporting information for DPM.
A database failure can cause DPM jobs to fail, interfere with the use of DPM Administrator Console, prevent DPM reporting, and stop the DPM service. A backlog of requests caused by low memory or high CPU usage also can cause client timeouts (when DPM processes take a long time to establish a connection to SQL Server or run a SQL query).
Possible causes of DPM database failures include the following:
  • An unusually high number of protection jobs being processed on the DPM server at one time, and SQL Server is unable to handle the volume of requests in a timely manner. This is the most common cause of client timeouts and general network errors.
  • A database or transaction log that DPM uses has run out of disk space.
  • The DPM database enters an inconsistent state or becomes corrupted.
  • The SQL Server service is not running or is not configured correctly.
Some database failures in DPM are caused by transitory problems that may resolve themselves. Examples include insufficient resources, client timeouts, insufficient disk space for transaction logs, deadlocks in SQL Server, recoverable database errors, and timing issues.
Before you run diagnostics for this type of database failure, perform the following steps on the DPM server to ensure that the problem is not transitory.

To resolve issues that might cause a transitory database failure

1.       Verify that the SQL Server service is running. In Administrative Tools, open Services, and verify that the status of the SQL Server (MSDPM2010) service isStarted. If it is not, right-click the service, and then click Start or Resume, as appropriate.
2.       If this does not fix the problem, close and reopen DPM Administrator Console.
3.       If this does not fix the problem, stop and restart both the DPM service and the SQL Server (MSDPM2010) service. (In most cases, restarting the DPM service will resolve the issue.) For instructions, see Verifying Status of the DPM Service.
If you experience database failures in DPM that are not transitory in nature, the issues can be complex. You will need to work with your SQL Server administrator to diagnose and resolve the related issues. The following Database Errors table provides a starting point for resolving specific database errors. The Database Exceptions table later in this topic provides information about how to troubleshoot database exceptions.
Database Errors

 

Error
To troubleshoot this error
Error 940: Unable to connect to the database because of a fatal database error. It is unlikely that the database itself has been damaged.
Ensure that the DPM instance of SQL Server (MSDPM2010) service is running. Then use Windows Event Viewer to find information about related events.
Error 941: Unable to connect to the DPM database.
To resolve issues related to database connection failures
1. Ensure that the DPM service is running.
2. Resolve transient issues that might be temporary database connection failures. 
3. Make sure that SQL Server is configured correctly. For information about configuring SQL Server for use with DPM, see Manually Installing Prerequisite Software.
Error 942: Database integrity is in question because of a hardware or software problem.
If the integrity of the DPM database is in question, contact your SQL Server administrator. You might need to repair or restore the database in SQL Server from backup media.
Inform the administrator every time this error is encountered. Look at Windows Event Log for SQL Server/media failures. It is possible that the problem is in the cache only and not on the disk itself. If so, restarting SQL Server corrects the problem. In some cases, it may be necessary to restore the database.
To resolve issues related to a database that may be corrupt
1. Use Event Viewer on the DPM server to check for I/O problems at the time of the alert. I/O failures in the event log might explain why the database was corrupted. If that is the case, you might want to repair or replace the hard disk before restoring the database.
2. To determine the extent of the database problem, perform a database check on the database for which integrity is in question. In SQL Query Analyzer, enter the following command:

dbcc checkdbdatabasename
3. Depending on the nature of the problem, you might need to repair or restore the DPM database. Some problems, such as indexing and caching problems, can be resolved by repairing the database or restarting SQL Server. Work with your SQL Server administrator to determine the best course of action.
Error 943: Unable to connect to the DPM database because the database is in an inconsistent state.
If DPM finds that the database is in an inconsistent state, the problem is unlikely to resolve itself.
Error 944: Database operation failed.
·    If you are experiencing client timeouts and general network errors that are possibly related to SQL Server being unable to handle the volume of requests, modify protection schedules for protection groups to stagger protection jobs.
·    A high incidence of client timeouts may be a sign that the volume that stores your database files and transaction logs is highly fragmented. If needed, use Disk Defragmenter to defragment the volume.
·    A shortage of disk space for a SQL Server database file or transaction log generates a warning or error in SQL Server, depending on how critical the shortage has become. If transaction logs overflow, the DPM service probably will shut down after one or more failed attempts to access the database.

To resolve issues caused by a shortage of disk space for databases or transaction logs
1. Use Windows Event Viewer to get additional information about the problem.
2. Use SQL Query Analyzer to get information about the size of the databases and the use of transaction log space by entering the following commands:

sp_helpdb — Reports the size of each database file.

dbcc sqlperf (logspace) — Reports the current sizes of transaction logs.
3. Shrink the database and transaction logs. In SQL Query Analyzer, enter the following commands:

dbcc shrinkfile (databasenamelog.dat) — Shrinks the transaction logs for the specified database.

dbcc shrinkfile (databasename_dat) — Shrinks the specified database file.
If disk space is still insufficient, extend the volume that contains the files to ensure sufficient disk space for the transaction log during peak performance.
·    This error can also occur if the SQL Server administrator has deleted the database, taken the database offline, or detached the database for maintenance. If the database is offline or detached for maintenance, retry the operation after the database is brought online. If the database was deleted, restore the database from tape backup, and then run DpmSync.
Error 945: Unable to connect to the DPM database because of a general database failure.
For general database failures, ensure that the DPM service is running on the DPM server. Then use Windows Event Viewer to find information about related events. On a new DPM server, ensure that SQL Server is configured correctly.
To resolve issues related to general database failures
1. Ensure that the SQL Server (MSDPM2010) service is running.
2. Resolve transient issues that might be temporary database connection failures. 
3. Make sure that SQL Server is configured correctly. For information about configuring SQL Server for use with DPM, see Configuring DPM.
4. If general database failures persist, contact Microsoft product support for help with troubleshooting the problem.
Database Exceptions

 

Exception
To troubleshoot this exception
Exception 5168: Login failed for user <user name>.
DpmSync fails when trying to restore the DPM database because it cannot open the DPM database requested by the login.
Verify that the DPM installation contains a new DPM database and that it is online before trying to restore an older database. If a new database does not exist on the DPM installation, uninstall and then reinstall DPM. After the installation is complete, run DpmSync again.

Additional Resources for Troubleshooting Database Issues

This following is a list of additional resources you might use to help diagnose and resolve DPM database issues.
  • Configuring SQL Server for use with DPM, see Installing DPM.
  • Using the sp_helpdb system stored procedure for SQL Server in the Transact-SQL Reference.
  • Using the Database Console Commands (DBCC), DBCC SQLPERF and DBCC SHRINKFILE for SQL Server located in the “DBCC” section of the Transact-SQL Reference.
  • Using the Windows Server 2008 event logs to identify problems.
  • Configuring and maintaining physical storage components in SQL Server 2008 to meet capacity, throughput, and performance requirements. For more information, see Managing Performance.

Friday, October 25, 2013

The SQL Server failed to initialize VIA support library [QLVipl.dll].

Got an error today trying to start newly installed sql express service – The SQL Server failed to initialize VIA support library [QLVipl.dll]. This normally indicates the VIA support library does not exist or is corrupted. Please repair or disable the VIA network protocol. Error: 0x7e.

Solution to the problem:

  1. Open SQL server configuration manager
  2. Under  SQL server network configuration node select your instance
  3. Disable VIA protocol

Using Merge in SQL Server 2008 R2

  --To Merge Data of different tables we can use merge statement in sql which first checks the content of both the tables and adds the data in the Target table which are missing from Soucre Table.

Syntax:

MERGE INTO [TARGETTABLE] AS Target
    USING [SOURCETABLE] AS SOURCE
    ON

        --unique key filtering condition
        Target.COLUMN1=SOURCE.COLUMN1 AND
        Target.COLUMN2=SOURCE.COLUMN2 AND
        Target.COLUMN3 =SOURCE.COLUMN3 AND
        Target.COLUMN4 =SOURCE.COLUMN4

     WHEN MATCHED THEN
        --update or delete query
        UPDATE SET
            Target.ColumnA=SOURCE.
ColumnA,
            Target.
ColumnB=SOURCE.ColumnB,
            Target.
ColumnC=SOURCE.ColumnC

    WHEN NOT MATCHED THEN

        --INSERT QUERY
        INSERT (COLUMNA,
ColumnB, ColumnC, ColumnD)
        VALUES(
                        SOURCE.
ColumnA,
                        SOURCE.
ColumnB,
                        SOURCE.
ColumnC,
                        SOURCE.
ColumnD                    )
    ;

SQL SERVER – Difference Between EXEC and EXECUTE vs EXEC()

SQL SERVER – Difference Between EXEC and EXECUTE vs EXEC() – Use EXEC/EXECUTE for SP always

What is the difference between EXEC and EXECUTE?
They are the same. Both of them executes stored procedure when called as
EXEC sp_help
GO
EXECUTE sp_help
GO

I have seen enough times developer getting confused between EXEC and EXEC(). EXEC command executes stored procedure where as EXEC() function takes dynamic string as input and executes them.
EXEC('EXEC sp_help')
GO

Ranking or ordering in sql tables by partitioning


Consider we have table as follows:
Studentid
Subjectid
ObtainedScore
1
1
25
2
1
45
3
1
27
4
1
35
5
1
25
6
1
24
1
2
31
2
2
42
3
2
42
4
2
36
5
2
12
6
2
10
If we need to rank students based on their obtained score in each subject what would you write a query for. Among many way I’m illustrating following code for generating rank using row_number(), over and partition:

Syntax:
 Select studetid, subjected, obtainedscore, row_number() over ( partition by subjectid order by obtainedscore desc) as rank;

          PARTITION BY value_expression
Divides the result set produced by the FROM clause into partitions to which the ROW_NUMBER function is applied. value_expression specifies the column by which the result set is partitioned. If PARTITION BY is not specified, the function treats all rows of the query result set as a single group.
  
order_by_clause
The ORDER BY clause determines the sequence in which the rows are assigned their unique ROW_NUMBER within a specified partition. It is required.


There is no guarantee that the rows returned by a query using ROW_NUMBER() will be ordered exactly the same with each execution unless the following conditions are true.
  1. Values of the partitioned column are unique.
  2. Values of the ORDER BY columns are unique.
  3. Combinations of values of the partition column and ORDER BY columns are unique.


Here partition groups the table by subjectid column and generates a rank by descending order of obtainedscore.

Output of this query would be as below

Studentid
Subjectid
ObtainedScore
rank
1
1
25
4
2
1
45
1
3
1
27
3
4
1
35
2
5
1
12
6
6
1
24
5
1
2
31
4
2
2
42
2
3
2
43
1
4
2
36
3
5
2
12
5
6
2
10
6