从SQL AZURE中的用户数据库访问主数据库表

从SQL AZURE中的用户数据库访问主数据库表,sql,sql-server,azure,tsql,azure-sql-database,Sql,Sql Server,Azure,Tsql,Azure Sql Database,我正在尝试从用户数据库访问Master DB上的sys.SQL\u登录,以便我可以使用sys.sysusers加入sys.SQL\u登录 用户数据库 SELECT DP.NAME, DP.sid, SU.sid FROM sys.sql_logins DP INNER JOIN SYS.sysusers SU ON DP.name=SU.name 在Azure中,我无法做到这一点,因为我无法从UserDatbase调用master DB。我的目标是将sys

我正在尝试从用户数据库访问Master DB上的
sys.SQL\u登录
,以便我可以使用
sys.sysusers
加入
sys.SQL\u登录

用户数据库

SELECT      DP.NAME, DP.sid, SU.sid
FROM        sys.sql_logins  DP
INNER JOIN  SYS.sysusers SU
ON      DP.name=SU.name
在Azure中,我无法做到这一点,因为我无法从
UserDatbase
调用master DB。我的目标是将
sys.sql\u登录的SID与用户数据库中的
sys.sqlusers
进行比较


有没有办法在Azure中连接这两个表。

您只能对单个数据库执行查询。但是,您可以设置一个外部表来指向主数据库视图。这段代码应该可以帮助您实现:

CREATE MASTER KEY;  -- if your DB doesn't already have one
GO

CREATE DATABASE SCOPED CREDENTIAL AccessToMaster
WITH IDENTITY = 'yourmasterlogin', SECRET = 'yourpassword'; --TODO set a login name and password that can access the master database
GO

CREATE EXTERNAL DATA SOURCE MasterDatabase
WITH
(
    TYPE = RDBMS,
    LOCATION = N'yourserver.database.windows.net',  --TODO replace your server name
    DATABASE_NAME = N'master',
    CREDENTIAL = AccessToMaster
);
GO

CREATE SCHEMA MasterDB AUTHORIZATION dbo;
GO

CREATE EXTERNAL TABLE MasterDB.sql_logins
(
    [name] sysname, 
    principal_id int, 
    [sid] varbinary(85), 
    [is_disabled] bit 
)
WITH
(
  DATA_SOURCE = MasterDatabase,
  SCHEMA_NAME = 'sys',
  OBJECT_NAME = 'sql_logins'
);
GO

SELECT * FROM MasterDB.sql_logins;
GO

目的何在?如果您使用的是Azure SQL,则应该使用包含的数据库用户。如果您以管理员身份连接,并显式连接到master,则可以连接,但如果您认为需要这样做,则缺少有关PaaS产品的某些信息。您好,我正在尝试比较[存在于master]中的登录名与用户数据库中的SID。我面临一个问题,一些登录SID和用户SID不正确。为什么不首先使用包含用户的数据库?你有什么实际问题?有些人不能登录吗?