SQL ServerはNATURAL JOINとUSINGが使えない??

 

本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。

ちょっと、ハマったので、ブログに残しておきます。以下の様な、2つのテーブルを用意しました。

f:id:masaru1006a:20180320200540j:plain   f:id:masaru1006a:20180320200615j:plain

この2つのテーブルに対して、NATURAL JOINをしたところ、構文エラーになりました。

f:id:masaru1006a:20180320200701j:plain

また、INNER JOINでUSINGをして結合しようとしたら、これも、構文エラーになりました。

f:id:masaru1006a:20180320200759j:plain

どうやら、SQL Serverでは、NATURAL JOINとUSINGは使えないようです。

NATURAL JOINとUSINGは使えなくても、別の書き方があるので、問題は無いですが。

動的SQLについて

本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。
大量データを挿入するために、動的SQLを使ってみました。
動的SQLというのは、ローカル変数の値をSQLに組込むみたいなイメージです。
以下、コードです。

DECLARE @x int
SET @x = 1 -- 変数の初期値

BEGIN TRANSACTION

WHILE @x <= 1000000 -- 挿入件数を指定する
	BEGIN
		EXECUTE ('INSERT INTO TairyouData VALUES(' + @x + ', ''bbbbbbbbbb'', ''cccccccccc'', ''dddddddddd'', ''eeeeeeeeee'')')
		SET @x = @x + 1
	END

COMMIT

「@x」の部分がローカル変数の値に応じて、動的に設定されて、INSERT文が実行されます。

圧縮指定でバックアップを取得する時のファイルサイズの注意点

本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。

SQL Server Management Studioでデータベースを選択して、右クリックし、[タスク]-[バックアップ]でバックアップを取得出来ます。

その時に、オプションの「バックアップの圧縮の設定」で圧縮する/圧縮しないを選択出来ます。

f:id:masaru1006a:20180122025304j:plain

「バックアップを圧縮する」に設定すると、最終的にバックアップファイルのファイルサイズが、かなり小さくなりますが、注意が必要です。

バックアップを取得して、最後に圧縮という流れになるため、バックアップを取得するのに必要なディスク容量は、最終的に取得されたバックアップファイルのファイルサイズよりも大きな空き容量が必要になります。

試しにやってみました。

バックアップ中です。ファイルサイズは約「360MB」です。

f:id:masaru1006a:20180122025937j:plain

最終的に取得されたバックアップファイルのサイズです。ファイルサイズは約「71MB」です。

f:id:masaru1006a:20180122030121j:plain

今回の検証だと、最終的に「1/5~1/6」ぐらいまで圧縮されました。

常に、これぐらいの圧縮率かは不明です。

少なくとも、最終的に圧縮されたファイルサイズの6倍ぐらいのディスク容量が必要そうですね。

ちなみに、「バックアップを圧縮しない」を選択した場合も、試してみました。

f:id:masaru1006a:20180122030714j:plain

バックアップ中です。ファイルサイズは、約「1.05GB」です。

f:id:masaru1006a:20180122030759j:plain

最終的にバックアップが完了しました。ファイルサイズは、同じく、約「1.05」GBです。(バイト単位だと、少しだけ増えました。)

f:id:masaru1006a:20180122030841j:plain

「バックアップを圧縮しない」の場合は、バックアップ中もバックアップ完了後も、ほとんどファイルサイズは変わりませんでした。

ただし、「バックアップを圧縮する」の場合の、バックアップ中のファイルサイズよりも、約3倍のファイルサイズとなりました。

SQL Server Management Studioで「上位200行の編集」の行数を変える方法

本投稿のSQL Server Management Studioのバージョンは「17.3」です。

SQL Server Management Studio(SSMS)で、テーブルを選択して、右クリックすると、右クリックメニューに「上位200行の編集」という項目があります。

f:id:masaru1006a:20180122021647j:plain

これ、便利なのですが、件数が多いテーブルだと、目的のレコードを編集出来ない事が有ります。

設定で簡単に変えられるみたいです。

[メニュー]-[ツール]-[オプション]の[SQL Server オブジェクト エクスプローラー]-[コマンド]で変えられます。

f:id:masaru1006a:20180122015510j:plain

上記の画像の[テーブルおよびビューのオプション]の[上位<n>行の編集コマンドの値]で変えられます。

初期値は「200」なので、試しに「2000」に変えてみます。

すると、以下の様に、右クリックメニューの行数が変わります。

f:id:masaru1006a:20180122021712j:plain

困っている方、試してみてください。