在尝试执行与部署到Azure /在SSMS 2012中创建BACPAC相关的任何事情时,我遇到了数据库中3个用户(他们不是当前登录的用户)中的每个用户的错误
验证数据包的模式模型失败.错误SQL71501:验证元素[VARIABLE_USER_NAME_HERE]时出错:用户:[VARIABLE_USER_NAME_HERE]有一个未解析的对Login [VARIABLE_USER_NAME_HERE]的引用.(Microsoft.SqlServer.Dac)
有线索吗?
这个SO问题确实有帮助: 我可以在发布Visual Studio数据库项目时忽略登录吗?
我意识到我登录的用户(到我的本地数据库)没有权限查看与错误消息中被抱怨的对等用户关联的登录的登录详细信息.用更简单的英文写成,假设只有2个数据库用户(mr_spoon和mr_fork),错误信息的含义是"当前登录的用户[mr_spoon]可以看到有另一个用户名为"mr_fork",但无法查看登录的详细信息[在这种情况下也称为"mr_fork"]与该用户相关联"
使用我的Windows管理员登录登录主数据库,然后运行此查询解决了它:
GRANT VIEW DEFINITION ON LOGIN::the_login_name_in_the_error_message TO the_user_i_logged_on_with_and_ran_the_export_from i.e. admin should run this: GRANT VIEW DEFINITION ON LOGIN::mr_fork TO mr_spoon
请注意,SQL Server权限系统支持用户和登录的概念,所以我希望在用户和登录用户和登录时用户和登录时要非常小心.为什么不从您可能会问的管理员登录中运行导出?可以做到这一点的机器没有SSMS2012,也没有可能安装它,它是管理员登录工作的唯一机器.因此,我希望这个问题很少见,但也许有一天这会帮助某人
我以为我会发布一个Q&A因为我看到的所有地方我只在SSDT的上下文中找到了对SQL71501的引用,而不是SSMS2012/Azure部署