nik*_*kan 14 sql-server macos docker kitematic
我按照本文中的说明在我的Mac上的docker容器中安装了Sqlserver .
我使用Kitematic运行容器,并设法使用Navicat Essentials for SQl Server连接到服务器.服务器有四个数据库,我可以创建新数据库,但理想情况下,我想将现有数据库导入为.bacpac.
这个答案的说明过去对我有用.我可以在容器内运行类似的东西吗?或者,更一般地说,有没有办法在容器中导入数据库?
看起来微软已经在 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 连接到您在上面提供的本地主机、用户名和密码,并查看“targetdbname”!这些大部分是我为自己写的笔记,但我相信其他人也可以使用它们。
大家好!我们终于可以在基于dotnet核心且跨平台的sqlpackage预览版上使用了!以下是下载链接。它们是常绿的链接,即每天都上传一个新的版本。这样,第二天就可以使用所有已检入的错误修复程序。.zip文件中包含预览EULA。linux https://go.microsoft.com/fwlink/?linkid=873926 osx https://go.microsoft.com/fwlink/?linkid=873927 Windows https://go.microsoft.com/fwlink/?linkid= 873928 发行说明:
/ p:CommandTimeout参数硬编码为120。不支持构建和部署提供者。需要移动到支持System.ComponentModel.Composition.dll的.NET Core 2.1。需要处理区分大小写的路径不支持SQL CLR UDT类型。一种。这包括SQL Server类型SqlGeography,SqlGeometry和SqlHierarchyId。不支持使用Json序列化的较旧.dacpac和.bacpac文件。
如果缺少更好的方法,请提供您对此GitHub问题的任何反馈。
感谢您尝试一下,让我们知道它的进展!
https://github.com/Microsoft/mssql-docker/issues/135#issuecomment-389245587
编辑:为此,我为您提供了Docker映像
https://hub.docker.com/r/samuelmarks/mssql-server-fts-sqlpackage-linux/
设置容器,创建数据库,复制.bacpac文件并将其导入上述数据库的示例:
docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name sqlfts0 mssql-server-fts-sqlpackage-linux
docker exec -it sqlfts0 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourStrong!Passw0rd>' -Q 'CREATE DATABASE MyDb0'
docker cp ~/Downloads/foo.bacpac sqlfts0:/opt/downloads/foo.bacpac
docker exec -it sqlfts0 dotnet /opt/sqlpackage/sqlpackage.dll /tsn:localhost /tu:SA /tp:'<YourStrong!Passw0rd>' /A:Import /tdn:MyDb0 /sf:foo.bacpac
Run Code Online (Sandbox Code Playgroud)