2017年4月13日 星期四

[Docker]測試Microsoft SQL Server vNext

  以往DBA在Mac上要測試SQL Server都要用VirtualBox或是Paralles之類的虛擬機器,現在多了Docker這個選擇,那如果是Developer的話,更要用Docker,因為真的是秒裝,非常快速,本篇來介紹一下如何來測試Microsoft SQL Server vNext (CTP1.4),關於image的說明可參考microsoft/mssql-server-linux

  第一次使用可以先docker pull下載它,需要花上一段時間喔,因為image有1G多
docker pull microsoft/mssql-server-linux

  啟動就很簡單了
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<Passw0rd>' -p 1433:1433 -d microsoft/mssql-server-linux
  其中環境變數ACCEPT_EULA與SA_PASSWORD是必要的

  怎麼連到container中的mssql呢?這邊介紹兩種

  第一種是在命令列模式下
  我們需要使用docker exec幫你連上container後下指令,可接受container id或是name,其中container id可只輸前三碼就行
docker exec -it <container_id|container_name> cmd

  指令cmd的話需要使用sqlcmd,這個sqlcmd本身已包含在image裡,可以直接使用

  可以先進container的bash再下sqlcmd,如下
docker exec -it focused_kare bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "<Passw0rd>"

select @@version
go
  目前版本是Microsoft SQL Server vNext (CTP1.4)

  打成一行也是可以,就是直接進container執行sqlcmd
docker exec -it focused_kare /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "<Passw0rd>"

  第二種就是透過GUI的client
  因為是使用Mac,沒辦法安裝SSMS,只好使用SQL Developer囉,要讓SQL Developer可以連上SQL Server,需先安裝jTDS JDBC Driver才行喔,連線資訊設定如下圖,基本上密碼不要打錯就應該可以連得上囉

  連上後測試一下

  因為SQL Server vNext幾乎包含了SQL 2016的New features,所以來試試幾個新的T-SQL增強吧,比如說SERVERPROPERTY,有多幾個屬性

SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel, SERVERPROPERTY('Edition') AS Edition, SERVERPROPERTY('EngineEdition') AS EngineEdition, SERVERPROPERTY('InstanceDefaultDataPath') AS InstanceDefaultDataPath, SERVERPROPERTY('InstanceDefaultLogPath') AS InstanceDefaultLogPath, SERVERPROPERTY('ProductBuild') AS ProductBuild, SERVERPROPERTY('ProductBuildType') AS ProductBuildType, SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion, SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion, SERVERPROPERTY('ProductUpdateLevel') AS ProductUpdateLevel, SERVERPROPERTY('ProductUpdateReference') AS ProductUpdateReference;
GO

  下面是試試SQL 2016的Alter table with online的增強,及drop if子句(這MySQL一直都有的)

create database test;
go
create table test.dbo.t1 (id int not null);
go
insert into test.dbo.t1 values (1),(2),(3);
go
alter table test.dbo.t1 alter column id decimal(5,2) with (online = on);
go
drop table if exists test.dbo.t1;
go


  來試試SQL server vNext獨有的Linux Process Dynamic Management Views,不過沒資料
select * from sys.dm_linux_proc_sql_threads;

  剛剛SERVERPROPERTY那邊有得到data file的路徑,我們就可以登入container執行bash去查看有哪些mdf,ldf放哪
ls -l /var/opt/mssql/data/

  最後我們可以查看container的log,這邊看到的基本上就是Error Log的內容
docker logs amazing_banach




  而實際上errorlog的路徑是在container裡/var/opt/mssql/log/errorlog

  其實CTP1.4有個重要的功能就是preview of SQL Server Agent on Linux,但沒包在docker的image裡,需要手動安裝,接著下一篇會介紹如何安裝喔


0 意見:

張貼留言