メモ:SSMS でクエリの結果をカンマ区切りで出力する

CSVファイルに吐く場合は、
デフォルトの結果をグリッドに表示(Ctrl + D)で出力された結果を
右クリック => 結果に名前を付けて保存CSV に。
右クリックが面倒な人は、

メニューの ツール => オプション => クエリ結果 => SQL Server => 
結果をテキストで表示 => 出力形式:コンマ区切り 

に変更して、SSMS を再起動した後に、結果をファイルに出力(Ctrl + Shift + F)でカンマ区切りされた *.rpt ファイルが吐かれる。

.rpt に出力件数と完了時刻が表示される?

出力件数は、set nocount on で。

set nocount on
select-- 結果を出力したいクエリ

set nocount on 書くの面倒なら、オプションで設定。

メニューの ツール => オプション => クエリ実行 => SQL Server => 
詳細設定 => SET NOCOUNT をチェックする

完了時刻は SSMS18.3.1 以降なら設定出来そう。
Release notes for (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Docs

The Completion time message visible in the Result Grid/File (introduced in SSMS 18.2) is now configurable under Tools > Options > Query Execution > SQL Server > Advanced > Show completion time.
メニューの ツール => オプション => クエリ実行 => SQL Server => 
詳細設定 => 完了時刻の表示のチェックを外す

これで *.rpt に件数と完了時刻は入らない。*1

*1:余分な改行は残ってるけど…

メモ:全 Temporal Table を無効化するクエリ

Visual Studio の Database Project で Temporal Table 使ってると公開が失敗することがある - お だ のスペース
で、度々引っかかるのでウンザリしてクエリ書いた。

declare @sql nvarchar(max) 

select @sql = concat(@sql, N'alter table ', [sys].[tables].[name] collate Japanese_CI_AS, N' set (system_versioning = off);')
from [sys].[tables] 
where [sys].[tables].[temporal_type] = 2

-- 一応クエリ確認
select @sql

exec (@sql)

テーブル名に指定してる collate は不要な環境なら外して使ってください。

メモ:SQL Server 2019 のDBエンジン インストールに失敗してた端末でインストール成功した

何回か試してたけど、ダメで諦めてたのを久々に再チャレンジしたらインストール出来たのでメモ。
ちゃんと記録残してないので雑だけど。

ちなみに SSMS は 18.4 だったので ↓の内容ではないはず。
SQL Server 2019 Release Notes - SQL Server | Microsoft Docs

環境は、開発環境だったので結構ぐちゃぐちゃな感じ。
2017 はインストール済。 2019 の 一部の機能はインストール出来てるけど、肝心のインスタンスがインストール失敗するので当然接続出来ない。*1

アプリの追加と削除では、↓はインストール出来てる扱い。

アプリの追加と削除で検索してると、 2019 CTP 2.2 の何かが2個残ってたので、とりあえず削除してからもっかい 2019 インストールしたら成功した。
ちゃんとメモってたら…とは思うけど、まあインストール成功したからいっかー。

*1:接続対象が無いから

【再延期】 03/10(火) SQLWorld★大阪#53 開催します #sqlworld

【2020/05/01 追記】
一旦開始日を白紙に戻して、落ち着いたら再度日程提示します。
オンライン開催も考える必要あるかもですね。。
【2020/02/26 追記】
最近の状況を考慮して、企業様の部屋を借りて勉強会を開催するのはご迷惑をお掛けすることになるので、一旦延期とします。
次回予定は、5/19(火) の予定です。

SqlWorld :: SQLWorld★大阪#53 開催します!
今年初で35回目の平日夜開催で、いつも通り ハンズオン 形式で行う予定です。

【日時】
2020年03月10日(火曜日) 19:00~21:00
 

【イベント概要】
SQLWorld、今回で35回目の平日夜開催~。今回も、みんなで SQL を書いてみようというハンズオン企画です!ブラウザがあれば参加出来るようにしていますので、iPad 等のタブレットでも大丈夫です。
 

【会場】
フェンリル株式会社さま大阪本社 http://www.fenrir-inc.com/
〒530-0011 大阪府大阪市北区大深町 3番1号 グランフロント大阪タワーB(オフィス)
 

【参加費】
無料
 

【持ち物】
パソコン/タブレット (DB のインストールは不要です。)
 

【参加可能人数】
13 人
 

お題に沿って、SQL を書いてみようという勉強会です。是非ご参加を~。
開催回数は増えていっていますが、続き物というわけでは無いので初めて参加される方でもお気軽にどぞー。

12/28(土) meetup app osaka@4 で SQL DB Hyperscale の話しをちょっとします。

今週の土曜12/28に、
meetup app osaka@4 - connpass
で、Azure SQL DB Hyperscale のお話しをちょっとします。
ハイパースケールの概要 | Microsoft Docs
他にも色んなジャンルのお話しが聞けますし、年末ですが気軽にご参加を~。

メモ:A5:SQL Mk-2 で SQL Server の ER図吐くときは照合順序に気を付ける

SSMS 18.1 Diagram なんか不安定ってか作ったファイルが開けず SSMS が落ちる。。 - お だ のスペース
で書いて以降ER図吐くのに、
A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール .. 松原正和
使ってます。

ちゃんと検証してないので詳細条件不明だけど、
DBの照合順序が Latin1~ で、ER図でテーブル名が日本語使ってると、属性(列名)を取ってきてくれない。。
英語テーブル名 + 日本語列名はOKで、日本語テーブル名 だと、英語列名でもダメ。

多分、照合順序が Latin1~で日本語テーブル名とかそうそう無いから良いんだけど。*1

*1:たまたま照合順序の設定ミスってた

メモ:Temporal Table の 期間列は datetime2 型だけ

datetime2 を datetimeoffset に直してる作業してるときに気になったので。

テンポラル テーブル - SQL Server | Microsoft Docs

すべてのテンポラル テーブルには、それぞれに datetime2 データ型が明示的に定義されている 2 つの列があります。 

テンポラル テーブル - SQL Server | Microsoft Docs

INSERTS: システムにより、INSERT では、SysStartTime 列には、システム クロックに基づく現在のトランザクションの開始時間 (UTC タイム ゾーン) の値が設定され、SysEndTime 列には、最大値の 9999-12-31 の値が割り当てられます。 これは行をオープンとマークします。

UTC タイムゾーン 時間で書き込まれるから offset 無しでOKなんかー。
前 Temporal Table 調べたときに見た気がするけど、触ってないと忘れてる。。