21

この記事の手順に従って、docker コンテナー内の Mac に Sqlserver をインストールしました。

Kitematic でコンテナーを実行し、Navicat Essentials for SQl Server を使用してサーバーに接続できました。サーバーには 4 つのデータベースがあり、新しいデータベースを作成できますが、理想的には、既存のデータベースを .bacpac としてインポートしたいと考えています。

この回答の指示は、過去に役に立ちました。コンテナ内で同様のものを実行できますか? または、より一般的に、コンテナにデータベースをインポートする方法はありますか?

4

4 に答える 4

11

Microsoft はドキュメントと共にsqlpackage でこれのサポートを実装したようです!

コンテナーに sqlpackage を追加する必要があります。

こちらからダウンロードできます。(オプションで、ここに Linux パッケージへの直接リンクがあります。変更されないことを願っています)

以下は、これを Windows マシンから実行するための手順です。明らかに、動作させるための最低限の手順です。パスワードを変更してください。おそらくこれを docker-compose.yml に入れて再利用してください。

上記のパッケージをフォルダー 'c:\sqlpackage' に解凍し (私の Windows docker run では相対パスが許可されていません)、次のように bacpac を使用してコンテナーにマウントします。

docker run -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Asdf1234" -v c:\sqlpackage:/opt/sqlpackage -v c:\yourdb.bacpac:/tmp/yourdb.bacpac -p 1433:1433 --name mssql-server-example microsoft/mssql-server-linux:2017-latest

*nix ユーザーが代わりに実行できるものは次のとおりです。

docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Asdf1234' -v ./sqlpackage:/opt/sqlpackage -v ./yourdb.bacpac:/tmp/yourdb.bacpac -p 1433:1433 --name mssql-server-example microsoft/mssql-server-linux:2017-latest

最後に、コンテナにアタッチして実行します。

/opt/sqlpackage/sqlpackage /a:Import /tsn:. /tdn:targetdbname /tu:sa /tp:Asdf1234 /sf:/tmp/yourdb.bacpac

この後、SSMS を使用して localhost、ユーザー名、およびパスワードを上記で指定したとおりに接続できるようになり、「targetdbname」が表示されます。これらは主に私が自分のために書いたメモですが、他の人もそれらを使用できると確信しています.

于 2019-09-04T05:16:17.970 に答える