创建 SQL Server 数据库的用户和模式

创建 SQL Server 数据库之后必须创建用户和模式。

开始之前

IBM® Business Process Manager 数据库用户分配给以下三个角色:
注: 该数据库必须由数据库管理员创建,该管理员可以将这些角色分配给 IBM Business Process Manager 的数据库用户。
  • db_ddladmin
  • db_datawriter
  • db_datareader
有关这些角色提供的许可权的信息,请参阅 Microsoft 文档。
要点: 对于所有数据库用户,请注意以下限制:
  • 用户无法分配到系统管理员 (SYSADMIN) 角色。
  • 用户必须映射到具有 SqlJDBCXAUser 角色的主数据库。
要点: 在 Microsoft SQL Server 中,与用户关联的缺省模式名称必须与用户名相同。例如,如果 Performance Data Warehouse 数据库的用户名为 dbuser,那么与用户 dbuser 关联的缺省模式名称也必须是 dbuser。您必须创建普通数据库用户并将所需权限分配给该客户,而不是使用超级用户(例如,sa)或者创建数据库的用户(数据库所有者)。这是因为超级用户的缺省模式是 dbo,而且此模式不能更改。

关于此任务

使用 Windows 认证时,必须确保将域帐户添加到 SQL Server 登录。必须以 SQL Server 管理员身份登录,并遵循以下步骤以创建用户和模式。

过程

  1. 请完成下列其中一个步骤:
    • 如果使用 SQL 认证,那么为您在部署环境配置中指定的每个数据库的数据库用户创建 SQL Server 登录帐户。例如,如果 sqluser 是数据库用户名,secret1sqluser 的密码,请使用以下命令语法:
      USE MASTER
      GO
      CREATE LOGIN sqluser WITH PASSWORD='secret1'
      GO
    • 如果使用 Windows 认证,请使用机器的登录信息为您的 Windows 机器创建 SQL Server 登录帐户。例如,如果 domain1 是域名,user1 是 Windows 机器的用户名,请使用以下命令语法:
      USE MASTER
      GO
      CREATE LOGIN [domain1\user1] FROM WINDOWS
      GO
    注: 所创建的 SQL Server 登录不能有 SYSADMIN 权限。如果登录用户拥有 SYSADMIN 权限,那么 SQL Server 会忽略用于数据库连接的指定模式值,因为 sysadmin 用户的缺省模式始终是 dbo
  2. 更新主数据库以对登录帐户授予 XA 事务的许可权(但是,首先要确保您已经成功完成了主题“配置 XA 事务”中的指示信息)。 例如,如果 sqluser 为数据库用户名,请使用以下命令语法来更新主数据库(其中,login_account 是您在先前步骤中使用的同一个登录帐户):
    USE MASTER
    GO
    CREATE USER sqluser FOR LOGIN login_account WITH DEFAULT_SCHEMA=sqluser
    GO
    EXEC sp_addrolemember N'SqlJDBCXAUser', N'sqluser';GO
  3. 对于您创建的各个数据库,必须为 SQL Server 登录设置缺省模式。 例如,如果 BPMDB 是数据库名称,sqluser 是数据库用户名,请使用以下命令语法(其中,login_account 是您在先前步骤中使用的同一个登录帐户):
    USE BPMDB
    GO
    CREATE USER sqluser FOR LOGIN login_account WITH DEFAULT_SCHEMA=sqluser
    GO
    CREATE SCHEMA sqluser AUTHORIZATION sqluser
    GO
    EXEC sp_addrolemember 'db_ddladmin', 'sqluser';
    EXEC sp_addrolemember 'db_datareader', 'sqluser';
    EXEC sp_addrolemember 'db_datawriter', 'sqluser';GO

下一步做什么

使用生成的脚本创建数据库模式时,您的用户标识必须有权创建表。创建表时,您必须有权选择、插入、更新和删除表中的信息。有关访问数据存储所需的数据库特权的信息,请参阅主题 SQL Server 数据库特权