Setting Database Compatibility Level for SQL Server 2012

In this blog we shall look at 2 ways to set a database to compatibility level for SQL Server 2012. The Compatibility level for SQL Server 2012 is 110.

Using graphical interface in SSMS

The first method we are going to learn is from SQL Server Management Studio. Connect to the target SQL Server, inside SSMS, expand the SQL Server in Object Explorer and expand the databases node. Right click on the Database for which you would like to change / set the compatibility level

Once the database properties box is displayed, in the left side pane, select Options Page and the database options are displayed as shown below. Then in the right side of the properties box, there is a field Compatibility level (3rd from top), from the drop down list corresponding to Compatibility level choose SQL Server 2012 (110) and click OK button.Using T-SQL

Using T-SQL the same task can be achieved by running ALTER database command and Set the Compatibility_level property to 110 as shown in the below script. Remember to change the  database name with your database name.

ALTER DATABASE LearnSQLWithBru SET COMPATIBILITY_LEVEL = 110
GO

Once you have set the compatibility level, you can check if the changes have been applied by running the below script. Alternately you can check this by looking at the database properties (from object explorer).

SELECT NAME, COMPATIBILITY_LEVEL FROM SYS.DATABASES WHERE
NAME = 'LearnSQLWithBru'

Do you like this site? Like our FB page @ Facebook.com\LearnSQLWithBru so that, you know when there is a new blog post.

–Bru Medishetty

SQL Server Database Filegroup is Full; What, Why and How?

Last week a user asked my help on this error. After helping him, I thought it would be a good idea if I can post more detailed steps as a blog.

What is the issue?

You receive an error message Could not allocate space for object dbo.final in database LSWB because the ‘PRIMARY’ filegroup is full. contd…..as shown in below pic. You see this error message if you are actively running a transaction from a query window in SSMS or you would see an entry in SQL Server Error Log. 

What this error means is, the filegroup mentioned in the error message is full and no more free space is available in the data file(s) of that filegroup. The database objects which need additional space to grow (to add new data) cannot grow causing failure to add new data or if new database object(s) are to be created, that cannot happen due to lack of  free space in the filegroup.

Why does this happen?

There might be multiple reasons that cause this problem. Some of them are..

  • Autogrowth is not enabled on the file(s) inside the filegroup.
  • Autogrowth is enabled on the data files but there is no free disk space to for the data files to grow.
  • Autogrowth is enabled on the data file but hit the Max growth size value.

How to solve this?

I order to solve this problem, there are few solutions and which one of the solutions can be applied depends on one or more factors on your SQL Server where this error has occurred.

  • If there is disk space available but the data files autogrowth is disabled, then enable autogrowth.
  • If there is disk space available and the data files autogrowth is enabled, change the Max file size value to a larger value.
  • If the data file can no longer grow due to no free disk space on that drive, then add another data file in that file group on a different drive.
  • If the data file can no longer grow due to no free disk space on that drive, and there are no additional drives to add a data file, then you have very few options left. You can try one of the following. 
    1. Delete / move any files (from windows explorer) which reside on that drive to get free space.
    2. Shrink any other databases that are residing on that drive, may be one of the data files.
    3. Drop one or more database objects that belong to the same filegroup.

Note: Pay attention when doing either of the last 3 steps, make sure that file(s) are not required (if deleting) or the database you shrink has sufficient free space in itself to survive until you get more oxygen (new storage attached to the server) or the table(s) or Indexes you drop in the same file group are not required any more…

Do you like this site? Like our FB page @ Facebook.com\LearnSQLWithBru so that, you know when there is a new blog post.

— Bru Medishetty

Space function in SQL Server

Few weeks back, I wrote a blog on CONCAT string function in SQL Server 2012. A user asked if the CONCAT function is similar to Space function in SQL Server and what is the difference between the two functions. I replied to him and clarified the difference of the 2 functions. After that I thought, it would be good to write a blog post on Space function too.

Space function

Space function is useful to return ‘x’ number of spaces, where ‘x’ is an integer.  The syntax for the space function is space(x) where x is an integer. To understand the function lets us look a simple script with and without space function.

Without Space function

The below screen shot displays an output where 2 string values are concatenated without using space function and the resulting string is an output that may not be acceptable. See that the resulting string is a single string without any break between first and last name.

Using Space function

The below screen shot displays an output where 2 string values are concatenated and separated by space function. Using space(1) generated a single space (1 space) and when that is used in the string concatenation, output string is now better and acceptable. 

Do you like this site? Like our FB page @ Facebook.com\LearnSQLWithBru to know when there is new content.

— Bru Medishetty