misc.log

日常茶飯事とお仕事と

DB

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用。では、以下の疑問はどう解決す…

SQLの入門本

SQLの入門本といっても、自分自身、きっちり勉強したことないし、正直情報系の学校は出ましたが、学校じゃSQLの「S」の字すら学んでません。じゃ、どこで勉強したかというと、現場でした。そんな自分なので「良い本を」とか言われてもわかんないのですが、ち…

ORA-12542 TNSアドレスがすでに使用中です

現場でこのようなエラーが。どうやら、サーバーが使えるポートを使い果たしたことが原因のよう。ポートは一度利用されると、一定時間再利用できないらしいです(デフォルトは4分)。で、接続と切断を繰り返すようなツールなどが動いた場合に、ポートを使い果…

Oracle 11gと10gと発行者ポリシー

Oracle 10g対応のODP.NET(Version 2.102.5.0)などを使っている環境のODP.NETその他を、いきなり11gのものに入れ替えて動くだろうか、という話が職場で起きている。実際に動いたという話も出ているので(試した人がいる)、発行者ポリシーによってバージョ…

Excel VBAの文字列操作関数がコンパイルエラー?

客先の環境でテストをしている同僚より、自社では動いたExcel VBAの命令がコンパイルエラーで動かないとの連絡が。問題の関数はTrim(文字列の空白削除)。VBAはVisual Basic 6.0に似た言語であることから、VB6.0のランタイムなど、何か必要なモノが入ってい…

ExcelからOracleにVBA経由でアクセスするときの……

VBA経由でOracleを操作するときのライブラリを調べるのに、とりあえず10.2.0.5のOracle Client全部入り環境に何が入っているかを見てみた。可能であれば、最小構成のOracle Clientしか入っていない環境で動かしたいのだけど……たぶん使ってるのはこのOracle P…

Oracle CHAR型のサイズ指定方法

Oracleの固定長文字列型「CHAR」ですが、サイズ指定にはバイトと文字数の両方が使えるんですね。しらんかった。テーブルの宣言時に、サイズ値の後ろに「BYTE」とつけるか「CHAR」とつけるかの違いだそうです。 詳しくはここで説明してくれてますね。 Differe…

OracleのCHAR型(固定長文字列)とADO経由での検索

OracleでCHAR定義されたカラムの情報を、ADO経由で検索した際にうまく結果が返らないという相談を受けたのですが……。たしかOracleのCHAR型って、勝手に後ろに空白が入って固定長フルサイズまでパディングされたような。そうすると、厳密な一致という条件で検…

ODP.NETのバージョンでトラブル

以前、アセンブリバージョンリダイレクトについて書きました。これを使った環境で、なんかエラーが(笑)。 やりたかったことは ODP.NET 2.102.5.0で作成したプログラムを、ODP.NET 2.102.4.0だけが入った環境で動かしたい ということでした。通常、古いバー…

ODP.NETとアセンブリバージョンリダイレクト

新バージョンのODP.NETを参照してビルドしたものを、旧バージョンのODP.NETが入った環境で稼働させる必要が出てきました。方法について調べていたところ、同僚からこのサイトを紹介されました。 バージョンリダイレクト/株式会社ミークス http://www.meeks.j…

Windows 7 32bit版にOracle 10g Clientをインストールしようとして…

行き詰まりました。環境移行開発の準備として、Windows 7 の32bit版(MSDNライセンスで入手しているのでエディションはUltimate)に対して、Oracle 10g 10.2.0.4のクライアントを入れようとしたのですが、以下のようなエラーがでてインストールが進みません…

64bit環境へのODP.NETインストールとアプリの配布

お仕事で64bit環境と32bit環境が混在する環境への配布を行う必要があるのですが、その辺りについての「どうすべきか」がよく分からないので調べています。 64bit環境にODP.NET 64bit版をインストールしてみる 64bit環境であるWindows Server 2008 R2に、ODP.…