从SQL AZURE中的用户数据库访问主数据库表
我正在尝试从用户数据库访问Master DB上的从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
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不正确。为什么不首先使用包含用户的数据库?你有什么实际问题?有些人不能登录吗?