2016-05-16 49 views
2

我需要在地理复制数据库上创建登录名和用户。用户将被授予此数据库上的'db_datareader'角色。如何在Azure中的地理位置冗余数据库上创建登录名和用户?

尝试的方法是使用SID(相同的身份)的参数,如下所示:

-- 1. PRIMARY_DATABASE: Run on master database of Primary Database to create login 
CREATE LOGIN [LOGINUSER] WITH password='XYZ' 
GO 

-- 2. Select details for created SQL login 
SELECT [name], [sid] 
FROM [sys].[sql_logins] 
WHERE [type_desc] = 'SQL_Login' 
AND [name] = 'LOGINUSER' 
GO 

-- 3. SECONDARY_DATABASE: Run on master database of Secondary Database to create login with associated SID 
CREATE LOGIN [LOGINUSER] 
WITH PASSWORD = 'XYZ', 
SID = <SID from Step 2> 
GO 

虽然登录创建工作在两个数据库罚款,我被允许在PRIMARY_DATABASE访问,而拒绝访问与以下错误secondary_database的:

The server principal "LOGINUSER" is not able to access the database "master" under the current security context. 
Cannot open user default database. Login failed. 
Login failed for user 'LOGINUSER'. (Microsoft SQL Server, Error: 916) 
  1. 这是设立在地理复制数据库的登录正确的做法?
  2. 如何在这些数据库上设置用户?
+0

您能澄清这是针对Azure SQL数据库还是针对在Azure虚拟机上运行的SQL Server?对于启用了读取访问地理复制功能的Azure SQL数据库,上述方法不应该是必需的。 –

+0

这将用于Azure SQL数据库。所以应该自动复制登录和用户? – sfarrugia

+0

正确,无需设置任何“备用服务器”凭证。 –

回答

2

您应该在从主服务器获取的SID上创建另一台服务器上的登录。否则,您可以使用SQL Server/db中的包含用户功能,以便用户自动复制到只读副本。

+0

不会地理复制复制所有用户和登录信息。我无法记得专门创建用户,但不是100%肯定 – TheGameiswar

+1

不是在主数据库中创建的登录信息。你只复制一个数据库,其中的信息/用户将会是。 –

0

看来你没有本地访问主数据库。你有没有尝试通过不同的登录访问主?如果没有,您可能需要在主服务器上创建本地用户并使用它进行连接。

相关问题