You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bcp工具是否支持令牌认证?Azure VM托管身份下如何用令牌执行bcp?

问题1:bcp工具是否支持基于令牌的身份验证?操作流程及所需版本

bcp工具支持基于令牌的身份验证,要求版本为17.6及以上(含17.6)。

操作流程:

  • 验证版本:执行bcp -v确认版本符合要求
  • 获取访问令牌:针对https://database.windows.net/资源获取有效的Azure AD访问令牌(可通过托管身份、Azure CLI等方式获取)
  • 执行bcp命令:使用-G参数启用Azure AD身份验证,指定任意非空用户名,将令牌作为密码传入。示例命令:
bcp [表名] in "数据文件路径" -S "Azure SQL服务器名.database.windows.net" -d "数据库名" -G -U dummy_user -P <访问令牌> -c
问题2:Azure VM系统分配托管身份下使用bcp通过令牌认证推送数据到Azure SQL DB

按以下步骤操作即可实现:

  1. 确认bcp版本:执行bcp -v确保版本≥17.6,版本过低会导致令牌认证失效。
  2. 获取托管身份令牌:在PowerShell中通过VM元数据服务获取令牌:
$tokenResponse = Invoke-WebRequest -Uri "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F" -Headers @{Metadata="true"} -UseBasicParsing
$accessToken = ($tokenResponse.Content | ConvertFrom-Json).access_token
  1. 执行bcp导入命令:结合-G参数,用任意非空用户名,将令牌作为密码传递:
bcp YourDatabase.dbo.YourTable in "C:\data\import.csv" -S "your-sql-server.database.windows.net" -d "YourDatabase" -G -U mi_identity -P $accessToken -c -t "," -r "\n"

参数说明:-c表示字符格式导入,-t指定字段分隔符,-r指定行分隔符,可根据实际文件调整。

  1. 权限检查:确保该系统托管身份已被添加到Azure SQL DB的db_datawriter(或更高权限)角色中,拥有数据写入权限。

内容的提问来源于stack exchange,提问作者Safi Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:50:15