首页 > 解决方案 > 创建登录,从 Azure 中的存储过程创建用户

问题描述

我继承了一个在 SQL Server 2005 上运行的非常旧的应用程序。我正在尝试将此应用程序移动到 Azure。

此应用程序中的存储过程所做的一件事是创建新的数据库登录名和新用户。我知道它使用的许多函数和系统过程不再存在于 SQL Server 或 Azure 中。

是否有可以从用户数据库执行的类似sp_addloginsp_droploginsp_grantdbaccess等的过程(这些过程在那里并且必须在那里运行)?sp_revokedbaccess

我看到很多关于“连接到主服务器”的文章,但是如何从自定义数据库的存储过程中做到这一点?

例如,“创建登录”命令必须在 master 中运行,但我的程序在用户数据库中。我怎么做?

任何帮助,将不胜感激。如果我试图做的事情是不可能的,我也会很感激知道这一点。

标签: sql-serverazuremastercreateuser

解决方案


我不确定您从哪里得到CREATE LOGIN必须在主数据库中运行的想法。从用户数据库运行时似乎工作得很好:

use master
go

drop database if exists StackOverflow;
create database StackOverflow;
go

use StackOverflow;
go

if exists(select * from sys.syslogins where name=N'StackOverflow')
    drop login [StackOverflow];

create login StackOverflow
with    password='St4ck0verflow',
    default_database = StackOverflow;

create user StackOverflow
from login StackOverflow
with    default_schema = dbo;

推荐阅读