SQL 数据库创建表权限被拒绝

SQL Database create table permission denied

提问人:AGc 提问时间:11/14/2023 更新时间:11/14/2023 访问量:53

问:

我有几个脚本可以在某些 Azure 数据库中创建一些表,这些表是由 init.sh 启动的。如果我使用同一用户登录 SSMS,我将传递到连接字符串,并手动运行它们成功运行的脚本,而不会出现问题。但是,当我运行我的代码时,我得到这个:

CREATE TABLE permission denied in database 'master'.

我使用的用户与手动运行的用户相同。这对我来说毫无意义。我错过了什么?我在 VM 的 Docker 容器中运行的 SQL DB 上测试了代码,一切正常,表已创建。代码,不应该是问题。

SQL Azure 权限被拒绝

评论

1赞 Mitch Wheat 11/14/2023
轻松解决:停止尝试在主数据库中创建表

答:

1赞 Bhavani 11/14/2023 #1

错误背后的原因

CREATE TABLE permission denied in database 'master'

是用户无权在 master 数据库中创建表。因此,请按照以下步骤在 master 数据库中授予权限:

将 sql 数据库连接到 SSMS,打开新的查询面板,然后选择“master 数据库”,使用以下代码向用户授予权限:

USE Master;
GRANT CREATE TABLE TO <user>;

enter image description here

授予权限后,我就可以在 master 数据库中创建一个表:

enter image description here

但是,据

主数据库是一个系统数据库 - 它不是真正让你四处闲逛和存储东西的。我们通常为主数据库设计不同的备份和恢复过程,而不是为用户数据库设计不同的备份和恢复过程。

最好在专用数据库中创建表。有关更多信息,您可以参考内容。

0赞 AGc 11/14/2023 #2

我的错误,第一个错误是下面的错误,然后是我原来的帖子:

USE statement is not supported to switch between databases. Use a new connection to connect to a different database.

USE 语句不适用于 Azure SQL 数据库。由于这不起作用,我认为它默认为主节点并尝试在那里创建:)