tSQL将在SQL Azure上设置具有查看定义权限的用户
我正在尝试使用Azure门户将SQL Azure数据库导出到tSQL将在SQL Azure上设置具有查看定义权限的用户,sql,sql-server,tsql,azure,azure-sql-database,Sql,Sql Server,Tsql,Azure,Azure Sql Database,我正在尝试使用Azure门户将SQL Azure数据库导出到.bacpac文件。我的数据库上的管理员用户名包含一个*。当我在用户名字段中使用它时,我得到了这个错误 The login name must meet the following requirements: It must be a SQL Identifier. It cannot be a system name, for example: - admin, administrator, sa, root, dbmanager,
.bacpac
文件。我的数据库上的管理员用户名包含一个*
。当我在用户名字段中使用它时,我得到了这个错误
The login name must meet the following requirements:
It must be a SQL Identifier.
It cannot be a system name, for example:
- admin, administrator, sa, root, dbmanager, loginmanager, etc.
- Built-in database user or role like dbo, guest, public, etc.
It cannot contain:
- White space like spaces, tabs, or returns
- Unicode characters
- Nonalphabetic characters ("|:*?\/#&;,%=)
It cannot begin with:
- Digits (0 through 9)
- @, $, +
门户导出表单接受该用户名,但随后出现错误,并显示以下消息
服务操作期间遇到错误。无法提取
来自指定数据库的包。逆向工程操作
无法继续,因为您没有对的视图定义权限
“MyActualDB”数据库
为了解决这个问题,我尝试了以下tSQL
GRANT VIEW ANY DEFINITION TO gu6t6rdb
这会引发以下错误
此版本的SQL server不支持安全类“server”
我应该如何使用tSQL在我的数据库上提供一个额外的用户,并授予该用户足够的权限,以便通过Azure门户将数据库导出到Azure blobstore中的
.bacpac
文件?明白了。我可以将用户添加到db_owner
角色中,然后导出将无误地进行
EXEC sp_addrolemember 'db_owner', 'gu6t6rdb'
这在sql azure上不起作用。您需要在数据库级别授予视图定义。(不带任何关键字) 将视图定义授予gu6t6rdb
注:我遇到了完全相同的问题,这似乎解决了我的问题。我还必须执行授权执行(但这取决于您的bacpac应用于数据库的内容)现在,
将视图定义授权给[username]
在Azure SQL中工作,我只是自己验证了它。请参阅以供参考:
因此,为了成功地将数据库导出为bacpak文件,您可以创建包含的用户(无需在CREATE LOGIN…
命令中),并授予以下权限:
CREATE USER [user_from_azure_AD] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [user_from_azure_AD]
GRANT VIEW DEFINITION TO [user_from_azure_AD]
这并不是为基本上是只读的用户(如果需要仅导出)授予DBO权限的最佳方法。
CREATE USER [user_from_azure_AD] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [user_from_azure_AD]
GRANT VIEW DEFINITION TO [user_from_azure_AD]