Sql server SQL Server中的应用程序角色和用于跨数据库查询的来宾帐户?

Sql server SQL Server中的应用程序角色和用于跨数据库查询的来宾帐户?,sql-server,Sql Server,从MSDN: 应用程序角色是一个数据库主体,它使应用程序能够使用自己的类似用户的权限运行。您可以使用应用程序角色仅允许通过特定应用程序连接的用户访问特定数据。与数据库角色不同,应用程序角色不包含成员,默认情况下处于非活动状态。应用程序角色使用两种身份验证模式。应用程序角色通过使用sp_setapprole启用,它需要密码。因为应用程序角色是数据库级主体,所以它们只能通过在这些数据库中授予来宾的权限来访问其他数据库。因此,其他数据库中的应用程序角色将无法访问禁用来宾的任何数据库 有人能给我解释一下

从MSDN:

应用程序角色是一个数据库主体,它使应用程序能够使用自己的类似用户的权限运行。您可以使用应用程序角色仅允许通过特定应用程序连接的用户访问特定数据。与数据库角色不同,应用程序角色不包含成员,默认情况下处于非活动状态。应用程序角色使用两种身份验证模式。应用程序角色通过使用sp_setapprole启用,它需要密码。因为应用程序角色是数据库级主体,所以它们只能通过在这些数据库中授予来宾的权限来访问其他数据库。因此,其他数据库中的应用程序角色将无法访问禁用来宾的任何数据库

有人能给我解释一下吗


这是否意味着,如果禁用了同一SQL Server实例上的来宾帐户,我将无法编写引用同一SQL Server实例上另一个数据库中的表的跨数据库查询?

首先,禁用实例上的来宾帐户是个坏主意。guest帐户设计为允许用户“查看”数据库(仅此而已)。禁用实例(和consequestically master)的来宾帐户将停止数据库的枚举,这可能会停止以其他方式进行身份验证的角色连接,具体取决于所使用的连接字符串。您可以将应用程序角色授予一个或多个数据库和实例,在此帐户下运行的应用程序将具有访问权限(除非以其他方式被拒绝)因此,任何能够运行应用程序的用户都可以通过应用程序进行访问)这是一种允许应用程序在不授予用户这些权限的情况下执行某些操作的方式。我猜您指的是sQL安装实例