导出 (0) 打印
全部展开

在 Azure SQL Database 中管理数据库和登录名

更新时间: 2014年2月

在 Microsoft Microsoft Azure SQL Database 中,当你注册该服务时,设置过程将创建一个 Azure SQL Database 服务器、一个名为 master 的数据库以及作为你的 Azure SQL Database 服务器的服务器级别主体的登录名。该登录名与内部 SQL Server 实例的服务器级别主体 sa 类似。

Azure SQL Database 服务器级别主体帐户始终有权管理所有服务器级别和数据库级别的安全性。本主题介绍如何使用服务器级别主体和其他帐户以便在 Microsoft Azure SQL Database 中管理登录名和数据库。 

Microsoft Azure SQL Database 中的安全管理类似于 SQL Server 的内部实例的安全管理。在数据库级别管理安全性几乎完全相同,只是在可用参数上存在差异。因为 Azure SQL Database 可以扩展到一个或多个计算机,所以,Microsoft Azure SQL Database 为服务器级别管理使用不同的策略。下表介绍内部 SQL Server 的安全管理与 Microsoft Azure SQL Database 中的安全管理之间的差异。

 

差异点 内部 SQL Server Microsoft Azure SQL Database

管理服务器级别安全性的位置

SQL Server Management Studio 的“对象资源管理器”中的“安全性”文件夹

master 数据库

用于创建登录名的服务器级别安全角色

securityadmin 固定服务器角色

有关详细信息,请参阅服务器级别角色

master 数据库中的 loginmanager 数据库角色

用于管理登录名的命令

CREATE LOGIN

ALTER LOGIN

DROP LOGIN

CREATE LOGIN

ALTER LOGIN

DROP LOGIN

(存在一些参数限制并且你必须连接到 master 数据库)

显示所有登录名的视图

sys.syslogins(对于 SQL Server 身份验证登录名则为 sys.sql_logins

sys.sql_logins

(你必须连接到 master 数据库)

用于创建数据库的服务器级别角色

dbcreator 固定数据库角色

有关详细信息,请参阅服务器级别角色

master 数据库中的 dbmanager 数据库角色

用于创建数据库的命令

CREATE DATABASE

CREATE DATABASE

(存在一些参数限制并且你必须连接到 master 数据库)

删除数据库

DROP DATABASE

DROP DATABASE

如果某一用户为 dbmanager 角色,则该用户将有权 DROP 任何数据库,而与最初创建该数据库的用户无关。

列出所有数据库的视图

sys.databases

(视图)

sys.databases

(你必须连接到 master 数据库)

你的 Azure SQL Database 服务器是用于定义一组数据库的抽象概念。与你的 Azure SQL Database 服务器相关联的数据库可以驻留在 Microsoft 数据中心的单独物理计算机上。通过使用名为 master 的单个数据库对全部数据库执行服务器级别的管理。

master 数据库将跟踪有权创建数据库或其他登录名的登录名。只要你 CREATEALTERDROP 登录名或数据库,就必须连接到 master 数据库。master 数据库还具有 sys.sql_loginssys.databases 视图,可供你分别查看登录名和数据库。

note备注
USE 命令不支持在数据库之间切换。直接建立与目标数据库的连接。

你可以在 Microsoft Azure SQL Database 中通过与用于 SQL Server 的内部实例相同的方式来管理用户和对象的数据库级别的安全性。仅在可用于相应命令的参数中存在差异。有关详细信息,请参阅 Transact-SQL 参考 (Transact-SQL)

通过连接到 master 数据库来使用服务器级别主体登录名管理登录名。你可以使用 CREATE LOGINALTER LOGINDROP LOGIN 语句。以下示例将创建一个名为 login1 的登录名:

-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
note备注
你在创建登录名时必须使用强密码。有关详细信息,请参阅强密码

为了使用你创建的登录名连接到 Microsoft Azure SQL Database,你必须首先通过使用 CREATE USER 命令为每个登录名授予数据库级别权限。有关详细信息,请参阅向登录名授予数据库级别权限

因为某些工具以不同方式实现表格格式数据流 (TDS),所以,你可能需要使用 <login>@<server> 表示法将 Azure SQL Database 服务器名称追加到连接字符串中的登录名。在这些情况下,使用 @ 符号分隔登录名和 Azure SQL Database 服务器名称。例如,如果你的登录名为 login1 并且你的 Azure SQL Database 服务器的完全限定名称为 servername.database.windows.net,则你的连接字符串的用户名参数应为:login1@servername。此限制将限制你可为登录名选择的文本。有关更多信息,请参阅创建登录名 (Transact-SQL)

为使登录名(而非服务器级别主体)管理服务器级别安全性,Microsoft Azure SQL Database 提供了两个安全角色:loginmanager,用于创建登录名;dbmanager,用于创建数据库。只有 master 数据库中的角色才能添加到这些数据库角色中。

note备注
若要创建登录名或数据库,你必须连接到 master 数据库(这是 master 的逻辑表示形式)。

与用于 SQL Server 的内部实例的 securityadmin 固定服务器角色相似,Microsoft Azure SQL Database 中的 loginmanager 数据库角色有权创建登录名。只有服务器级别主体登录名(由设置过程创建)或 loginmanager 数据库角色的成员才能创建新的登录名。

Microsoft Azure SQL Database dbmanager 数据库角色与用于 SQL Server 的内部实例的 dbcreator 固定服务器角色相似。只有服务器级别主体登录名(由设置过程创建)或 dbmanager 数据库角色的成员才能创建数据库。一旦某一用户是 dbmanager 数据库角色的成员后,它就可以使用 Azure SQL Database CREATE DATABASE 命令创建数据库,但该命令必须在 master 数据库中执行。有关更多信息,请参阅创建数据库 (Transact-SQL)

若要创建登录名以及可创建数据库或其他登录名的关联用户,请执行以下步骤:

  1. 使用服务器级别主体登录名(由设置过程创建)的凭据或 loginmanager 数据库角色的现有成员的凭据连接到 master 数据库。

  2. 使用 CREATE LOGIN 命令创建一个登录名。有关更多信息,请参阅创建登录名 (Transact-SQL)

  3. master 数据库中使用 CREATE USER 命令为该登录名创建一个新用户。有关更多信息,请参阅创建用户 (Transact-SQL)

  4. 使用存储过程 sp_addrolememeber 将新用户添加到 dbmanager 数据库角色和/或 loginmanager 数据库角色。

下面的代码示例阐释如何创建一个登录名 login1 以及名为 login1User 的相应数据库用户,该用户能够在连接到 master 数据库时创建数据库或其他登录名:

-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
CREATE USER login1User FROM LOGIN login1;
EXEC sp_addrolemember 'dbmanager', 'login1User';
EXEC sp_addrolemember 'loginmanager', 'login1User';
note备注
你在创建登录名时必须使用强密码。有关详细信息,请参阅强密码

所有登录名都必须在 master 数据库中创建。在创建一个登录名后,你可以为该登录名在另一个数据库中创建用户帐户。Microsoft Azure SQL Database 还通过与 SQL Server 的内部实例中相同的方式支持数据库角色。

若要在其他数据库中创建用户帐户,并且假定你尚未创建登录名或数据库,请执行以下步骤:

  1. 连接到 master 数据库(使用 loginmanagerdbmanager 角色)。

  2. 使用 CREATE LOGIN 命令创建一个新登录名。有关更多信息,请参阅创建登录名 (Transact-SQL)。不支持 Windows 身份验证。

  3. 使用 CREATE DATABASE 命令创建一个新数据库。有关更多信息,请参阅创建数据库 (Transact-SQL)

  4. 建立与该新数据库的连接(使用创建了该数据库的登录名)。

  5. 使用 CREATE USER 命令在这个新数据库上创建一个新用户。有关更多信息,请参阅创建用户 (Transact-SQL)

下面的代码示例演示如何创建一个名为 login1 的登录名和一个名为 database1 的数据库:

-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
CREATE DATABASE database1;
note备注
你在创建登录名时必须使用强密码。有关详细信息,请参阅强密码

下一个示例演示如何在与登录名 login1User 相对应的数据库 database1 中创建名为 login1 的一个数据库用户:

-- Establish a new connection to the database1 database
CREATE USER login1User FROM LOGIN login1;

Microsoft Azure SQL Database 中的这一数据库级别权限模型与 SQL Server 的内部实例中的权限模型相同。 有关详细信息,请参阅 SQL ServerSQL Server 联机丛书中的下列主题。

标识和访问控制(数据库引擎)

管理登录名、用户和架构操作指南主题

第 2 课:配置数据库对象的权限

note备注
Transact-SQL 中与安全性相关的 Microsoft Azure SQL Database 语句在可用的参数中可能会稍有不同。有关详细信息,请参阅Azure SQL Database Transact-SQL 参考

若要查看你的 Azure SQL Database 服务器上的登录名和数据库,请分别使用 master 数据库的 sys.sql_loginssys.databases 视图。下面的示例演示如何显示你的 Azure SQL Database 服务器上所有登录名和数据库的列表。

-- first, connect to the master database
SELECT * FROM sys.sql_logins;
SELECT * FROM sys.databases; 

另请参阅

显示:
© 2014 Microsoft