将登录账户和用户添加到 SQL Server

Microsoft SQL Server 中,数据库管理员可将登录账户添加到 SQL Server 实例,并且这些登录账户已映射到 SQL Server 实例上各个数据库中的用户。 可创建表和要素类的数据库用户必须具有可在数据库中创建这些对象的所需权限,这些用户还必须具有方案,以便在其中创建对象。 使用 ArcGIS 时,该方案的名称必须与数据库用户相同。

数据库管理员可使用创建数据库用户地理处理工具或 Python 脚本调用 management.CreateDatabaseUser ArcPy 函数,执行以下所有操作:

  • 创建登录账户或将其添加到 SQL Server 实例。
  • 创建映射到指定登录账户的用户。
  • 为在数据库中指定的用户创建匹配的方案。
  • 向此用户授予足以在指定数据库中创建表、要素类和视图的权限。

使用地理处理添加可以创建数据的用户

运行 ArcGIS Pro 中的创建数据库用户工具或调用 Python 脚本中的 management.CreateDatabaseUser ArcPy 函数来创建数据库用户,该用户可创建表、要素类以及视图。

必须通过对 SQL Server 实例具有 sysadmin 权限的用户账户连接到数据库,才能运行创建数据库用户工具或 management.CreateDatabaseUser 函数。

要针对 Microsoft Windows 登录账户创建数据库用户,在运行此工具或函数之前,登录账户必须已经存在。

使用创建数据库用户工具

按照以下步骤,利用创建数据库用户工具在 SQL Server 中创建数据库用户:

  1. 启动 ArcGIS Pro
  2. 通过在 SQL Server 实例中具有 sysadmin 权限的登录账户连接到数据库或地理数据库。
  3. 打开创建数据库用户工具。

    该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。

  4. 指定输入数据库连接的数据库连接。
  5. 选择要创建经过 SQL Server 身份验证的登录账户还是使用现有经过 Windows 验证的登录账户。
    • 取消选中创建经操作系统验证的用户以创建经 SQL Server 验证的登录账户。 请注意,默认情况下,SQL Server 实例仅使用 Windows 身份验证。 如果未将实例配置为使用 SQL ServerWindows 身份验证,选择创建经数据库验证的登录账户将失败。
    • 选中创建经操作系统验证的用户以使用现有经 Windows 验证的登录账户。
  6. 提供该工具将创建的数据库用户的名称。

    如果选择创建经 SQL Server 验证的登录账户,您在此处输入的名称也将用于该登录账户。

  7. 为数据库用户提供密码。
  8. 如果您已具有数据库角色并希望将此用户添加到角色,请指定该用户的角色。
  9. 单击运行

运行 Python 脚本

若要编写用户创建的脚本,请按照以下步骤操作:

  1. 在 ArcGIS 客户端计算机上创建文本文件,然后将以下代码块之一复制到此文件。

    修改代码,使用特定于您的站点的信息。

    这些示例假设您已拥有一个现有的数据库连接文件,该文件配置为以具有 SQL Server 实例 sysadmin 权限的用户身份进行连接。 如果您没有连接文件,请在运行脚本之前创建一个

    # Name: createdatabaseuser_exampleW.py
    # Description: Uses existing database connection file
    # on a Windows computer to create a database user in SQL Server.
    
    # Import arcpy module
    import arcpy
     
    # Provide a database connection file for the system administrator user.
    connection = "C:\\ArcGIS\connection_files\<Connection file>.sde"
    
    # Process: Create database user that can create data for an existing operating system login.
    arcpy.CreateDatabaseUser_management(connection, "OPERATING_SYSTEM_USER", "NETWORKNAME\\username")
    # Name: createdatabaseuser_exampleL.py
    # Description: Uses existing database connection file
    # on a Linux computer to create a database user in SQL Server.
    
    # Import arcpy module
    import arcpy
     
    # Provide a database connection file for the system administrator user.
    connection = "<user>/connections/<Connection_file>.sde"
    
    # Process: Create a new database login and user that can create data.
    arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")

  2. .py 扩展名保存该文件。
  3. 在安装了 ArcGIS Pro(Standard 或 Advanced)或 ArcGIS Server 的计算机上运行脚本。

    有关从 ArcGIS Server 计算机运行 Python 的信息,请参阅 ArcGIS ServerArcPy

此时,数据库已具有可创建表和要素类的用户。

新的数据所有者用户可以连接到数据库并创建表和要素类。 然后,数据所有者可以将他们的表和要素类的权限授予其他用户。 有关说明,请参阅授予和撤销数据库和企业级地理数据库中的数据集权限

使用 SQL Server 工具创建登录账户和用户

或者,数据库管理员可以使用 SQL Server 工具创建登录账户和用户。 例如,使用 SQL 创建用户,使其权限与创建数据库用户工具授予的权限不同,或者不向用户直接授予权限。 当您使用 SQL 创建用于 ArcGIS 的登录账户和用户时,请记住以下几点:

  • 将创建数据的所有用户必须在数据库中具有方案。 方案名称必须与用户名称相同。
  • 您可以将 SQL Server 的访问权限授予 Windows 群组(而不是单个 Windows 登录账户),从而简化登录账户的创建和管理。 Windows 组的所有成员都可以登录到 SQL Server。 授予组的服务器、数据库和数据集权限都会自动应用于组中的每个成员。 但请注意,您不能只创建一个方案来存储所有组成员创建的数据。 组中在地理数据库内创建数据的每个用户都必须具有自己的方案,以用于存储数据。 在群组成员首次创建数据时,SQL Server 会在数据库中创建用户和方案。 此操作自动进行;不会手动创建方案和用户。
  • 您可以将数据库权限直接授予用户,也可以通过数据库角色授予。 有关所需权限的信息,请参阅 SQL Server 中地理数据库的权限

有关使用 SQL Server 工具创建登录账户、用户和方案的说明,请参阅 Microsoft SQL Server 文档。

新用户可以连接到数据库。 拥有创建对象权限的用户可以创建表和要素类,并将它们的权限授予其他用户。 有关说明,请参阅授予和撤销数据库和企业级地理数据库中的数据集权限