Ошибка синтаксического анализа сервера dacpa c docker microsoft sql - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь создать образ с помощью файла dockerfile и использовать dacpa c, но при попытке сделать publi sh выдается следующее исключение: Ошибка разбора строки подключения: инициализатор типа для Microsoft.SqlServer. Da c .DacProfile 'выдал исключение .. Это мой dockerfile

FROM microsoft/mssql-server-windows-express

COPY sqlpackage/1033 /opt/sqlpackage/1033
COPY sqlpackage/Extensions /opt/sqlpackage/Extensions
COPY sqlpackage/en /opt/sqlpackage/en
COPY sqlpackage/DacUnpack.exe /opt/sqlpackage/DacUnpack.exe
COPY sqlpackage/Microsoft.Data.Tools.Schema.Sql.dll/ /opt/sqlpackage/Microsoft.Data.Tools.Schema.Sql.dll
COPY sqlpackage/Microsoft.Data.Tools.Utilities.dll /opt/sqlpackage/Microsoft.Data.Tools.Utilities.dll
COPY sqlpackage/Microsoft.SqlServer.Dac.dll /opt/sqlpackage/Microsoft.SqlServer.Dac.dll
COPY sqlpackage/Microsoft.SqlServer.Dac.Extensions.dll /opt/sqlpackage/Microsoft.SqlServer.Dac.Extensions.dll
COPY sqlpackage/Microsoft.SqlServer.Dac.Extensions.xml /opt/sqlpackage/Microsoft.SqlServer.Dac.Extensions.xml
COPY sqlpackage/SqlPackage.exe /opt/sqlpackage/SqlPackage.exe
COPY sqlpackage/SqlPackage.exe.config /opt/sqlpackage/SqlPackage.exe.config

COPY ./HAS_Database /tmp/HAS_Database

ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=PaSSw0rd

RUN /opt/sqlpackage/sqlpackage /a:Publish /pr:'/tmp/HAS_Database/has.aux.ddbb.dev.publish.xml' /sf:'/tmp/HAS_Database/has.aux.ddbb.dacpac' 

Это мой файл publi sh:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>HAS_ME_AUX_DEV_DEPLOY</TargetDatabaseName>
    <ScriptDatabaseOptions>False</ScriptDatabaseOptions>
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
    <DropIndexesNotInSource>True</DropIndexesNotInSource>
    <DropExtendedPropertiesNotInSource>True</DropExtendedPropertiesNotInSource>
    <ProfileVersionNumber>1</ProfileVersionNumber>
    <BlockWhenDriftDetected>False</BlockWhenDriftDetected>
    <RegisterDataTierApplication>True</RegisterDataTierApplication>
    <TargetConnectionString>Data Source=.;Integrated Security=False;Persist Security Info=True;User ID=sa;Pooling=False;Context Connection=False;Password=PaSSw0rd</TargetConnectionString>
    <VerifyDeployment>False</VerifyDeployment>
    <VerifyCollationCompatibility>False</VerifyCollationCompatibility>
    <ScriptRefreshModule>False</ScriptRefreshModule>
    <ScriptNewConstraintValidation>False</ScriptNewConstraintValidation>
    <PopulateFilesOnFileGroups>False</PopulateFilesOnFileGroups>
    <DisableAndReenableDdlTriggers>True</DisableAndReenableDdlTriggers>
    <DoNotAlterChangeDataCaptureObjects>True</DoNotAlterChangeDataCaptureObjects>
    <DropStatisticsNotInSource>False</DropStatisticsNotInSource>
    <DeployScriptFileName>publish_dev.sql</DeployScriptFileName>
  </PropertyGroup>
</Project>

1 Ответ

0 голосов
/ 14 февраля 2020

Исходные двоичные пути sqlpackage в вашем dockerfile выглядят подозрительно. Загрузите Windows. NET Core zip-файл , распакуйте его в каталог с именем sqlpackage в каталоге контекста сборки и скопируйте этот каталог в свой контейнер для использования в сборке.

Ниже приведен пример dockerfile, который работает для меня:

FROM microsoft/mssql-server-windows-express

COPY ./sqlpackage /opt/sqlpackage/
COPY ./HAS_Database /tmp/HAS_Database

ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=PaSSw0rd

RUN /opt/sqlpackage/sqlpackage /a:Publish /pr:'/tmp/HAS_Database/has.aux.ddbb.dev.publish.xml' /sf:'/tmp/HAS_Database/has.aux.ddbb.dacpac' 
...