Sql server 无法在ci服务器上使用localdb和dacpac进行集成测试
我有一个使用SSDT DACPAC进行数据库更改和迁移的大型项目。 我试图通过将整个模式部署到本地数据库并对该数据库运行测试来实现集成测试 我使用下面的powershell脚本部署dac,生成服务器输出报告如下:Sql server 无法在ci服务器上使用localdb和dacpac进行集成测试,sql-server,powershell,continuous-integration,sql-server-data-tools,Sql Server,Powershell,Continuous Integration,Sql Server Data Tools,我有一个使用SSDT DACPAC进行数据库更改和迁移的大型项目。 我试图通过将整个模式部署到本地数据库并对该数据库运行测试来实现集成测试 我使用下面的powershell脚本部署dac,生成服务器输出报告如下: LocalDB instance "MSSQLLocalDB" created with version 13.0.2151.0. LocalDB instance "MSSQLLocalDB" started. Name: MSSQLLocalDB Ver
LocalDB instance "MSSQLLocalDB" created with version 13.0.2151.0.
LocalDB instance "MSSQLLocalDB" started.
Name: MSSQLLocalDB
Version: 13.0.2151.0
Shared name:
Owner: NT AUTHORITY\SYSTEM
...
Creating [tr_MStran_alterview]...
Update complete.
Updating database (Complete)
数据库似乎已部署。但是,单元测试无法连接到数据库,我无法在VS SQL Server对象资源管理器(以系统帐户打开)中看到它们
我相信它配置正确。我已将dacpac发布配置文件配置为针对以下连接字符串数据源=(localdb)\MSSQLLocalDB;综合安全=真实;连接超时=30;加密=假;TrustServerCertificate=False
:somedatabase\u集成测试
我在本地机器上测试了它,它工作了,但我需要它在构建服务器上工作。
我的测试项目配置为连接到以下数据库:
所有任务都使用在系统帐户下运行的Bambol执行
function setupLocalDB() {
sqllocaldb info
sqllocaldb create mssqllocaldb
sqllocaldb start mssqllocaldb
sqllocaldb info mssqllocaldb
$env:UserDomain
$env:ComputerName
}
function publishDacFile($dacProfilePath, $dacPacFilePath) {
#load DLL
$dacLibPath = join-path $pwd Microsoft.SqlServer.DacFx.x86.140.3652.3\lib\net40\Microsoft.SqlServer.Dac.dll
Add-Type -path $dacLibPath
#load Profile
$dacProfile = [Microsoft.SqlServer.Dac.DacProfile]::Load($dacProfilePath)
$dacService = new-object Microsoft.SqlServer.Dac.DacServices($dacProfile.TargetConnectionString)
Register-ObjectEvent -InputObject $dacService -EventName "Message" -Action { Write-Host $EventArgs.Message.Message } | out-null
$dacPublishOptions = new-object Microsoft.SqlServer.Dac.PublishOptions
$dacPublishOptions.DeployOptions = $dacProfile.DeployOptions
$dacPublishOptions.GenerateDeploymentReport = $true
$dacPublishOptions.GenerateDeploymentScript = $false
# Load dacpac from file & deploy to database named publish
$dacPac = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacPacFilePath)
$publishResult = $dacService.Publish($dacPac, $dacProfile.TargetDatabaseName, $dacPublishOptions)
$publishResult.DeploymentReport
}
我如何才能让测试看到localdb实例而不干扰用户帐户或安装完整的SQL Server?什么执行单元测试/它们是用什么编写的?我使用mstest执行集成测试。因此,有几件事-较旧版本的.net不支持localdb,因此您需要确保它不支持像.net 2或其他东西+实例对用户来说是本地的-是创建实例并尝试连接到实例的同一用户吗?如果它是同一台计算机上的不同用户,则可以共享实例“sqllocaldb share”。如果用户相同且.net最新版本,请尝试打开跟踪并在sql错误日志中查找错误connecting@EdElliott. 谢谢你的建议。测试和创建数据库都是在系统帐户下运行的。我也是针对.NETFramework4.5.2的,所以这不应该是一个问题。