【问题标题】:Drop Database Scoped Credential删除数据库范围凭据
【发布时间】:2017-07-26 03:22:17
【问题描述】:

我在 Azure 中有一个数据库,需要移动到本地数据库。

我使用 SSMS 导出一个 .bacpak 文件,然后连接到我的本地版本的 Sql Server 并尝试导入它。

导入开始,但在这一行失败

Create database scoped credential...

此功能在 Azure 中可用,但在 Sql Server 2014 中不可用(它将在 2016 年推出)。

为了解决这个问题,我去了 Azure 数据库并使用 SSMS 删除了凭据。

因此凭据在 SSMS 中不再可见。

然后我创建了一个新的导出,并尝试导入它。但我收到了同样的错误信息。换句话说,脚本仍在尝试创建凭据,即使它已从数据库中删除。

我还需要做些什么来完全删除凭据吗?我已经尝试了几次导出/导入,以确保我没有导入原始文件,但我确信情况并非如此。是否有一个紧凑的命令或需要运行的东西来完全刷新对数据库的更改?

【问题讨论】:

  • 使用的是哪个 SSMS 版本?对我来说,导入(带有凭证)在 12.0.4100.1 中运行良好。 Azure db 中的sys.database_credentials 中是否没有更多记录?
  • 是的,确实有记录。我看看能不能把它删掉。
  • 成功。我使用了“Drop Database Scoped Credential”并将其从表中删除。 @IlyaChumakov 如果您作为答案发布,我会接受。
  • 很高兴看到您解决了问题。提前致谢。

标签: sql-server azure-sql-database


【解决方案1】:

检查 Azure SQL 数据库中的 sys.database_credentials 视图并使用 DROP DATABASE SCOPED CREDENTIAL 命令删除其余凭据(如果存在)。

【讨论】:

  • 删除命令不起作用“消息 15151,级别 16,状态 1,第 8 行无法删除凭据“用户”,因为它不存在或您没有权限。”虽然它的管理员用户。还有其他方法吗?
【解决方案2】:

为了短期缓解,我们为您提供执行以下操作的 PowerShell 脚本:

  1. 从 bacpac 中删除主密钥对象
  2. 从 bacpac 中删除凭据对象
  3. 在 bacpac 上运行此 PS 脚本后,您将获得带有“已修补”后缀的新 bacpac 文件。

下载here

示例:

C:\PS> .\RemoveMasterKey.ps1 -bacpacPath "C:\BacPacs\Test.bacpac"

Original Post:https://blogs.msdn.microsoft.com/azuresqldbsupport/2017/03/30/exported-database-from-azure-sql-failed-to-be-imported-to-azure-sql-or-to-local-sql-server/

【讨论】:

  • 这对我也有用。它甚至在 SQL Express 上对我有用。
  • 感谢您的努力!即使作为临时解决方案,它仍然意义重大,因为在某些情况下,您无法控制所涉及的整个架构。
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2018-08-03
  • 2021-08-26
  • 2018-11-15
  • 2017-10-19
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多