読者です 読者をやめる 読者になる 読者になる

misc.log

日常茶飯事とお仕事と

SQL ServerのSQL整形アドイン(これはいい!)

SQL Server Management StudioでのSQL作成時に、SQL文を整形してくれるツールが無いかと思い探したところ、Poor Man's T-SQL Formatterというアドインが紹介されているのを見つけました。SQL Server Management Studio で SQLを一発整形 – gomokulog作成元の…

ODP.NETのDLL名、変わっていたのね

久々にWindows Formsのアプリをいじることになって、客先からソースをもらって改修作業を……と思ったら、開発環境やら手順やらが全くなくて四苦八苦。その中で、Oracle接続に使っているライブラリが「Oracle.ManagedDataAccess」ってなっていたのでなんだろう…

SSISでパッケージファイルのパスワードが開けない、設定ファイルもうまくいかない…(調査中メモ)

Microsoft Visual Studio 2013 ShellのSQL Server Integration Services(SSIS)デザイナーでSSISの処理定義を作成し、ビルドしてできた拡張子dtsxのファイルをDBサーバー上で動かそうとしているのですが、うまく行きません。特に何も設定無しで作成し、デー…

SQL Server、OpenQueryでのSQLは文字列連結などが使えない?

SQL ServerからOracleにリンクテーブル経由でアクセスしていろいろデータを持ってくる処理を作成中。サーバー名やらスキーマ名やらをピリオドでつないだSQL記法だとインデックスが使えず遅いため、SQL ServerのOpenQuery命令でSQLごとOracleに渡し、Oracle側…

Oracle、to_charで'00000000'に変換したあとのsubstrで桁がおかしい?

Oracleのシステムで、「20160825」のようにnumber型で年月日情報持っているというテーブルがあり、これを別RDBに移植するという作業をやってます。で、このデータを扱う処理では下記のようなto_char処理で年月日を「2016/08/25」に変換していました(下記サ…

ASP.NET/ADO.NETからの実行だと遅いストアドプロシージャ問題、とりあえず解決にめど

昨日書いたこれ……backyard.hatenablog.comSQL Server Management Studioから実行すると1~2秒で結果を返すストアドプロシージャが、なぜかASP.NETのWebアプリから実行すると4分~5分もかかるという問題。とりあえず速度差が無くなったので報告。 対応案 Stac…

SQL Server、ストアドプロシージャ実行計画のキャッシュを確認する(メモ)

メモです。忘れないように。 SQLサンプル SQL Serverのストアドプロシージャ、実行計画のキャッシュ情報を調べるSQL例。 select * from sys.dm_exec_procedure_stats where object_id='2049442375' order by last_execution_time desc select * from sys.dm_…

Webアプリから実行すると遅いSPが、SSMSからだと速い

※一応解決。最新情報は → http://backyard.hatenablog.com/entry/20160810/1470796194 ちょっとメモ。とあるストアドプロシージャが、Webアプリ(ASP.NET、ADO.NET経由)で実行するとタイムアウトしたりしなかったりなのですが、SSMS(SQL Server Management…

自動生成されたユニークキーをSQL Serverで扱う場合の注意

何かのシステムが吐き出したキー文字列をSQL Server上でキーとして利用する場合、照合順序に気をつけましょう。特にアルファベットを多用したキーの場合、キー重複でやられる可能性があります。SQL Serverで日本語を扱うDBを作った場合、たいていテーブルや…

PostgreSQLの日付型について備忘録

仕事で調べたことをメモしておきます。 年月日時刻を保存する場合につかうtimestamp型ですが、(A) with time zone (B) without time zoneの2通りがあります。 timestamp with time zone DB内ではUTC(協定世界時)で保存。 呼び出しや書き込みの際は処理するク…

SQL Serverの照合順序、略号の意味

SQL Serverの照合順序設定についている「CI_AS」とかって「Case Insensitive」「Accent Sensitive」の略だったのですね……気になるようできちんと調べたことがありませんでした。納得です。こちらのブログで説明されていて知りました。 SQL Server 照合順序の…

文字コード関連の過去エントリー

なんか自分よりずっと前からウェブ関連やってる人たちが全然文字コードとか気にしてなくてノウハウも持ってなくてちょっと参ってるので、とりあえず過去に自分が書いたものを列挙しておきます。何か聞かれたときにさっと調べられるように。 文字コード全般 b…

PostgreSQLのデータベース容量を調べる

お仕事でちょっと調べることになったのでSQLを貼っとく。 select datname, pg_size_pretty(pg_database_size(datname)) from pg_database order by pg_database_size(datname) desc; とりあえずこれでとれるはず。

SQL Server のText型に対するInsertに関する制約は?

お仕事メモ。SQL Server 2012上に用意したテーブルのText型カラムに、長い文字列を突っ込もうとしたところ「入らない」という事態が発生。書き込み処理はLinux上で稼働するPHPから。疑うべきポイントはドライバやSQL Serverの設定やらいろいろありそうなので…

SQL ServerからImage列の内容をファイルとして出力する

SQL ServerのImage型にバイナリデータが突っ込まれている場合、それの内容を見たいと思っても出す方法が見当たりません。先日、そういうデータの取り出し作業があった際はVB.NETでツールを作ったのですが、どうやらSQLからbcpコマンドを無理やり実行する方法…

DTSの定義情報をVisual Studio 2008で確認する(断念…)

結論からいうと、自分の作業環境ではできませんでした。念のため試したことを記載しておきます。参考まで。古いシステムの刷新プロジェクトで、SQL ServerのDTS(Data Transformation Services)が利用されていたので、その内容を見たいのですが…。手元にあ…

PowerCenterのバルク転送モードはSQL*Loaderを使う?

PowerCenterでOracleを転送先にしたデータ転送を行おうとした際に、「索引が定義されています」というエラーメッセージが出てデータ転送に失敗するという現象が発生。調べてもらったところ、データ転送時の設定で「バルク(bulk)」が指定されているとこの現…

SQL ServerからExcelにエクスポートすると先頭空白のデータから空白が消える?

現象等厳密に把握できていないので、とりあえずメモ書き。SQL Server 2012のManagement Studioから、エクスポート機能でテーブルの内容をExcel 2007形式にエクスポートしたところ、先頭が半角空白のデータから先頭空白が消えるという現象がでてしまいました…

PostgreSQLのバージョン情報を確認する

いつも微妙に忘れてて調べなおすのでメモしておきます。すでに動いているPostgreSQLのバージョン確認ですが、下記のSQLを実行すれば取得できます。 select version()これでとれる情報はこんな感じ。 PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled…

CodeIgniterのDB処理でLike検索を行った場合のバグ?

※CodeIgniter 2.1.4での話です(←今現場で使っているのがこれなので…)PHPの開発フレームワークであるCodeIgniterで、Like文を使った検索処理を行った際に内部で生成されるSQLがおかしくなるケースがあることがわかりました。とりあえず忘れないようにメモ。…

だれだよvarcharで宣言したのは。ユニコード文字がDBに入らない

SQL Serverを使った古いシステムの移植作業でDBの定義はそのまま使いまわすということで作業を進めていたのですが、なぜか投入した文字データが化ける。よくよく見てみると型宣言がvarcharになっていました。これですが、SQL Serverだと varchar : 可変長文…

DataTable.Mergeでエラーが出る

CSVで一覧表を出力するASP.NETのアプリで、ちょっと見出しの名前を変えたらエラーが出てしまってしばらく悩みました。 制約を有効にできませんでした。行に入力できるのは、Null 以外の値、一意な値、 あるいは外部キーですが、この制約の違反が 1 つ以上の…

PostgreSQLでの文字列検索に関するメモ

PostgreSQLで、複数テーブル、列にまたがる複数キーワードによる部分一致検索を行う必要があり、ちょっと調べもの。対象は数文字の項目から1000文字を超える長文までさまざまという条件であるため、正直、「速い検索」が実現できるかどうか不安。関連する情…

SQL Serverのストアドファンクションで引数を省略する……使いづらい(笑

SQL Serverのストアドプロシージャでは、引数宣言の際にデフォルト値を設定することで引数の省略が可能になります。たとえばこんな感じ。 @KEYVALUE int, @OPTIONVALUE int = 1 ストアドファンクションも同じように宣言できるのですが、省略宣言した場合でも…

SQL Serverのインデックスサイズは1件900バイトまで

とある設計資料で、巨大な可変長文字列「だけ」のテーブルで、その列が主キー設定されていました。主キーということはインデックスが作成され、インデックス自体にはその内容が転記されるかな?と思ったため、「これはインデックスサイズでかすぎてアウトだ…

PostgreSQLのbytea列にバイナリデータを突っ込む

結論。HEX化したデータをファイルとして取り込もうとしてもうまくいきません。権限が足りませんでした(そして権限を増やせる環境ではないので却下)。どうしたかというと、 事前にText型だけを持つ一時テーブルを用意する。 Vimのxxdコマンドを使ってHEX化…

PostgreSQLのtimestamp型、timezone有無はどう関係する?

PostgreSQLで年月日時刻を扱うにはtimestamp型を使うようですが、これには timestamp with timezone(timestamptzと略記される) timestamp without timezone の2通りがあります。どちらを使うべきなんでしょうか? 試してみる こんな感じでテーブルを作って…

SQL Server→PostgreSQLのテーブル変換

お仕事で、SQL ServerからPostgreSQLへのDB移設を行う必要が出てきたので、具体的な方法等について確認中。とりあえず、公式コミュニティで関連資料やツールをまとめられていたのでそこを参考にしています。 下記リンクに各種DBとの変換に関する情報がまとめ…

Windows Server 2008 R2上のPHPからSQL Server 2000に接続する

7月に、Windows Server 2008 R2上で動くPHPで作ったアプリから、SQL Server 2000にアクセスできるか?というのを試していたのですが、試行の過程を記録していませんでした。簡単ですがメモっておきます。多分あとで自分が使うので。発端については7月15日に…

PHPからSQL Server 2000へ接続する

表題の通り、PHPからSQL Server 2000に接続するシステムの実現性についてちょいと調べないといけないのでメモしておきます。今更SQL Server 2000かと思われるかもしれませんが、実際にはまだ稼働しているものはいっぱいあるんじゃないでしょうか。というわけ…

SQL Serverをメンテする作業でAccessを使わない理由

仕事でSQL Serverのデータを確認したり、変更したりすることがあるのですが、この作業にAccessを使う人が結構多くて困っています。いや、できる、できないでいうとAccessで作業はできますし、便利なのもわかるのですが、厳密な調査や確認作業では使いづらい…

SQL Serverのサーバー間ストアドプロシージャ差異調査

ストアドプロシージャを使った開発で、ストアドプロシージャのソース管理や変更管理がうまくいってません。設計資料にも記載が無かったり、そもそもストアドプロシージャでやってるのか.NETでやってるのかも資料上明確でないという状況。というわけで、結構…

Time Based SQL Injection、面白いですね

何に情報を持たせられるか、という観点で考えていくと、データを伝える方法は画面出力だけではないんですよね。 Time-based SQL Injectionは意外に実用的だった/徳丸浩の日記 http://blog.tokumaru.org/2015/04/time-based-sql-injection.html 条件に一致す…

ActiveX Data Object 2.8と6.1はどっちが古いの?

よくわからんです。Excel VBAでDBアクセス処理の試作を行う必要があり、簡単なDBアクセス処理を書いているんですが、参照させるライブラリが分かりません。下記のどれが最新なんだろう? Microsoft ActiveX Data Objects 6.1 Library (msado15.dll) Microsof…

SQL Serverのバージョンを調べる

既に稼働しているSQL ServerのバージョンをSQLで調べる方法のメモ。以下のSQLを実行すれば結果が出ます。 SELECT @@VERSION 結果はこんな感じで。よくわかるSQL Server 2012データベース構築・管理入門編 (TECHNICAL MASTER)作者: 長岡秀明出版社/メーカー: …

片方のリストに有って、他方に無いものを探すSQL

システム開発後のデータ整合性調査や不具合調査などの中で、二つのテーブルにあるIDなどを比較、片方にしかないもの(いわゆる差異、差分)を探すという場面があったりします。こういう時、意外にみんな必死にExcelに貼り付けて比較式を書いたり、Accessに取…

PostgreSQLのシステム情報取得関数群

PostgreSQLで、接続してきたクライアントのIPアドレスなどを取得したかったので、システム情報取得関数について調べました。下記のリンクから公式情報に飛べます。 PostgreSQL 9.2.4/9.25. システム情報関数 http://www.postgresql.jp/document/9.2/html/fun…

PostgreSQLでデータ更新日情報を自動設定する

データベースに対するデータ操作の際に、データ更新日時、追加日時を設定するというタイプのデータベースはシステム開発で良く作られるかと思います。この日時情報の設定処理というのが、意外にあちこちの処理で発生して同じことを何度も書く必要があり、煩…

PHPの開発環境を揃えてみる(3) PostgreSQL導入

さて、PHPの開発環境を揃えてみる(2) Apache導入(http://backyard.hatenablog.com/entry/20140511/1399782368)の続き。データベースも用意してみましょう。 ダウンロード 今回使うのはPostgreSQL。最新バージョンは9.3.4のようです。こちらをダウンロー…

log4netでSQL Serverにログを書く

log4netのAdoNetAppenderを使って、初めてSQL Serverにログを書き出してみました。SQL Serverへのログ出力は、 設定情報に接続情報を記載する。 ログテーブルにあわせたInsert文を記載する。可変項目(要するに各カラム、フィールド)の内容は、@で始まるパ…

ストアドプロシージャ、習得に向けた入り口まとめ

かれこれ15年以上逃げ続けてきたストアドプロシージャをはじめとした「データベースに直接触れる系の開発」、逃げ場が無くなってきたので対峙することにします(←そんなことないだろ?と言われがちですが、はい、データベースとSQL、苦手なんです。ついでに…

ロードされているODP.NETライブラリのバージョンを調べる

昨年だったかに、ちょっと複雑なデプロイ環境を作る必要があり、その環境で実際に使われているODP.NET(Oracle Data Provider for .NET)のバージョンを調べなければならなかったので作ったコード。どこかで使いそうなので貼っておきます。 'Oracle.DataAcce…

SQL Serverで検索結果に通し番号を打つ

ちょっと調べることがあったので。SQL Serverで、Select文による検索の結果にあらかじめ通し番号を打っておきたかったので調べてみました。TestTableというテーブルにTestFieldという列があり、その列の内容順で通し番号を打つ場合 select ROW_NUMBER() OVER…

SQL Server Managerment StudioでIntellisenseが効かない場合

SQL Server 2008のSSMS(SQL Server Management Studio)で、SQL文を書いている際に次の入力候補を表示してくれるIntellisense(インテリセンス)機能が効かない場合、インテリセンスのローカルキャッシュを削除することで解決するみたいです。こちらのブロ…

SJIS設定のOracle DBにいろいろ文字を突っ込んだ時の記録

文字コードがらみの調べ物をしていたときのメモを転記しておきます。Oracle 10gをキャラクタセット「JA16SJISTILDE」で設定し、そこにVB.NETから変な文字(笑)を突っ込んだ時に文字がどう化けるかの実験結果です。全角やら半角やらって用語についてはとりあ…

SQL Server Management Studioでの自動コミットをオフにする

とりあえずのメモ。 [ツール]-[オプション]→「クエリ実行」→「SQL Server」→「ANSI」の設定画面を開く。 「SET IMPLICIT_TRANSACTIONS」(暗黙的なトランザクション)をONにする。 こんだけのようです。暗黙的なトランザクションをON、ということで、何も宣…

SQL Server 2012につながる以前につながらねぇ

さてと、お試し用に導入したWindows Server 2012にSQL Server 2012を入れて、簡単なテーブルとデータも作成したので、Webだなんだのアプリからつなぐ練習をするまえに「まずは外から見えてるよね?」という確認を。Windows ServerはVMware Workstation 9.0で…

SQL Serverでの「オートナンバー」型

すっかり忘れてる。っていうか以前からそうだったっけ?SQL Serverで通し番号のような、特に人間が指定しなくても勝手に決めてもらって構わない番号などを生成するデータ型が何だったか思い出せず、調べてしまいました。「Identity列」として対象の列を指定…

Oracle DBのNumber型をSingleで受けたら誤差った

絶対忘れてたぶん次も調べるだろうからメモっておきます。やったのは私ではないのですが、相談を受けてちょいと調べました。 環境 .NET Framework 3.5 + C# Oracle Database(バージョン不明) 起きたこと Oracle DatabaseのNumber型(少数含む)をDatasetで…

ODP.NETと.NET Framework 4.0

.NET Framework 4.0に対応したODP.NET(Oracle Data Provider for .NET)は、Oracle 11g対応のODP以降しか無いのですね。10g用として公開されているODP.NET(ODAC 10.2.0.2.21 に含まれるもの)は、.NET Framework 1.1と2.0用。では、以下の疑問はどう解決す…