These instructions will help you connect JIRA to a Microsoft SQL Server 2005 database.
Note:
- SQL Server Express is not one of our recommended databases, however it is possible to set up JIRA to work with this database. This external blog post contains instructions on installing JIRA on SQL Server Express 2005 that may be helpful, if you want to try this.
- Due to numerous reported performance issues with SQL Server 2000, it is recommended that you use SQL Server 2005 instead. The following instructions apply only to SQL Server 2005, not to SQL Server 2000, which is no longer supported.
On this page:
Before you begin
If you are already using JIRA, create an export of your data as an XML backup. You will then be able to transfer data from your old database to your new database, as described in Switching databases.
1. Configure SQL Server
- Create a database for JIRA to store issues in (e.g. jiradb).
- Create a database user which JIRA will connect as (e.g. jirauser). Note that jirauser should not be the database owner, but should be in the db_owner role. (See SQL Startup Errors for details.)
- Create an empty 'schema' in the database (e.g. jiraschema) for the JIRA tables. Please note that a 'schema' in SQL Server 2005 is a distinct namespace used to contain objects, and is different from a traditional database schema. You are not required to create any of JIRA's tables, fields or relationships (JIRA will create these objects in your empty schema when it starts for the first time). You can read more on SQL Server 2005 schemas in the relevant Microsoft documentation.
- Ensure that the user has permission to connect to the database, and create and populate tables in the newly-created schema.

If you are having difficulties setting up your JIRA database for SQL Server, additional information is available in the Setting up your JIRA database for MS SQL Server 2005 document. - Ensure that TCP/IP is enabled on SQL Server and listening on the correct port (the port is 1433 for the default instance of SQL Server). Read the Microsoft documentation for information on how to enable a network protocol (TCP/IP) and how to configure SQL server to listen on a specific port.
- Ensure that SQL Server is operating in the appropriate authentication mode. By default, SQL Server operates in 'Windows Authentication Mode'. However, if your user is not associated with a trusted SQL connection, i.e. 'Microsoft SQL Server, Error: 18452' is received during JIRA startup, you will need to change the authentication mode to 'Mixed Authentication Mode'. Read the Microsoft documentation on authentication modes and changing the authentication mode to 'Mixed Authentication Mode'
- Turn off the SET NOCOUNT option. (The JIRA on MS SQL Server document provides details on the errors that occur if SET NOCOUNT is set.) To turn off SET NOCOUNT:
- Open SQL Server Management Studio and navigate to Tools -> Options -> Query Execution -> SQL Server -> Advanced. The following screenshot displays the configuration panel for this setting in MSSQL Server 2005. Ensure that the SET NOCOUNT option is not selected:

- Open SQL Server Management Studio and navigate to Tools -> Options -> Query Execution -> SQL Server -> Advanced. The following screenshot displays the configuration panel for this setting in MSSQL Server 2005. Ensure that the SET NOCOUNT option is not selected:
2. Copy the SQL Server driver to your application server
- Download the SQL Server JDBC driver (v1.2.3) from JTDS.
- Add the SQL Server JDBC driver jar (jtds-1.2.3.jar) to the common/lib/ directory.
3. Configure your application server to connect to SQL Server
- Edit the server configuration file and customise the username , password , driverClassName and url parameters for the Datasource, as shown in the code sample below.
- If you are using JIRA Standalone, the server configuration file that you need to edit is conf/server.xml .
- If you are using JIRA WAR/EAR, edit the appropriate file on your application server, e.g. for Tomcat, edit conf/Catalina/localhost/jira.xml .
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080"
maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="${catalina.home}/atlassian-jira" reloadable="false">
<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
username="[enter db username]"
password="[enter db password]"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://localhost:1433/jiradb"
[ delete the minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis params here ]
/>
<Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"
factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>
</Context>
</Host>
</Engine>
</Service>
</Server>
(Note: if you can't find this section at all, you've probably got the wrong file — search for mentions of 'jira' in the files under conf/ .)
| If you are using JIRA Standalone, you will also need to edit conf/server.xml , and delete the minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis attributes. These attributes are only needed for HSQL, and will degrade performance if they are not removed. |
4. Configure the JIRA Entity Engine
- Edit the JIRA Entity Engine configuration file and change the field-type-name attribute to mssql .
- If you are using JIRA Standalone, the JIRA Entity Engine configuration file that you need to edit is atlassian-jira/WEB-INF/classes/entityengine.xml .
- If you are using JIRA WAR/EAR, the JIRA Entity Engine configuration file that you need to edit is edit-webapp/WEB-INF/classes/entityengine.xml . If you forget to do to make this change and start JIRA, it may create database tables incorrectly. See this page if this happens to you.
- Change schema-name="PUBLIC" to the name of the schema associated with the database (i.e. the schema you created in step 1.3 above), e.g. schema-name="jiraschema" . Note that the schema must exist in the database before you perform this step.
<!-- DATASOURCE - You will need to update this tag for your installation.
-->
<datasource name="defaultDS" field-type-name="mssql"
schema-name="jiraschema"
helper-class="org.ofbiz.core.entity.GenericHelperDAO"
check-on-start="true"
use-foreign-keys="false"
...
| If you are using JIRA WAR/EAR, your application server may require other changes to entityengine.xml (e.g. to customise the jndi-jdbc tag). |
Next steps
You should now have an application server configured to connect to a database, and JIRA configured to use the correct database type. The next step is to start it up!
- If you are using JIRA Standalone, start it up and watch the logs for any errors.
- If you are using JIRA WAR/EAR, rebuild and redeploy the webapp in your application server.
Once you have the JIRA server running, you can try accessing the JIRA application in your browser.
User-contributed notes
Have experiences to share with SQL Server and JIRA? We welcome your thoughts. Please see the user-contributed MS SQL Server notes.






Comments (1)
Dec 18
Leif Jacobsen says:
Just an FYI if anyone is trying to run JIRA using Windows Authentication with SQ...Just an FYI if anyone is trying to run JIRA using Windows Authentication with SQL Server (2005 in this case)...
The documentation says to enter your username and password in the server.xml file. However, this username and password is only for SQL Server Authentication. If you use Windows Authentication, all you have to do is delete these two parameters from the xml file, and (assuming you followed the SSO directions in the jTDS readme, i.e. placing the ntlmauth.dll in the system path) JIRA will start up just fine.
We have a security policy that requires us to use Windows Authentication with SQL Server, and I'm sure there are others that may have the same requirement, so I figured I'd post this here.
It took me over a week to figure this out, since there was no documentation concerning it, and since Atlassian's technical support team all said Windows Authentication "should" work, but they weren't sure how to get it to work...