我刚开始使用存储过程和 Azure 存储帐户。我正在探索以下指南: https://www.sqlshack.com/how-to-connect-and-perform-a-sql-server-database-restore-from-azure-blob-storage/ 并在 SSMS 的数据库“Security”>“Credential”文件夹中创建了一个凭据。
我在 SSMS 中运行的查询:
--using the url and the key
CREATE CREDENTIAL [Credential_BLOB]
WITH IDENTITY= 'https://<account>.blob.core.windows.net/',
SECRET = '<storage account key -> which I enter my Access Key 1>';
结果:
之后,我继续运行以下存储过程,我想从 BLOB 存储恢复备份:
RESTORE DATABASE Database_Name FROM URL = 'https://<account>.blob.core.windows.net/Container/SampleDatabase.bak'
WITH CREDENTIAL = 'Credential_BLOB',
我收到此错误:
Msg 41901, Level 16, State 2, Line 3
One or more of the options (credential) are not supported for this statement in SQL Database Managed Instance. Review the documentation for supported options.
但是,根据我输入上面链接的指南,他们能够运行查询:
我尝试从 Microsoft Docs 库和其他可能遇到类似问题的人中搜索 RESTORE 语句的语法,但没有找到任何有效的结果。如果您遇到类似的情况并愿意分享您的解决方案,我将不胜感激。谢谢!
最佳答案
从您共享的错误中,很容易解释您正在使用 SQL 数据库托管实例。但您共享的链接没有提及它正在使用哪个 SQL Server。由于 SQL 服务器和语句兼容性的差异,该链接中提到的方法可能不适用于您的情况。
然后,我尝试了微软官方文档中给出的步骤(评论区 @Nick.McDermaid 分享的链接)。它工作正常,没有任何问题。
请按照以下步骤来满足要求(适用于 SQL Server 2016 (13.x) 及更高版本,仅 Azure SQL 托管实例)。
按照以下步骤使用 SQL Server Management Studio 中的 GUI 创建凭据。
- 连接 SQL Server 2016 (13.x) 及更高版本或 Azure SQL 托管实例
右键单击您的数据库名称,将鼠标悬停在任务上,然后选择备份以启动备份数据库向导。
从备份到目标下拉列表中选择URL,然后选择添加以启动“选择备份目标”对话框框。
- 在选择备份目标对话框中选择新容器以启动“连接到 Microsoft 订阅”窗口。
- 选择登录登录到 Azure 门户,然后继续完成登录过程。从下拉列表中选择您的订阅。 从下拉列表中选择您的存储帐户。从下拉列表中选择您已创建的容器。选择创建凭据以生成您的共享访问签名 (SAS)。 保存此值,因为恢复时需要它。
我还尝试使用新创建的凭据恢复数据库,并且运行良好。
要使用 T-SQL 创建凭据,请按照此 link 中提供的步骤操作。 .
关于sql-server - 添加凭据参数后无法在 SSMS 中运行 SQL Server 存储过程查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69293639/