SQL Server
SQL Serverの照合順序は、大きく2種類に分かれます。それは、「SQL Server 照合順序」と「Windows 照合順序」の2つです。これらの違いが知りたかったので、調べたメモを残します。最初に結論ですが、今はWindows 照合順序を使用すればOK。 (SQL Server照合…
SQL Serverで照合順序が異なる列を結合する場合の注意点について、簡単にまとめておこうと思います。 サンプルデータ まずは、本記事内で扱うサンプルデータをご紹介します。検証のために照合順序の設定が異なる2つのデータベースを用意したいと思います。1…
SQL ServerでNULL同士を結合したい場合はどうすれば良いのかについてです。 サンプルデータ 以下のサンプルデータを使用します。 CREATE TABLE [dbo].[Age] ( [ID] [int] NULL, [Age] [int] NULL ); INSERT INTO dbo.Age VALUES (1, 15), (2, 30), (NULL, 99…
NULL を含む特定の値以外のデータを抽出する方法について少し考えてみたことをメモ程度に残しておきます。SQLでは、NULLのデータを抽出する場合は特別な処置が必要になります。 例えば、column1で9以外のデータを抽出したい場合は単純に考えると以下のように…
SQL Serverには、テーブル値コンストラクターと呼ばれるクエリがあります。 テーブル値コンストラクター (Transact-SQL) - SQL Server | Microsoft Learnこれは、INSERT句で複数の行を1つのクエリで登録するときに見かける構文です。例えば、以下のように記…
SQL ServerでUPSERTを試してみたかったので、簡単に使い方を自分のメモ程度にまとめておこうと思います。 そもそもUPSERTとは? UPSERTとは、UPDATEとINSERTを組み合わせた造語で、データが存在する場合はUPDATE(更新)を行い、データが存在しない場合はINS…
今更ですが、タイトルの通りUPDATE文でFROM句を使用する記述方法について理解できていなかったので今回調べてみました。 構文の確認 まずは、UPDATE文にFROM句を使用する場合のベースとなる構文を確認しておきます。 UPDATE [テーブル名1] SET [テーブル名1]…
今回は、タイトルの通りSQL Serverにおける末尾スペースありの文字列の比較についてまとめたいと思います。SQL Serverでは、標準では以下の文字の比較は同一として判定されます。文字列の比較の際には、末尾のスペースは無視されます。 'AAA' = 'AAA ' 実際…
2025年7月現在、SQL Server2016のサポート期限があと1年で終わります。 SQL Server 2016 - Microsoft Lifecycle | Microsoft Learn以下は、上記URL先で示されているSQL Server2016のサポート日の表です。 SQL Server2016のサポート日「メインストリーム」の…
SQL Serverで最初から含まれている拡張イベントのsystem_healthセッションを簡単に紹介しておこうと思います。system_healthセッションの公式のページは以下の通りです。 system_health セッションを使用する - SQL Server | Microsoft Learnsystem_healthセ…
先日、以下の記事でロック待ちのレコードを特定する方法を紹介しました。 SQL Serverでロック待ちのレコードを特定する - ITエンジニアの成長ブログ記事内では、ロックリソースを取得することができる%%lockres%%と呼ばれる仮想列を紹介しました。自分の環境…
今回は、SQL Serverにおけるロック待ちのレコードを特定する方法を紹介したいと思います。SQL Serverでロックの情報は、sys.dm_tran_locksというDMVを使用すれば取得可能です。 sys.dm_tran_locksの使用例リソースの種類(resource_type)ごとにロックの情報…
先日、uniqueidentifier型について調べた際に、合わせてNEWID関数についても調べました。 SQL Serverのuniqueidentifier型とは? - ITエンジニアの成長ブログ公式のNEWID関数ページの使い方の例で以下の記述がありました。 NEWID() 関数を使用してランダムな…
お恥ずかしながら、今まで「uniqueidentifier」と呼ばれるデータ型の存在を知らなかったので簡単にまとめます。 uniqueidentifier型とは? 16バイトのGUIDを格納するためのデータ型です。ちなみに、GUIDはGlobally Unique Identifierの略でグローバル一意識…
以前、バッチについて記事を書いた時にSQL Serverのステートメント「GO」についても簡単に紹介しました。 SQL Serverのバッチについて - ITエンジニアの成長ブログしかし、最近「GO」の後に何やら数字を指定しているステートメントを見かけました。最初は気…
SQL Serverのプロセス関連のDMVとして、ドキュメントで比較的よく見かけるものは以下の3つがあります。 sys.dm_exec_requests sys.dm_exec_sessions sys.dm_exec_connections これらのDMVでは、それぞれどのような情報を取得することができるのか理解してい…
SQL Serverで予期せず、シングルユーザーモードになって困ってしまったことはありませんか?私はあります。SQL Serverを触り始めた頃、バックアップの復元操作をしていたときに予期せずデータベースがシングルユーザーモードになってしまい、ログインができ…
SQL Serverでバックアップを復元するときに、意味をしっかりと理解せずに、とりあえずREPLACE句を指定していました。ややこしいのが、REPLACE句を指定しなくてもエラーにならないこともあったり、反対にREPLACE句を指定しないとエラーになったりと、挙動がよ…
SQL Serverで、あるサーバーからバックアップを取得して、それを別のサーバーのSQL Serverに復元した後に、ログインできない事象が発生しました。どちらのSQL Serverにも全く同じユーザーが存在しているので、なぜログインができないのか、その原因を調査し…
SQL Serverの既定のスキーマの動作について、気になる点があったのでこの記事に備忘録として残します。既定のスキーマは、以下の通りデータベースユーザーの設定画面で指定することができます。ここでは、「test」スキーマを指定しています。 データベースユ…
SQL Serverのサーバーレベルのユーザーであるログインの権限周りを調査する方法を調べたので備忘録としてここに残します。まず、調査する上で重要なカタログビューを2つ紹介します。sys.server_principalsは、サーバーレベルのプリンシパルごとに1行のデータ…
SQL Serverでテーブル一覧を取得する時に使えるシステムカタログビューのsys.databasesですが、とっても名前が似ているsys.sysdatabasesというものを見つけました。sys.sysdatabasesとsys.databasesは、どちらも同じような情報を取得することができてめちゃ…
SQL ServerのAPPLY演算子の使い方を調べたので、ここに備忘録として残しておきます。 APPLY演算子とは? APPLY演算子は、JOIN と似たように使える結合演算子です。 FROM 句と JOIN、APPLY、PIVOT (T-SQL) - SQL Server | Microsoft Learnあるテーブルの行ご…
SSMSで、ある一定のテーブル定義の変更操作を実行すると、”変更の保存が許可されていません”というエラーが発生します。今回はこのエラーについて簡単に解説したいと思います。このエラーは、公式サイトでも説明されています。 「変更の保存が許可されていま…
最近は、SQL Serverの照合順序周りを勉強しているのですが、この照合順序はテーブル名にも影響することを知りました。例えば、以下の通りデータベースとテーブルを作成します。 CREATE DATABASE Sample COLLATE Japanese_CS_AS; go USE Sample go CREATE TAB…
SQL Serverで特定文字のバイナリを確認する方法を備忘録として残しておこうと思います。確認する方法はとても簡単で、castを使用し以下のように記述することで、特定文字のバイナリを確認することができます。変換先を「varbinary」にするのがキモですかね。…
今回は、SQL Serverの照合順序について調べていた時に、初めて知ったことについて忘れないように記事にしたいと思います。照合順序については、大文字小文字の区別やソート順の規則などを決定することは、以前から知っていたのですが「表示可能な文字を規定…
SQL ServerでSQL99規格のROLLUPの機能を試してみたいと思います。 ROLLUPとは? ROLLUPとは、GROUP BY句で指定することのできるオプションのようなもので、通常のGROUP BYで取得する結果に加えて、「全体の合計」と「それぞれの集計結果」を取得することがで…
つい先日以下の記事を書きました。 SQL ServerのXACT_ABORTの動作について - ITエンジニアの成長ブログSQL Serverのオプションの一つであるXACT_ABORTの動作を確認した記事になるのですが、この記事を書いていく中で驚いたことがありました。それが今回の記…
SQL ServerのXACT_ABORTというオプションについて調査したことをまとめたいと思います。 XACT_ABORTとは? XACT_ABORTは、SETステートメントで設定できるオプションの一つです。XACT_ABORTの公式ドキュメントの説明を以下の通り引用します。 SQL Server ステ…