開發第一張 SQL Server Reporting Service 報表

要透過 Visual Studio 才可以進行報表開發,因此必須要下載與安裝 SSDTSql Server Data Tools,判斷條件很簡單,如果 VS 2017 沒有 BI Template 救代表需要下載了。

 

點選 VS 2017 版本,並且勾選 Sql Server Reporting Services

安裝完畢後,開啟 VS 2017,依據 建立基本資料表報表 (SSRS 教學課程)

基本上依據此份文件教學就可以完成基本第一張報表。

 

簡單說明幾個項目:

  1. 匯入 AdventureWorks2014 資料庫

Sql Server docker image,因此這裡必須要執行 copy host file to docker 方式將下載的資料庫備份匯入:

docker cp .\[host]\[filename] [dockerid]:/[docker]/[folder]

之後就可以用 SSMS 匯入

  1. 報表資料的視窗有時候會不見,這時候可以用 hotkey 快速呼叫(不用到檢視中慢慢找): ctrl+alt+D

  1. 透過部署專案就可以直接發佈到 report server,這裡要說明一下幾個網址的差異

發佈網址(點選 專案->屬性 就可以看到):

可以看到 reportserver 是發佈網址

執行報表網址則是 reports

安裝 SQL Server 2017 Linux Docker 與 Windows 環境下的 Reporting Service

SQL Server 2017 支援 Linux 環境,但目前尚未提供 Reporting Serivce。微軟日前提供獨立安裝的 reporting service,因此如果有此需求,可以透過分開安裝達成:

Linux Sql Server 2017 (使用 docker container

Windows Reporting Service 2017

安裝 sql server on linux docker

首先依據Run the SQL Server 2017 container image with Docker 安裝 sql server 2017,要注意建議 port 改為 1433 only

docker run -e "ACCEPT_EULA=Y" -e
"MSSQL_SA_PASSWORD=Strong!Passw0rd" -p 1433:1433 --name sql1 -d
microsoft/mssql-server-linux:2017-latest

要使用 docker logs sql1 檢查是否正確執行。

更詳細步驟參閱 使用 Docker 安裝 SQL Server 。

安裝 SSRS

然後下載 SSRS Standalone 版本,進行安裝。

安裝完畢後,開啟 Report Server Configuration Manager

在『伺服器名稱』中輸入 localhost (對應 docker image),選擇連線。

主要設定:

服務帳戶、Web服務URL、入口網站URL:使用預設即可

分需要點選套用,例如『Web 服務 URL』中,不需要修改直接點選『套用』:

設定資料庫

連結比較麻煩,需要建立新的報表伺服器資料庫(因為不是跟 SQL Server 一起安裝):

這裡要輸入 Docker 的資料庫名稱(因為docker 安裝在本機,並且將 1433 port forwarding 到內部,因此可以當作是 localhost 使用),後續的資料庫名稱接受預設值即可:

上面提到驗證類型有很多,但因為使用 linux docker 的資料庫,因此使用服務認證與本機使用者認證都會有風險,因此建議使用  sa 帳號。

點選入口網站時候,要輸入本機登入帳號、密碼(因為服務帳戶的設定)。當我們看到這個畫面代表已經設定成功:

使用 Docker 安裝 SQL Server on Windows

一般而言我們都會直接安裝 SQL Server,但會牽涉到安裝的方式與設定的參數。透過 Docker 可以直接使用微軟原始的設定,並且不需要安裝在 Host machine。當然主要目的還是測試使用,正式環境還是推薦直接安裝。

在安裝之前,建議先安裝 server core image,理由是因為後續可以安裝不同版本的 sql server,但同樣都是架構在 server core 之上,因為 docker 會自動管理磁碟空間,透過 image 是層層疊加的,安裝兩個 images 的空間會被重複利用。

作法如下:

  1. 安裝 server core image

docker pull microsoft/windowsservercore

  1. 安裝 sql server developer edition:

docker run -d -p 1433:1433 -e sa_password=<SA_PASSWORD> -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer

其中, -d 代表 detach (也就是在背景中執行)、 -p 代表 port number(與外部 host 的 mapping)、 -e  / –env 代表環境變數,這裡使用 ACCEPT_EULA(必須要接受微軟的條款才可以使用),加上 sa_password 代表對應的 sa 密碼

因為在背景執行,必須要透過 logs 檢查是否 SQL Server 正在執行。透過 docker ps 只能看到 windows server instance 而已:

說明實際上是失敗的,因為密碼強度不夠(因前面的設定密碼 = password),因此必須要加入英數字等密碼字母組合:

首先用 stop 停止執行中的 image:

再次執行 run 並指定包含數字與特殊符號的密碼:

這次再使用 docker logs 就可以看到有正確的執行:

接下來就可以透過 SSMS 存取 localhost database (因為 port mapping 的關係,但實際上是不同的IP,可以透過 inspect 檢查):

Linux Container 與 Windows Container 的差異

在 Windows 執行 docker container,主要有兩種方法:

windows Container

只有在 windows 2016 server core 才提供,利用內建的 dockerd 可以直接運行 container,不需要額外的 VM。架構如下:

Linux Container

windows 2016 Server & windows 10 Pro 以上版本都有提供,必須要透過 Hyper-V (參閱安裝 docker for windows) ,主要透過 docker proxy 執行 VM 裡面的 container:

Windows container 最大的優勢是可以在 host machine 上,直接看到 container 的執行序、新增的硬碟空間等,因為他們的底層 Kernel 是一樣的;

相反的 Linux container 的執行序無法被 host 得知,並且也無法直接存取 container 的目錄,因為底層 Kernel 不一樣。

安裝 Docker for Windows

  • 安裝 hyper-v

首先要確定 virtualization 是否啟用:『模擬』要設定為啟用:

        

上圖代表已被停用,因此需要在硬體的 bios 上啟用虛擬化:

  • 啟動 hyper-Vdocker for Windows 使用 hyper-V,如果我們不設定啟用,docker 也會自動協助設定
  • 安裝 Install Docker for Windows

必須要是 windows 10 pro 64 bits,目前主要還是要選擇 edge channel,因為 stable channel 目前不支援 windows container。如果要安裝穩定版本,可以在 Docker 官網下載

  • 安裝完畢後,要等待 docker initialization

完畢後,就會出現 docker Welcome 畫面,代表 Docker 已經啟動成功:

       

我們可以檢查 hyper-v,會出現 linux VM,這是 Docker host 主要的 VM

透過 docker cli 可以查詢 docker info,在此可以看到執行的環境是 linux: