Azure SQL无效对象名称'sys.server_role_members'

时间:2015-06-05 19:09:39

标签: tsql azure azure-sql-database

我收到错误“无效的对象名称'sys.server_role_members'”

在SQL Server 2014中运行以下查询时:

SELECT sr.name,sp.name 
FROM sys.server_role_members srm
inner join sys.server_principals as sp ON 
srm.member_principal_id = sp.principal_id
inner join sys.server_principals as sr ON
srm.role_principal_id = sr.principal_id

我正在使用Azure SQL并通过SQL Server 2014开发人员版本连接到它。我在系统视图下检查过,我既没有看到sys.server_role_members也没有看到sys.server_principals系统视图。有谁知道为什么这些视图没有出现在Azure中?

2 个答案:

答案 0 :(得分:5)

Azure SQL数据库中的服务器级角色和登录处理方式与SQL Server中的处理方式略有不同:

  • master数据库中有两个服务器级安全角色:loginmanager和dbmanager。
  • 而不是sys.server_principals,您在master中使用sys.sql_logins。

我建议您查看Managing Databases and Logins in Azure SQL Database,了解有关Azure SQL数据库和SQL Server之间用于服务器级管理的差异的详细信息。请注意,在大多数情况下,如果将contained database users与Azure SQL数据库一起使用,您将获得更好的性能,因为这些用户可以直接在用户数据库中进行身份验证,并避免登录所需的额外往返主机。

答案 1 :(得分:1)

使用[sys]。[database_permissions],[sys]。[objects]和[sys]。[database_principals] 而不是sys.server_role_members和sys.server_principals为我工作