SQL Server ユーザーテーブル全部 drop 雑クエリ

メモ:全 Temporal Table を無効化するクエリ - お だ のスペース をテーブル削除まで含めてスキーマ対応したやつ。 依存関係無視してるので、全部 drop されるまで連打してください。 ※段々消えてって最終的に全部 drop される is_ms_shipped = 0 の条件入…

meetup app osaka@8 で SQL Server 2022 の話しました。 #meetupapp

01/20(土) meetup app osaka@8 で SQL Server 2022 の話しをちょっとします。 #meetupapp - お だ のスペース 結構便利になってます! スライドは大したこと書いてないので、デモだけ載せときます。 select ... windows 句 window 関数 楽に書けるよ over 句…

01/20(土) meetup app osaka@8 で SQL Server 2022 の話しをちょっとします。 #meetupapp

久々投稿ですが、今週の土曜 01/20 に、 meetup app osaka@8 - connpass で、SQL Server 2022 のお話しをちょっとします。 2022 が出て1年経ってるので、使ってる人も出てきてるのかなーとなので、 SQL 書く人のために、 SQL Server 2022 の新機能 - SQL Ser…

SQL Server Row Goal の話し

2023/03/03 にあるはずの meetup app osaka@7 のネタ。 色々賢くなってるようなので、ちょっと確認。 データは、Release AdventureWorks sample databases · microsoft/sql-server-samples · GitHub の AdventureWorksDW2019 使ってます。 SQL Server のバー…

メモ:全DB、全ユーザーテーブルに対しての雑な sp_spaceused もどき

SQL Server で、クエリ1発だけで全てのデータベースの全てのユーザーテーブル に sp_spaceused の結果が欲しい + 取得日時とかDB名も欲しいなーなんて時のメモ。 雑なので、色々端折ってます。 ちゃんとしたの欲しい人は、クエリ1発諦めてカーソル + 動的SQL…

Microsoft MVP じゃなくなりました

最近何もしてないのでまあそうだろうなぁと。 オンラインはあんまりやる気が出ないので、 オフラインでイベント開催しても良いかなーと思えるようになったら、 SQL World はぼちぼちやりたいなーとは思ってます。

メモ:ある列の値が上限を超えたら新しい行に分割するクエリ

SQL Server でのメモ id qty 1 47 2 14 3 112 を id qty 1 25 1 22 2 14 3 25 3 25 3 25 3 25 3 12 としたい。 サンプルのクエリはテーブル作るのメンドイので、テーブル値コンストラクターで。 テーブル値コンストラクター (Transact-SQL) - SQL Server | M…

SQL Server 実行プランのスキーマを見比べてみる (2017 - 2019)

実行プランのスキーマを見る機会があったので、久々に blog を…。 ここから xsd をダウンロードできます。 Showplan Schema 単純に diff を取ると、2019 では、PDW や Spill、UDF、Page Server 等の情報が詳しく取れるようになってました。 サクッと検証出来…

メモ:DacFx の .NET 6 対応版が出てた

去年は preview じゃないとダメだったけど、 メモ:DacFx を .NET 6 で使用しようとすると、未だ preview 使わないとダメ - お だ のスペース いつのまにか正式版出てた。 www.nuget.org

型を合わせとくとデータが多くなっても安心

この記事は meetup app osaka@6 - connpass の参加記事です。 試した環境:SQL Server 2019 15.0.2080.9 型を合わせてないと、起きる問題の1パターンを紹介します。 今回は、文字列型の char, varchar / nchar, nvarchar 間の話しです。 比較用のテーブルと…

メモ:not in と not exists は等価じゃない

どっかで書いた気もするけど、null が混じったときに結果が違うよと。 select * from (values (1), (2), (3)) as a(id) where a.id not in (select * from (values (null), (2)) as b(id)) 結果無し select * from (values (1), (2), (3)) as a(id) where no…

メモ:互換性レベルは下位バージョンの動作検証には良くない

実働環境が古い SQL Server で手元には新しいのしかない時に、互換性レベル下げたらエラーになってくれるかなー?と思ってやってみたけどダメだった。 ALTER DATABASE 互換性レベル (Transact-SQL) - SQL Server | Microsoft Docs 互換性を 2014相当にしてる…

メモ:DacFx を .NET 6 で使用しようとすると、未だ preview 使わないとダメ

DacFx doesn't work on .NET 6 · Issue #33 · microsoft/DacFx · GitHub NuGet Gallery | Microsoft.SqlServer.DacFx 160.5323.3-preview より上のバージョン使ったらセーフ。

メモ:SELECT - INTO の指定先のテーブルの存在チェックはコンパイル時

1個のクエリ内で drop create で一時テーブル使い回ししたいなーと書いてたらエラーになったのでメモ。 こういうのがエラーになってクエリ自体実行されない。 drop table if exists #temptable select [Name] into #temptable from sys.tables select * from…

メモ:Oracle Cloud の DB に Azure Web Apps から接続する

メモ:App Service Plan は Basic 以上じゃないとダメだって。 https://blogs.oracle.com/database/post/connecting-azure-web-apps-to-oracle-autonomous-database

メモ:SqlDataReader.GetColumnSchema は データ読まないので明らかに暗黙の型変換でエラーが出る場合でもセーフ

タイトル長い… まあ当然といえば当然なんですが、明らかにダメなやつでも通るとちょっとびっくりする。。 例:文字型の列に 日付型のパラメータ渡す。 using Microsoft.Data.SqlClient; using System; namespace ConsoleApp1 { class Program { static void …

メモ:T-SQL ある範囲内での 小さい順に空き番を見つける

決められた範囲があって、その中で空いている最小の番号を取得するってクエリ。 例:40000~4000000 までの間で未使用の番号を少ない順に10個とる。 範囲用の表を作って存在しないデータ取得 with [範囲] as ( select cast(40000 as bigint) as [番号] union…

メモ:Google.OrTools

NuGet Gallery | Google.OrTools 9.0.9048 About OR-Tools | Google Developers Vehicle Routing | OR-Tools | Google Developers

Internal retry logic providers in SqlClient の動作確認

SqlClient の内部再試行ロジック プロバイダー - ADO.NET Provider for SQL Server | Microsoft Docs を試したのでログ貼っとく。 環境は .NET 5.0 Microsoft.Data.SqlClient 3.0.0 SqlClient での構成可能な再試行ロジック構成ファイル - ADO.NET Provider …

メモ:Azure SDK .NET スレッドセーフ

.NET Azure SDK Design Guidelines | Azure SDKs ✅ DO be thread-safe. All public members of the client type must be safe to call from multiple threads concurrently. Azure SDK for .NET でのスレッド セーフ | Microsoft Docs

xUnit.NET の パラレルテスト と SQL Server (Local DB) で bacpac から import のメモ

上手くいくかは未検証! データは、if exists drop database + import bacpac で考える。 ※楽だから Local DB 前提で書いたけど、Local DB じゃなくても問題無さそう。 テスト側ではトランザクション制御出来ない前提。 Web App とかで HTTP 跨ぐようなイメ…

メモ:TransactionScope の既定の分離レベルは Serializable

公式の ドキュメント を探す機会があったのでメモ。 トランザクション スコープを使用した暗黙的なトランザクションの実装 | Microsoft Docs TransactionScope 分離レベルの設定の箇所 から抜粋 既定では、トランザクションは Serializable に設定された分離…

.NET Core で SqlConnection の ConnectTimeout が 15未満に設定しても無視されてそう。

.NET Framework と .NET Core で動作が違う。 SQL Server 2019 Developer Edition (サービスは止めとく) .NET Core 5 / 3.1、.NET Framework 4.8 Microsoft.Data.SqlClient 3.0.0 なんか、.NET Core だと、既定値の 15 未満に設定しても、既定値の 15 で動い…

SqlParameter で ~char(max) の時の Size は -1

size は -1 を渡す。 公式ドキュメントが中々見つからないのが難点…。 大きい値 (max) データの変更 - ADO.NET | Microsoft Docs から抜粋 CREATE PROCEDURE GetDocumentSummary ( @DocumentID int, @DocumentSummary nvarchar(MAX) OUTPUT ) AS SET NOCOUNT…

メモ:T-SQL の TRIM を使って、前後の括弧とか囲ってる文字を取り除く

2017 から SQL Server にも TRIM (Transact-SQL) - SQL Server | Microsoft Docs が追加されてます。 それまでは、LTRIM (Transact-SQL) - SQL Server | Microsoft Docs、RTRIM (Transact-SQL) - SQL Server | Microsoft Docs を組み合わせるという面倒な事…

メモ:EF (Core) で IDbContextTransaction の Rollback は要る?

entity framework - DbContextTransaction Rollback - Stack Overflow ちゃんと Dispose してたら SQL Server 相手にしてる分には無くても良さげ。 他の DB は実装次第なんでちゃんとやった方が良いけど、ちゃんとやるのめんどくさい。。*1 *1:TransactionSc…

メモ:Application Insights で SQL Server のクエリを勝手に取る設定が変わってた

知らんうちに変わってた。 Azure Application Insights における依存関係の追跡 - Azure Monitor | Microsoft Docs SQL 呼び出しの場合、サーバーとデータベースの名前が常に収集され、収集された DependencyTelemetry の名前として保存されます。 "データ" …

再帰クエリで循環参照した時にどうなるのか?(SQL Server, PostgreSQL)

PostgreSQL で循環参照したらどうなるん?って聞かれたので。 PostgreSQL with recursive d as ( select 1 as id, 4 as parentid union select 2 as id, 1 as parentid union select 3 as id, 2 as parentid union select 4 as id, 3 as parentid ), cte as …

メモ:Azure Cognitive Search デフォルトのアナライザー の ストップワード(1文字限定) を調べる

カスタムアナライザー使うのに ja.microsoft がどんなストップワード設定してるか確認用。 ※複数文字は日本語なので取り合えずいいや。 雑いけど、ひらがな1文字ずつに分かれるテキスト渡して消えたやつがストップワードだ!って感じで。 テキストの分析 (Az…

2/5(金) devblogラジオ vol.9 で DB の雑談します

明日ですが、 devblogラジオ vol.9 - connpass に参加します。 ムッシュ と 兄貴 とお話しするの久々なのでめっちゃ楽しみ! 夜ですけどお時間あるかたは是非ご参加を~。