标签: sql-server-linux

Linux 上的 Microsoft SQL Server 数据库引擎启动失败

我已经在 Ubuntu 16.04 上安装了 mssql。以下是sql server的详细信息。ms sql(14.0.3015.40-1)SQL server 2017

当我运行配置命令时#sudo /opt/mssql/bin/sqlservr-setup 出现错误sudo: /opt/mssql/bin/sqlservr-setup: command not found

我已经停止并重新启动但没有用。

当我通过命令检查状态时 #systemctl status mssql-server

我有

mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Fri 2018-02-02 16:15:29 IST; 4min 20s ago
     Docs: https://docs.microsoft.com/en-us/sql/linux
  Process: 28050 ExecStart=/opt/mssql/bin/sqlservr (code=exited, status=200/CHDIR)
 Main PID: 28050 (code=exited, status=200/CHDIR)

Feb 02 16:15:28 chetan-desktop systemd[1]: mssql-server.service: Unit entered failed state.
Feb 02 16:15:28 …
Run Code Online (Sandbox Code Playgroud)

database sql-server ubuntu-16.04 sql-server-2017 sql-server-linux

8
推荐指数
1
解决办法
1万
查看次数

如何在Linux上查看SQL Server中的执行计划

我在Linux上安装了SQL Server.它是从Microsoft的repos安装的,如下所述:https: //docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu

在MySql中,我曾经EXPLAIN在查询前写过,看看执行计划.在SQL Server中,它似乎不起作用.但我没有安装工作室程序,只有SQL Server和sqlcmd工具.

如何在Linux上的SQL Server中查看查询的执行计划?

linux sql-server sql-execution-plan sql-operations-studio sql-server-linux

7
推荐指数
1
解决办法
1652
查看次数

Docker (Linux) 和 Windows 主机中 SQL Server 的 MSDTC 配置问题

我正在迁移本地 SQL Server 开发数据库以在 Linux docker 容器(在同一开发计算机上)中运行。在 Windows 上的 Visual Studio 2019 中运行集成测试时,我收到 MSDTC 错误:

抛出异常:System.Data.dll 中的“System.Transactions.TransactionManagerCommunicationException” System.Data.dll 中发生“System.Transactions.TransactionManagerCommunicationException”类型的异常,但未在用户代码中处理与底层事务管理器的通信失败。

这是我的 docker-compose 中 SQL Server 的最新版本:

services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2019-latest
    container_name: SqlServer
    restart: always
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=verySecretPassword
      - MSSQL_RPC_PORT=13500
      - MSSQL_DTC_TCP_PORT=51000
    ports:
      - "1401:1433"
      - "135:13500"
      - "51000:51000"
    volumes:
      - sqldata:/var/opt/mssql
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方法来调整 RPC 端口以使其正常工作。这是 MS 的主要文章。我尝试过端口135:135但它给出了相同的错误。文章底部的注释似乎与我的问题有关。

对于容器外部的 SQL Server 或非根容器,必须在容器中使用不同的临时端口(例如 13500),并且必须将到端口 135 的流量路由到该端口。您还需要在容器内配置从容器端口 135 到临时端口的端口路由规则。

另外,如果您决定将容器的端口 135 映射到主机上的其他端口(例如 13500),则必须在主机上配置端口路由。这使得 docker 容器能够参与与主机和其他外部服务器的分布式事务。

SQL Server 2019 容器以非 …

sql-server msdtc docker docker-compose sql-server-linux

6
推荐指数
1
解决办法
1455
查看次数

如何将 bacpac 文件还原到 SQL Server linux docker 容器?

我正在尝试为 Docker 设置集成测试环境。我们需要将 bacpac 恢复到我们的mssql-server-linux:latest图像,以便我们可以基于数据集运行测试。

我的撰写文件如下所示:

version: '3'

services:
    projectweb:
        image: projectweb
        build:
            context: .
            dockerfile: Project\Dockerfile
        depends_on:
            - db
    db:
        image: "microsoft/mssql-server-linux"
        environment:
            SA_PASSWORD: "MyVerySecurePassword"
            ACCEPT_EULA: "Y"        
        volumes:
            - ./database:/tmp
Run Code Online (Sandbox Code Playgroud)

我不需要对数据库的更改在容器的生命周期之后持久化。我只需要编写脚本将数据放入其中。我对 Linux 的 docker 或 SQL Server 没有很多经验。我假设我需要等待容器初始化和数据库设置并启动,然后执行从 tmp 文件夹读取数据库 bacpac 的脚本。据我所知,我应该使用 sqlpackage 但这似乎不在容器中?我是否需要另一个包含此 SSDT/sqlpackage 的容器?我可以将 splpackage 安装到容器中吗?

导入 bacpac 数据的最佳方法是什么?

linux sql-server docker docker-compose sql-server-linux

5
推荐指数
1
解决办法
1829
查看次数

docker-compose 在 sql-server-linux 中恢复数据库

我正在关注https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-2017在 macos 中配置和运行独立的 sqlserver 容器数据成功。现在我想创建一个 docker-compose 文件,其中包含两件事:

  1. 网络
  2. 数据库(将 bak 文件从主机复制到容器中并恢复)

我如何实现(2)?

我的 docker-compose 文件:

version: "3"
services:
    web:
        build: 
            context: ./webapi
            dockerfile: Dockerfile
        ports:
            - "4010:80"
        environment: 
            - ASPNETCORE_ENVIRONMENT=Development
        depends_on:
            - db
    db:
        image: "mcr.microsoft.com/mssql/server:2017-latest"
        ports:
            - "4009:1433"
        volumes:
            - "sqlvolume:/var/opt/mssql"
        environment:
            SA_PASSWORD: "<password>"
            ACCEPT_EULA: "Y"
    redis:
        image: "redis:alpine"
volumes:
    sqlvolume:
Run Code Online (Sandbox Code Playgroud)

sql-server docker sql-server-linux

5
推荐指数
1
解决办法
6301
查看次数

Docker CREATE INDEX中的SQL Server失败,因为以下SET选项的设置不正确:'QUOTED_IDENTIFIER'

我有一个SQL Server Dockerfile,我的import-data.sh *.sql从sql-data文件夹中导入文件。如果我*.sql从Datagrip之类的工具运行文件,一切都会正常,但导入会自动失败,并显示此错误消息。

错误信息:

消息1934,级别16,状态1,第4行
CREATE INDEX失败,因为以下SET选项的设置不正确:“ QUOTED_IDENTIFIER”。验证SET选项是否正确用于计算列的索引视图和/或索引和/或已过滤索引和/或查询通知和/或XML数据类型方法和/或空间索引操作。

Docker文件

FROM microsoft/mssql-server-linux:2017-latest

RUN mkdir /sql-data/
EXPOSE 1433

COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh

COPY import-data.sh /usr/src/app/
RUN chmod +x /usr/src/app/import-data.sh

# Copy SQL Scripts to sql-data for processing
COPY ./sql-data/*.sql /sql-data/

CMD /bin/bash /usr/local/bin/entrypoint.sh
Run Code Online (Sandbox Code Playgroud)

入口点

#!/bin/bash

#start SQL Server, start the script to create the DB and import the data, start the app
/usr/src/app/import-data.sh & /opt/mssql/bin/sqlservr
Run Code Online (Sandbox Code Playgroud)

import-data.sh

#!/bin/bash
# wait for the SQL Server to come …
Run Code Online (Sandbox Code Playgroud)

sql-server docker dockerfile sql-server-linux

2
推荐指数
1
解决办法
532
查看次数