sql-server - 添加凭据参数后无法在 SSMS 中运行 SQL Server 存储过程查询

标签 sql-server azure stored-procedures azure-blob-storage azure-storage-account

我刚开始使用存储过程和 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>';

结果:

enter image description here

之后,我继续运行以下存储过程,我想从 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.

但是,根据我输入上面链接的指南,他们能够运行查询:

enter image description here

我尝试从 Microsoft Docs 库和其他可能遇到类似问题的人中搜索 RESTORE 语句的语法,但没有找到任何有效的结果。如果您遇到类似的情况并愿意分享您的解决方案,我将不胜感激。谢谢!

最佳答案

从您共享的错误中,很容易解释您正在使用 SQL 数据库托管实例。但您共享的链接没有提及它正在使用哪个 SQL Server。由于 SQL 服务器和语句兼容性的差异,该链接中提到的方法可能不适用于您的情况。

然后,我尝试了微软官方文档中给出的步骤(评论区 @Nick.McDermaid 分享的链接)。它工作正常,没有任何问题。

请按照以下步骤来满足要求(适用于 SQL Server 2016 (13.x) 及更高版本,仅 Azure SQL 托管实例)。

按照以下步骤使用 SQL Server Management Studio 中的 GUI 创建凭据。

  1. 连接 SQL Server 2016 (13.x) 及更高版本或 Azure SQL 托管实例

enter image description here

  • 右键单击您的数据库名称,将鼠标悬停在任务上,然后选择备份以启动备份数据库向导。

  • 备份到目标下拉列表中选择URL,然后选择添加以启动“选择备份目标”对话框框。

  • enter image description here

  • 选择备份目标对话框中选择新容器以启动“连接到 Microsoft 订阅”窗口。
  • enter image description here

  • 选择登录登录到 Azure 门户,然后继续完成登录过程。从下拉列表中选择您的订阅。 从下拉列表中选择您的存储帐户。从下拉列表中选择您已创建的容器。选择创建凭据以生成您的共享访问签名 (SAS)。 保存此值,因为恢复时需要它。
  • enter image description here

    我还尝试使用新创建的凭据恢复数据库,并且运行良好。

    要使用 T-SQL 创建凭据,请按照此 link 中提供的步骤操作。 .

    关于sql-server - 添加凭据参数后无法在 SSMS 中运行 SQL Server 存储过程查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69293639/

    相关文章:

    python - 如何使用 python 生成身份验证 token 并列出 azure 中的资源组?

    php - 将Mysql程序转换为PHP代码

    sql - 如何限制 NVARCHAR 列上没有空字符串

    sql服务器: Any way to group records by date based on the dates of other records?

    azure - 将数据从 Azure SQL 数据库实时复制到 Synapse

    .net - Azure WebApp 上的 2MB 文件上传超时(已在 Web.config 中设置executionTimeout 和 maxAllowedContentLength)

    oracle - 函数 x 不是过程或未定义

    mysql - 使用链接 DB 中的另一个 SP 执行 SP

    sql-server - 查找不同日期期间变量总和比总和大 10 倍的变量总和

    c# - SQL 连接和事务