本页面内容仅针对 JIRA 4.2版本。
下面介绍如何让JIRA连接 Microsoft SQL Server 2005 数据库。
Note
- 虽然你可以让JIRA 使用 SQL Server Express数据库,但是我们不建议使用这个数据库版本。 如果你坚持使用这个版本的数据库,external blog post 介绍了让JIRA使用SQL Server Express 2005的方法,也许会对你有所帮助。
- 鉴于我们收到了大量关于SQL Server 2000的性能问题,我们建议你使用SQL Server 2005。 下面的内容主要介绍的是SQL Server 2005的应用,而不是 SQL Server 2000, 因为JIRA 4.2 已经不支持SQL Server 2000。
本页面内容:
1. 开始之前的准备工作:
1.1 导出现有JIRA的数据
如果以已经使用了JIRA, 请通过 备份XML数据功能来导出JIRA的数据。 这样你就可以把JIRA数据从一个数据库迁移到另一个数据库, 详细方法请参见切换数据库。
1.2 停止JIRA
2. 配置SQL Server
为JIRA创建一个新数据库 (例如
jiradb
)。 注意排序规则必须是大小写不敏感, 例如: 'SQL_Latin1_General_CP437_CI_AI' 就是大小写不敏感。 如果你要使用现有服务器的默认设置, 请检查数据库的默认排序规则。SQL Server 使用 Unicode 编码存数数据。 这完全可以避免任何可能的编码问题。
- 创建一个访问JIRA数据库的用户 (例如
jirauser
)。 注意这个jirauser
不能 是数据库所有者, 但是 应该 是隶属于db_owner
角色。 (参见 SQL 启动错误) - 在JIRA数据库中创建一个空 'schema' (例如
jiraschema
) 。 请注意 'schema' 在 SQL Server 2005 中是一个完全独立的命名空间, 它不用于传统的数据库 schema。 你不需要创建人和JJIRA数据表, 字段(JIRA 会在第一次启动时创建这些对象)。 你可以浏览 Microsoft documentation
了解更详细的关于SQL Server 2005 schemas的内容 确保建立的用户在新创建的空白schema 中拥有连接数据库和创建表的权限。
如果你对认为配置SQL Server数据库有困难,你也可以浏览 Setting up your JIRA database for MS SQL Server 2005 文档。
- 确保配置了正确的SQL Server TCP/IP 监听端口 (SQL Server默认端口是 1433)。 请浏览 Microsoft 文档库了解如何开启端口以及如何配置SQL Server指定的监听端口。
- 确保SQL Server为恰当的认证模式。默认情况下, SQL Server 使用 'Windows Authentication Mode'。 然而, 如果你的用户没有被SQL连接信任, 就会在JIRA启动时出现 'Microsoft SQL Server, Error: 18452' 的错误, 你需要将SQL Server的认证模式更改为 'Mixed Authentication Mode'。 阅读 Microsoft 文档库了解如何更改认证模式。
- 关闭 SET NOCOUNT 选项。要关闭 SET NOCOUNT:
- 打开 SQL Server Management Studio 并点击 Tools -> Options -> Query Execution -> SQL Server -> Advanced.下面截图显示了SQL Server 2005配置对话框。 确认 SET NOCOUNT 选项 没有被选中:
- 打开 SQL Server Management Studio 并点击 Tools -> Options -> Query Execution -> SQL Server -> Advanced.下面截图显示了SQL Server 2005配置对话框。 确认 SET NOCOUNT 选项 没有被选中:
3. 将SQL Server 驱动复制到应用服务器
如果你使用的是 JIRA Standalone,请跳过这步, 因为 JIRA Standalone 已经包含了这个驱动。
从 JTDS 下载SQL Server 驱动(v1.2.3)
- 将 SQL Server JDBC 驱动 jar (jtds-1.2.3.jar) 文件复制到
<Tomcat install>/lib/
文件夹。
4. 使用 JIRA 配置工具
JIRA 配置工具是图形化工具,只能用于JIRA Standalone。如果你使用的是 WAR-EAR 版, 或JIRA服务器只有文本模式, 你需要手动配置。
- 点击 'Database' 标签页
- 从 'Database type' 下拉列表中选择 'SQL Server'。
- 填写SQL Server数据库的连接串:
- Hostname — SQL Server数据库服务器的名称或IP地址。
- Port — SQL Server数据库服务器监听端口号。 留空将使用默认端口。
- Database — 数据库的名称。
- Username — 访问SQL Server数据库服务器的账号。
- Password — 访问SQL Server数据库服务器的授权密码。
- Schema — 你创建的空schema,JIRA会在这个schema下创建数据表。
- 输入完以上信息, 点击 'Test Connection' 按钮测试连接是否成功。 工具会尝试连接数据库,并返回测试结果。
- 点击 'Save' 保存你配置的选项。
- 重新启动JIRA服务器。
祝贺你,你已经完成了数据库配置!
5. 手动配置数据库连接
如果你已经是通过JIRA配置工具设置好数据库连接(参见 前面章节),请跳过此步骤。
5.1 配置应用服务器与SQL Server的连接
- 为数据库连接配置正确的
username
,password
,driverClassName
以及url
等参数,就像下面代码中描述的内容。- 如果你使用的是JIRA Standalone,编辑
conf/server.xml
。 - 如果你使用的是JIRA WAR/EAR, 编辑 应用服务器 相应的文件,例如 Tomcat, 编辑
conf/Catalina/localhost/jira.xml
(注意: 如果你找不到这段代码, 可能你打开了错误的文件 - 在conf/
文件夹中搜索 'jira'。)
- 如果你使用的是JIRA Standalone,编辑
<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" [ 删除这里的 minEvictableIdleTimeMillis 以及 timeBetweenEvictionRunsMillis参数 ] /> <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>
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.
In the example above, jiradb is the connection name. You may also have an instance name such that the connection string is jdbc:jtds:sqlserver://localhost:1433/jiradb.
5.2 配置JIRA Entity Engine
- 编辑
atlassian-jira/WEB-INF/classes/entityengine.xml
为mssql
。- 如果你使用的是JIRA Standalone,JIRA Entity Engine 配置文件是
atlassian-jira/WEB-INF/classes/entityengine.xml
。 - 如果你使用的是 JIRA WAR/EAR, JIRA Entity Engine 配置文件是
edit-webapp/WEB-INF/classes/entityengine.xml
。 如果你忘记更改了这个属性值并启动了JIRA, JIRA将无法正确地创建数据表。 如果发生了这种情况,请查看 这个页面修复错误)。 # 更改schema-name="PUBLIC"
属性值为你创建的 schema (你在第二步中创建的schema), 例如schema-name="jiraschema"
。 注意执行这步之前, schema 必须已经创建。
- 如果你使用的是JIRA Standalone,JIRA Entity Engine 配置文件是
<!-- 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" ...
如果你使用的是 JIRA WAR/EAR, 根据不同的 应用服务器,可能会需要更改 entityengine.xml}}的其他配置 (例如 定义 {{jndi-jdbc
)。
5.3 下一步
你现在已经为应用服务器配置了数据库连接,并且也为JIRA配置了正确的数据库类型。 下一步,你就可以启动JIRA了。
- 如果你使用的是 JIRA Standalone, 启动JIRA并根据日志查看启动错误。
- 如果你使用的是 JIRA WAR/EAR 版, 在应用服务器中重构并重新部署 webapp。
一点你的JIRA服务器已经启动, 你就可以通过浏览器 访问JIRA应用程序。
安装说明
请参阅 JIRA and MS SQL Server 2005。