我们目前在尝试将应用程序从 SQL Server 迁移到 Azure SQL 时遇到问题。
起点
该应用程序是在 2010 年至今使用 Delphi 开发的。底层数据库已经迁移到 Microsoft SQL Server 2022 (16.0.4003.1),没有任何问题。
现在我们要将数据库提升到 Azure SQL。所以我们创建了一个
.bacpac
并将其恢复到 Azure SQL。所有表、视图、函数、过程均已成功创建并恢复数据。
我们希望最小化 SQL Server 管理,因此 Azure SQL。
问题
启动应用程序时,它会尝试执行默认情况下 Azure SQL 不存在的
master.xp_msver
。它会导致错误,请参阅此问题末尾链接的第一个屏幕截图。
方法
我们使用this question中的提示创建了程序。它的创建! (见下面的第二张截图)
用户(管理员用户)不知何故缺乏执行该功能的权限。 (见下面的第三张截图)。
EXEC master.dbo.xp_msver;
消息 229,级别 14,状态 5,过程 master.dbo.xp_msver,第 1 行 [批处理起始行 0]
对象“xp_msver”、数据库“master”、架构“dbo”的执行权限被拒绝。
尝试授予权限时会导致错误:
USE master;
GRANT EXECUTE TO USERNAME;
不能授予、拒绝或撤销对 sa、dbo、实体所有者、information_schema、sys 或您自己的权限。
我的问题
你知道如何绕过这个问题吗?我找不到关于该主题的任何信息。
[微软没有在限制中列出问题
链接
想法:
@siggemannen:
GRANT EXECUTE ON OBJECT::xp_msver TO USERNAME
不能授予、拒绝或撤销对 sa、dbo、实体所有者、information_schema、sys 或您自己的权限。
[40515] [S0001]:此版本的 SQL Server 不支持对“master.dbo.xp_msver”中的数据库和/或服务器名称的引用。CREATE SYNONYM [master].[dbo].[xp_msver] FOR [USERSCHEMA].[dbo].[xp_msver]
@琼脂123:
GRANT EXECUTE ON OBJECT::xp_msver TO PUBLIC
&
GRANT EXECUTE ON xp_msver TO PUBLIC
& GRANT EXECUTE ON master.dbo.xp_msver TO PUBLIC
SQL-Fehler [15151] [S0001]: 找不到对象 'xp_msver',因为它不存在或您没有权限。