STRING_SPLIT 関数- カンマ区切りの文字列からテーブルを生成する 2 便利な STRING_SPLIT 関数 以前、「 カンマ区切りの文字列からテーブルを生成する 」 で、WHILE や XML を使って、カンマ区切りの文字列からテーブルを生成するユーザー定義関数を作りました。 SQL Server 2016 (互換性レベル 130 以上) からは、 STRING_SPLIT という組み込み関数が使えるようになり、自前でユーザー定義関数を作る必要がなくなりました。 ※ SQL Server 2016 より前、もしくは、SQL Server 2016 以降で互換性レベル 130 未満で使っている方は こちらをご覧ください。 「 カンマ区切りの文字列からテーブルを生成する 」 STRING_SPLIT 関数 STRING_SPLIT は、第一引数の文字列を、第二引数で指定した区切り
SQL Server 2016から手軽にJSONを扱えるようになっています。 MSDNなどを読みながら勉強している最中で全体を把握しているわけではないですが、SQL ServerのJSONサポートは次の2つの機能がメインなのかなと思います。 機能 概要 FOR JSON句 結果セットをJSON文字列に変換する OPENJSON関数 JSON文字列を結果セットに変換する ここではSELECT文で取得できる行と列の表形式のデータを「結果セット」と言っています。たぶん言いますよね。行セットとも言うのかもしれません。 そしてOPENJSONの使い方を知っているとJSON文字列を解析したり、集計や抽出するときなどになかなか役に立つのかなと思うので、クエリを書きながら使い方を覚えていきたいと思います。 まずOPENJSONには 既定のスキーマを使用する方法(スキーマを指定しない方法) 明示的なスキーマ
この節では、MicrosoftのSQL Serverにおける 最も良く現われる実行計画の処理を説明します。Microsoftの ドキュメントも参照して下さい。 インデックスとテーブルへのアクセスSQL Serverの用語はシンプルになっています。 「Scan」はインデックス全体を読み込み、「Seek」はインデックスあるいはテーブルの指定された一部のみにアクセスするためにBツリーや 物理アドレス(RID、 Oracleで言うROWID)を使う処理になっています。 Index Seek, Clustered Index SeekIndex Seekは、Bツリーの走査に 加えて、一致するエントリを探すのにリーフノードチェーンをたどります。第1章1, 「 SQLインデックスの内部構造」も参照して下さい。 Index Scan, Clustered Index Scanインデックスの全体つまり全行を
SQL Serverでデッドロックの調査で苦労したので調査に使ったSQLなどをまとめておく。 SQL Serverにおいては、ロックの有無を確認するだけならsys.dm_tran_locksシステムビューですぐに確認できる。 しかし、sys.dm_tran_locksだけでは、テーブルロックや行ロックなどの情報がまとめて提供され、ロックされている対象も オブジェクトIDでの表記になるため非常にわかりにくいものになっています。 ですので、単純にSELECTするのではなく、IDからオブジェクト名を取得したり、オブジェクトの種類によって 別のシステムビューから情報を取得する必要があります。 手を加えたSQLが以下のようになります。 SELECT resource_type AS type --オブジェクトの種類 ,resource_associated_entity_id as entity_i
内容が古くなってきたので 接続文字列の書き方をまとめてみる(2014 年版) - しばやん雑記 にて Azure にも対応した 2014 年版を公開しました。 毎回、本番環境にアップする前に迷うのが SQL Server の接続文字列だったりします。 レンタルサーバでは基本的に SQL Server 認証が使われているので書き換える必要があるのですが、Initial Catalog とか Data Source とか意味が分からず、毎回検索してしまうので書き方をまとめておきます。 SQL Server Compact 4.0 <connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(データベースファイル名)" providerName="System.Data.SqlServerCe.4.0" /> </
このセクションのトピックには、SQL Server 2008 のエラー メッセージのテキストが記載されています。トピックの表には、エラー メッセージ番号とその説明 (sys.messages カタログ ビューのエラー メッセージのテキスト) が示されています。
解説 マイクロソフトのデータベース製品「SQL Server」は、Windowsベースの社内システムを中心に広く普及している。またアプリケーションによっては、ログの保存といった用途のために無償のSQL Server Expressエディションが同梱されていて、アプリケーションと一緒にインストールされていることもよくある。 関連リンク: 「隠れSQL Server」、まさかこんな場所に……(@IT Database Expertフォーラム) そのSQL Serverもソフトウエア製品である以上、サポート終了という「寿命」からは逃れられない。特筆すべきは、マイクロソフトによる延長サポートが終了すると、セキュリティパッチの無償提供が停止されることだ。それ以後に発覚した脆弱(ぜいじゃく)性は修正されず、セキュリティ面でひどく脆くなってしまう。 従って、サポートが終了するまでには、SQL Serve
SQL Server で作成するテーブルの各列には、「文字列」「数値」などの型(「データ型」と言います)を指定しなければいけません。今回のエントリではどんなデータ型があるのか、どの型を選ぶべきなのかを考えていきたいと思います。 データ型とは テーブルを作成する時に、まずは列を定義していきました。社員番号を格納する列であるとか、社員名を格納する列、また給料を格納する列など。それに伴って、それぞれの列はどんなデータを格納するのかを決める必要があります。文字列の場合は「varchar」、数値の場合は「int」などを指定するのですが、この「varchar」や「int」のことを型(データ型)と呼びます。 エクセルであれば、とりあえずデータを入力しておいて書式はあとから変更するのも簡単ですが、SQL Server の場合は後からデータ型を変更するのは簡単ではないので、基本的に予め格納するデータ内容に合
※1 SQL Server 2014 に SSMS で接続した場合、GUI では互換性レベル 90 が表示されていますが、選択することができないので、対応しているのは 100 以降となります。 SQL Server では、リストアが可能なバージョンのバックアップをリストアした場合、互換性レベルの確認も行っており、 リストアには対応しているが、互換性レベルが対応していない というリストアを行った場合、対応している最下位の互換性レベルまでバージョンアップされます。 例としては以下のような状況を想像してみてください。 SQL Server 2000 で互換性レベル 65 で使用していたデータベースを SQL Server 2008 R2 にリストア SQL Server 2008 R2 では、SQL Server 2000 のバックアップをリストアすることが可能です。 # このマトリクスは後述し
SQL Serverのみを用いて日付のフォーマットを選んで表示させたい という事があります。 こんな時にはCONVERT関数を利用すれば解決します。 SELECT CONVERT(VARCHAR,GETDATE(),111) AS [/区切り] , CONVERT(VARCHAR,GETDATE(),120) AS [-区切り] , CONVERT(VARCHAR,GETDATE(),112) AS [YYYYMMDD形式] それぞれ表示は以下のようになります CONVERT(VARCHAR,GETDATE(),111) ⇒ 2007/08/01 CONVERT(VARCHAR,GETDATE(),120) ⇒ 2007-08-01 22:55:56 CONVERT(VARCHAR,GETDATE(),112) ⇒ 20070801 また3桁の部分の頭の1を取ると以下のようになります C
異なる SQL Server 間で、同じ SID を持った SQL Server 認証用ログインアカウントを作成するには、サポート技術情報(KB)の 918992 で提供される「sp_help_revlogin」ストアドプロシージャを使用します。 SQL Server 2005 のインスタンス間でログインおよびパスワードを転送する方法 http://support.microsoft.com/kb/918992/ja この KB は、SQL Server 2005 用ですが、SQL Server 2008 でも同じように利用できます。同じ SID のログイン アカウントを作成することで不明なデータベース ユーザー(孤立ユーザー)を発生することを回避できます。 SQL Server 2000 の場合は、KB 246133 で提供されるスクリプトを利用します。 SQL Server のインスタ
In Visual Studio 2022 17.10 Preview 2, we’ve introduced some UX updates and usability improvements to the Connection Manager. With these updates we provide a more seamless experience when connecting to remote systems and/or debugging failed connections. Please install the latest Preview to try it out. Read on to learn what the Connection ...
導入テストやトラブル対応のとき、データを一時的に残しておきたいことがあります。分かりづらいの簡単に説明すると、新しいテーブルを作成してSELECT分の結果を保存するSQLです。知っていると凄い便利です。このSQLはデータベースによって文法が違うので紛らわしいのが短所です。 各種データベースのデータ保存方法 tbl_a:新しく作成してデータを保存するテーブル名 tbl_b:コピー元のテーブル。※結合してても問題ない。何でもOK。 Oracle CREATE TABLE tbl_a AS SELECT * FROM tbl_b SQLServer SELECT * INTO tbl_a FROM tbl_b Postgres SELECT * INTO tbl_a FROM tbl_b SQLServerと同じですね。 MySQL CREATE TABLE tbl_a (SELECT *
SQL Serverに1億件を超える大量のテストデータを作成する必要がありできるだけ高速な方法を調べてみた。 ストプロを試してみる まずはストプロを作成してどの程度になる確認してみる。単純にループを回してINSERTを1件づつ行う方法でまずは100万件で試してみる。 ALTER PROCEDURE dbo.CreateData AS SET NOCOUNT ON DECLARE @RowCount INT SET @RowCount = 0 WHILE @RowCount < 1000000 BEGIN INSERT INTO TestTable VALUES (@RowCount, 'DATA' + right('0000000000' + convert(varchar, @RowCount), 10)) SET @RowCount = @RowCount + 1 END RETURN
SQLサーバーで、文字列を指定Byte数で抜き出す ---- print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 1)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 2)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 3)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 4)) + ']' print '[' + convert(varchar, substring(convert(text,
最近、仕事でかなり久しぶりにSQLServerを使いました。 しかも「2005」。 その時に気付いたことをまとめておこうと思います。 照合順序について 文字データの文字列の並べ替え方法および比較方法に関する規則を指定する。 サーバー、データベース、列、式、識別子の各レベルで設定が出来るが、最低でもデータベースレベルで行うべきだと思う。 SQLServerインストール時の「照合順序の設定」を変更しないと、サーバーレベルで「Japanese_CI_AS」という状態になる。 以降作成するデータベースには、このサーバーの照合順序が適応される。 □Japanese_CI_AS ・大文字と小文字の区別・・・しない ・かな(ひらがなとカタカナ)の区別・・・しない ・アクセント(濁音、半濁音と清音)の区別・・・する ・文字幅(全角と半角)の区別・・・しない 極端な例で言うと、「あ」と「ア」(半角)、「A」
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く