c# - 将默认数据库设置为用户 SQL Server (Azure)

标签 c# sql-server azure azure-sql-database

我正在尝试在 Azure SQL Server 中使用 C# 创建数据库用户。但我需要设置其默认数据库 (DEFAULT_DATABASE),但该脚本无法在 Azure 上运行。

有谁知道我该怎么做吗?

CREATE USER newlogin FOR LOGIN newlogin;
ALTER LOGIN newlogin WITH DEFAULT_DATABASE = myDatabase;

但它抛出一个错误:

Keyword or statement option 'default_database' is not supported in this version of SQL Server.

在我创建用户并尝试连接到 SQL Server 后,出现此错误:

enter image description here

最佳答案

这可以在 Azure 中完成,但正如 @Larnu 所暗示的那样,这并不完全简单。他们的答案中给出的建议适用于单次登录,但在任何生产场景中可能都不实用或不理想。我建议执行以下操作:

  1. 在 Active Directory 中创建一个组,其中包含您希望应用此行为的用户;将适当的成员分配到该组
  2. 将组作为新登录名添加到目标 Azure Sql Server;更改登录名以将适当的数据库设置为默认值
  3. 将群组作为新用户添加到之前分配的默认数据库中


Azure Sql Server 中的代码与本地代码略有不同:

-- run in [master]
create login [YourGroupName] from external provider;
alter login [YourGroupName] with default_database = [YourDefaultDatabase];

-- run in [YourDefaultDatabase]
create user [YourGroupName] from login [YourGroupName];


编辑:

Azure Sql Server 中的用户通常包含在单个数据库中,甚至不存在于“服务器级别”;更多信息可参见here 。如果您只想在 Azure Sql Server 数据库中创建用户,那么您所需要做的就是以 create user [YourUserName] with password = 'YourSecret'; 的形式编写一条语句。请注意,这假设您已经连接到要在其中创建用户的数据库。如果您位于 [master] 等上下文中,并且有无法更改连接字符串,那么您需要使用 ChangeDatabase首先。

关于c# - 将默认数据库设置为用户 SQL Server (Azure),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55230724/

相关文章:

c# - 我如何测试素数?

javascript - 堆积条形图固定宽度条形图问题 - Chartjs

sql-server - 如何在 SQL Server 中存储 unicode 字符?

javascript - azure 自定义 API : performing database transaction returns a timeout

azure - Azure 容器服务中代理/工作节点的自动扩展 [Kubernetes]

wcf - 在 Azure 上使用 WCF 设置 SSL

c# - iis上部署的asp.net core应用遇到500 internal server error

c# - Parallel.Invoke() 是创建新线程还是使用线程池中的线程?

sql - SQL Server 中如何判断两次select 的结果是否相等?

sql-server - 如何验证或测试 SQL Server 中是否触发了触发器