使用sqlpackage导出Azure SQL的dacpac时遇Windows登录不支持错误如何解决
报错原因
当前sqlpackage命令未显式指定身份验证方式,默认调用Windows集成身份验证,而Azure SQL Database不支持传统SQL Server的Windows登录模式,因此触发报错。你可以通过SSMS正常连接,是因为SSMS连接时已经选择了SQL身份验证、Azure AD身份验证等兼容Azure SQL的认证模式。
解决方案
选择和你SSMS连接时一致的认证方式,在原有命令中补充对应参数即可:
方案1:SQL身份验证(适配SSMS选择「SQL Server身份验证」的场景)
补充SQL登录的用户名、密码参数,修改后命令如下:
sqlpackage.exe /action:Extract /TargetFile:"C:\file.dacpac" /sourceDatabasename:dbsorgente /sourceservername:dummy.database.windows.net /p:ExtractAllTableData=True /sourceuser:<替换为你的SQL登录用户名> /sourcepassword:<替换为你的SQL登录密码>
如果用户名或密码包含特殊字符,需要用英文双引号包裹取值。
方案2:Azure AD身份验证(适配SSMS选择Azure AD相关认证的场景)
根据你使用的Azure AD认证类型补充对应参数:
- 通用MFA认证:添加参数
/ua:true,同时指定Azure AD用户名/sourceuser:<替换为你的Azure AD账户邮箱> - Azure AD密码认证:添加参数
/sourceuser:<替换为你的Azure AD账户邮箱> /sourcepassword:<替换为你的Azure AD账户密码>
通用MFA认证示例命令:
sqlpackage.exe /action:Extract /TargetFile:"C:\file.dacpac" /sourceDatabasename:dbsorgente /sourceservername:dummy.database.windows.net /p:ExtractAllTableData=True /ua:true /sourceuser:xxx@xxx.onmicrosoft.com
内容的提问来源于stack exchange,提问作者Riddick
相关产品推荐
相关产品推荐

