wget http://download.microsoft.com/download/8/D/D/8DD7BDBA-CEF7-4D8E-8C16-D9F69527F909/ENU/x64/SQLEXPRWT_x64_ENU.exe -Outfile SQLEXPRWT_x64_ENU.exe
Enabled
로 변경. 속성 선택해서 원하는 IP에 대해 Port 지정. 0으로 돼 있는 것은 삭제.localhost:1433
sa
password12!
sudo docker run -e 'ACCEPT_EULA=Y' \ -e 'MSSQL_SA_PASSWORD=password12!' \ -e 'TZ=Asia/Seoul' \ -p 1433:1433 --name sqlserver2017 \ -d microsoft/mssql-server-linux:2017-latest # TZ=Asia/Seoul 은 운영체제 시간은 그대로인 상태로 sqlserver의 시간대만 Asia/Seoul로 변경한다. # 완성형 필요하면 추가 옵션 -e 'MSSQL_COLLATION=Korean_Wansung_CI_AS'
Asia/Seoul
로 시간대를 지정해야 한다.docker exec sqlserver2017 /bin/bash -c "apt-get update && apt-get -y install tzdata && ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && echo 'Asia/Seoul' > /etc/timezone" docker restart sqlserver2017
Unable to acquire SQL Server application lock --------------------------------------------- SQL State : S0000 Error Code : 17750 Message : Could not load the DLL (server internal), or one of the DLLs it references. Reason: 126(The specified module could not be found.). Could not load the DLL (server internal), or one of the DLLs it references. Reason: 126(The specified module could not be found.).
# 한번에 docker exec -it sqlserver2017 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'password12!' # docker 내부에서 command line 으로 DB접속 docker exec -it sqlserver2017 "bash" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'password12!'
sqlcmd
에서 port 지정은 -S localhost,1433
처럼 Hostname 뒤에 쉼표로 한다.git clone https://github.com/kwon37xi/vagrant-mssql-express.git cd vagrant-mssql-express vagrant up
192.168.50.4
localhost
로 포트포워딩해서 접속 가능sa
password12!
install-sql-server.cmd
수정해서 변경가능apt-get install rdesktop
vagrant rdp
실행vagrant
vagrant
현재 DB에서 실행된 실제 SQL 문을 보고 싶다면 Logging all queries executed on MSSQL database | ..:: JOCHEN HEBBRECHT ::..
SELECT SQLTEXT.text, STATS.last_execution_time FROM sys.dm_exec_query_stats STATS CROSS APPLY sys.dm_exec_sql_text(STATS.sql_handle) AS SQLTEXT WHERE STATS.last_execution_time > GETDATE()-1 ORDER BY STATS.last_execution_time DESC
IF EXISTS (SELECT * FROM [CATALOG_NAME].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='[TABLE_NAME]' AND TABLE_SCHEMA='dbo') DROP TABLE [CATALOG_NAME].dbo.[TABLE_NAME];
DROP TABLE IF EXISTS [CATALOG_NAME].dbo.[TABLE_NAME];
varchar
: 8bit(1byte) 단위로 문자를 저장한다.nvarchar
: unicode 로 문자를 저장한다. 한글 한글자 '한'은 length가 1이 된다. 그러나 실제 저장소는 16bit(2byte)를 차지한다.nvarchar
로 통일하는게 좋다. 그렇지 않고 두가지가 섞일 경우 매우 복잡한 byte 조작이 필요해진다.datetime2
를 사용할 것! 더 적은 용량 더 높은 정확도.IDENTITY_INSERT
를 지정해야 한다.SET IDENTITY_INSERT books ON; // books table에 insert SET IDENTITY_INSERT books OFF;
Adventure Works
샘플을 사용할 것.