ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Server

SQL Serverの暗黙的トランザクションに注意する

先日、SQL Serverであるテーブルに登録されている不要なテーブルを大量に削除するクエリを作成しました。かなり省いておりますが、以下のような感じのクエリです。 DECLARE @delete_row INTEGER; SET @delete_row = 0; WHILE 1 = 1 BEGIN BEGIN TRAN DELETE …

SQL Serverで年月カラムを定義する際についてのメモ

SQL Serverで年月カラムを定義する際についてのメモを、個人的な備忘録として残しておこうと思います。 今回の記事を書こうと思った出来事について 以前、SQL Serverを使用しているシステムで年月を管理するテーブルがありました。このテーブルでは、処理し…

【SQL Server】固定サーバーロールsysadminのユーザーは、既定のスキーマの設定が無視される

今回は、SQL Serverの固定サーバーロール「sysadmin」のユーザーは、既定のスキーマの設定が無視されることについて、個人的な備忘としてメモを残しておきます。 既定のスキーマの設定について SQL Serverのデータベースユーザーは、既定のスキーマと呼ばれ…

SQL Server実行計画のコストについて

今回は、いつも実行計画を取得する際に目にする「コスト」について気になりましたので調べてみました。以下のように赤枠で囲っているところに、色々なコストの情報が出力されています。実際にこの情報をどのように受け止めれば良いか分からなかったので今回…

SQL Serverの実行計画をテキストで表示する

前回は、以下の記事でSQL Serverの実行計画をグラフィカルに表示する方法を見ていきました。 SQL Serverの実行計画をグラフィカルに表示する - ITエンジニアの成長ブログ今回は、タイトルどおりグラフィカルではなくテキストベースの結果で取得する方法を見…

SQL Serverの実行計画をグラフィカルに表示する

本日は、SSMSでSQL Serverの実行計画をグラフィカルに表示する方法を簡単に紹介したいと思います。テキストベースで表示する方法は以下の記事になりますので、よろしければ合わせてご確認いただければ嬉しいです。 SQL Serverの実行計画をテキストで表示する…

SQL Serverのリンクサーバーについて

今回は、SQL Serverのリンクサーバーについて調べた内容を簡単にまとめておこうと思います。 リンクサーバーとは? リンクサーバーを利用することで、今ログインしているデータベースから他のデータベースへ、ログイン手続きなしでアクセスできるようになり…

SQL Serverのテーブルヒント「NOWAIT」について

今回は、SQL Serverのテーブルヒントの一つである「NOWAIT」を簡単に確認してみようと思います。以前、SQL Serverのロックタイムアウトの設定について以下の記事で触れました。 SQL Serverのロックタイムアウトについて - ITエンジニアの成長ブログ 上記のよ…

SQL Serverで処理時間を計測する方法

タイトル通りですが、SQL Serverであるクエリの処理時間を計測したかったので、その方法をここに備忘録として残します。以下の記事がとても参考になりました。 SQL Serverで処理時間を計測する - Qiitaキャッシュの削除とか、よくわかっていないので勉強して…

SQL ServerのSETオプションの設定を確認する方法

SQL ServerのSETオプションの設定を確認する方法を備忘録として、残しておきます。 (といっても、MSDocの内容をそのままコピーしたものですが)以下のSQLを実行することで、確認できます。 SELECT S.Bits, FLAGS.* FROM ( SELECT optRef, posRef, flagCheck…

SQL Serverデッドロックの調査方法

SQL Serverでデッドロックを調査するための方法を、自分のメモ程度に紹介しておこうと思います。 何個かあるみたいなので、いくつか確認していきたいと思います。また、本記事ではデッドロックの調査をするために必要な情報を取得するための方法を紹介するも…

SQL Serverの計算列とは?

つい最近、マイクロソフトが提供しているデータベースである「AdventureWorks2016」の定義を見ていたところ、列の定義に”計算値”と記載がありました。たとえば、以下の"StockedQty"がそれです。 計算列を定義しているカラムこれなんだろうということで、計算…

SQL Serverのデータ型「money」について

今回は、SQL Serverのデータ型「money」について簡単に調べたことをまとめたいと思います。 なぜ調べようと思ったかですが、今まで携わってきたシステムでデータ型「money」を使ったことがなかったためです。なぜ、使ってないのか。実は、便利なのでは。色々…

SQL Serverのロックエスカレーションの発生確認方法

今回は、SQL Serverのロックエスカレーションが発生しているかどうかを確認する方法を備忘として残したいと思います。主に、以下の方の記事を参考にさせていただきました。 SQL Server / SQL Database パフォーマンスチューニング & トラブルシューティング …

SQL Serverのテーブルのロックエスカレーションの設定の確認方法

タイトル通りですが、テーブル単位で設定できるロックエスカレーションの設定の確認方法をこちらにメモしておきます。 ロックエスカレーションとは? 簡単にロックエスカレーションについてざっくりと説明します。SQL Serverでは、行単位のロックが大量に行…

SQL Serverの起動時間の確認方法

先日、SQL Serverの再起動した時間を知りたくて何か簡単に確認できる方法がないかなということで、調べた結果をこちらに備忘録として残したいと思います。以下、記事を参考にさせていただきました。 SQL Server が起動したのはいつか調べてみる - 都内で働く…

SQL Serverでブロッキングを検出するクエリ

今回は、SQL Serverでロック関連の調べ物をしていたときに今後使えそうなクエリを見つけましたので自分のためにここにメモしておきます。以下のリンクにあるクエリがタイトルのとおり、ブロッキングを検出するクエリです。こちらは特に条件変更もしないでそ…

SQL Serverで長時間のブロッキングを確認する方法

SQL Serverにて長時間のブロッキングが行われていたSQLなどを検出する方法がないかを知りたくて、ネットで色々と調べてみたのでその内容を備忘としてここに記載したいと思います。基本的には、以下のブログを参照させていただきました。こちらで紹介されてい…

SQL ServerでセッションIDから実行中のSQLを確認する方法

先日、以下の記事でリアルタイムにブロッキングの状態を見るコマンドを紹介しました。 SQL Serverでリアルタイムにブロッキングの状態を見る - ITエンジニアの成長ブログ 上記のコマンドの結果を見ることで、あるセッションにブロッキングが起きていてことが…

SQL Serverでリアルタイムにブロッキングの状態を見る

先日、SQL Serverでデッドロック関連について調べていたところブロッキングの状態を簡単に見ることができる便利なコマンドを見つけましたのでここにメモをしておきます。そのコマンドとは、システムストアドプロシージャのsp_whoです。 sp_who (Transact-SQL…

SQL Serverで実行中のトランザクションを確認する方法

SQL Serverで実行中のトランザクションを確認する方法を知りましたので、ここにメモします。確認方法はとても簡単で以下のコマンドを実行すればOKです。 DBCC OPENTRAN(‘データベース名’) 私の環境で実行した結果は以下の通りです。 DBCC OPENTRAN実行結果1…

SQL Serverのトランザクションログの使用状況を確認する

SQL Serverのトランザクションログの使用状況を確認する方法を知りましたので、ここにメモします。以下のコマンドで各データベースのトランザクションログの使用状況を確認することができます。 DBCC SQLPERF(LOGSPACE) 私の環境で実行した結果は以下の通り…

SQL Serverの論理バックアップデバイスについて

最近SQL Serverのバックアップ・復元周りを勉強しているのですが、その中で論理バックアップデバイスなるものを知りましたので、備忘としてここに残したいと思います。 論理バックアップデバイスとは? 簡単に説明すると、バックアップファイルへのエイリア…

SQL Server の名前を指定する形式について

先日、SQL Serverの書籍を見ていたところSQL Serverのログイン時にサーバー名を指定するときに接続プロトコルを指定する書式を知りました。具体的には以下のような感じで指定します。 tcp:APPHOST 上記は、記載の通り接続プロトコルにTCPを使って接続する書…

SQL Serverのデータベースの互換性レベルとは?

今回は、SQL Serverのデータベースの「互換性レベル」について調べたことを簡単に備忘として残したいと思います。 互換性レベルとは? 早速、互換性レベルについてですがまずは結論から。互換性レベルとは、SQL Serverのバージョンごとの互換性を表す仕組み…

SQL Serverのマテリアライズドビューについて

SQL Serverにおけるマテリアライズドビューについて軽くお話していきたいと思います。 マテリアライズドビューについて まずは、マテリアライズドビューを簡単に紹介します。これは「実体を持つビュー」とよく言われています。通常のビューが実体を持たない…

SQL Serverのインデックスの再編成のやり方

タイトルの通り、SQL Serverにおけるインデックスの再編成のやり方について方法を確認したいと思います。 SQL Serverではインデックスの再編成のやり方としては”再構築”と呼ばれるものと”再編成”と呼ばれるものがあります。どちらも目的は同じで、インデック…

SQL Serverで一時テーブルを作成する

今回はSQL Serverで一時テーブルを作成してみることにします。 ご興味がある方は、よろしければお読みいただければと思います。 一時テーブルとは? 一時テーブルとは、名前の通りある一定期間の間だけ有効なテーブルのことです。通常のテーブルは永続的にデ…

SQL Serverの統計情報は自動更新される?

SQL Serverで統計情報関連の情報をあさっていたところ、どうやらSQL Serverでは統計情報の自動更新という機能があるようでした。自動更新自体は、データベースの設定によって決まるようです。 SSMSでその設定状況は、簡単に確認することができます。[オブジ…

SQL Serverのバージョンと製品名の対応について

SQL Serverのバージョンは「SERVERPROPERTY('ProductVersion')」を実行することで確認が可能ですが、そこで確認できる値は「15.0.2000.5」のような形式になっています。 バージョン情報確認結果なにやらたくさん数値がありますが、値が"15"から始まるのでこ…