首页 > 解决方案 > Microsoft SQL 数据库将数据播种到表管道中

问题描述

我有点努力寻找实现这一目标的最佳方法。

我正在尝试实现一个完全自动化的过程来启动 Microsoft sql 服务器、使用 terraform 的 SQL 数据库,最终,当我拥有所有基础设施时,*.dacpac针对 SQL 数据库发布一个以创建表和列并最终播种该数据库中的一些数据。

到目前为止,我正在使用 azure 管道来实现这一点,这是我的工作流程:

上述步骤工作正常,一切都完美到位。现在我想实施另一个步骤来从 acsvexcel.

A 对谷歌进行了一些研究并阅读了 Microsoft 文档,但显然有不同的方法可以做到这一点,但所有这些方法,从bulk insertto bcp sqlcmd,都记录在本地服务器而不是云服务器上。

谁能告诉我如何使用 azure 管道和云 SQL 数据库来完成这项任务?非常感谢您的任何提示

更新:如果我在 cmd 脚本的发布管道中创建任务。我收到以下错误:

2021-11-12T17:38:39.1887476Z Generating script.
2021-11-12T17:38:39.2119542Z Script contents:
2021-11-12T17:38:39.2146058Z bcp Company in "./Company.csv" -c -t -S XXXXX -d XXXX -U usertest -P ***
2021-11-12T17:38:39.2885488Z ========================== Starting Command Output ===========================
2021-11-12T17:38:39.3505412Z ##[command]"C:\Windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\a\_temp\33c62204-f40c-4662-afb8-862bbd4c42b5.cmd""
2021-11-12T17:38:39.7265213Z SQLState = S1000, NativeError = 0
2021-11-12T17:38:39.7266751Z Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP host data-file

标签: azureazure-devopsazure-sql-databaseazure-pipelinesazure-sql-server

解决方案


它实际上应该很简单

以下示例使用 Azure AD 用户名和密码导入数据,其中用户和密码是 AAD 凭据。该示例使用 Azure AD 用户/密码将文件 c:\last\data1.dat 中的数据导入表 bcptest 以用于 Azure 服务器 aadserver.database.windows.net 上的数据库 testdb:

bcp bcptest in "c:\last\data1.dat" -c -t -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx

如果您不打算使用 AAD 帐户 - 请删除-G标记。

理想情况下,如果您直接从 terraform 将您的管理员帐户名和密码放入 terraform。您可以通过管道中的 KeyVault 任务获取这些值并用于运行上述脚本。

看起来 bcp 已经在 Windows 代理上:

在此处输入图像描述


推荐阅读