尝试将bacpac从BLOB存储导入SSMS时收到CREATE USER错误 [英] Recieving CREATE USER error when attempt to import BACPAC from blob storage to ssms

查看:26
本文介绍了尝试将bacpac从BLOB存储导入SSMS时收到CREATE USER错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过Azure Blob存储备份和还原位于Azure SQL数据库中的数据库。为此,我在选定的数据库上运行Export Data-Tier Application...,并成功地将其作为bacpac文件存储在BLOB容器中。现在,我正在尝试反转并导入Data-Tier Application...以检查备份进程是否正常运行,但在此过程中收到以下错误:

无法导入包。

错误SQL72014:.NET SqlClient数据提供程序:消息15063,级别16, 状态%1,第1行登录名已在不同的帐户下拥有帐户 用户名。

错误SQL72045:脚本执行错误。执行的脚本:create 用户[用户名]用于登录[用户名];

(Microsoft.SqlServer.Dac)

这会导致Importing databaseImporting package schema and data into databaseUpdating database操作失败,并创建空数据库。

我不确定在导入数据库时登录或创建用户在哪里变得相关,您知道发生此错误的原因吗?

推荐答案

在主服务器上运行此查询。它将为您提供存在于服务器级别的登录列表。

SELECT A.name as userName, B.name as login, B.Type_desc, default_database_name, B.* 
FROM sys.sysusers A 
    FULL OUTER JOIN sys.sql_logins B 
       ON A.sid = B.sid 
WHERE islogin = 1 and A.sid is not null

在要导出为bacpac的数据库上运行此命令,以便稍后将其导入到SQL Server实例上:

SELECT DB_NAME(DB_ID()) as DatabaseName, * FROM sys.sysusers
您需要删除您看到的存在于服务器级别(主数据库上)的数据库登录名。之后,尝试将数据库导出为bacpac并将其导入到您的SQL Server实例。

如果您不想删除当前SQL Azure数据库上的那些登录名/用户,请将其复制为新的Azure SQL,删除登录名,将其导出,然后在完成时删除复制的数据库。

如果要在Azure中还原bacpac,请使用门户上的"导入"选项,而不是SSMS。

下载最新的SSMS以获得最佳用户体验。

这篇关于尝试将bacpac从BLOB存储导入SSMS时收到CREATE USER错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆