misc.log

日常茶飯事とお仕事と

DB

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化…

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://www.backyrd.net/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文による検索の結果にあらかじめ通し番号を打っておきたかったので調べてみました(2018年11月27日追記:相関サブクエリーと型付きデータセットでの自動通番機能による方法)。以下、TestTableというテ…

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 Management Studio(SSMS)でSQL文を実行した場合、初期状態だと処理完了と同時に自動的にコミット(オートコミット)されてしまいます。SELECT文などだといいのですが、乱雑にUpdateやDeleteが書き連ねられた状態でうかつにF…

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分)。で、接続と切断を繰り返すようなツールなどが動いた場合に、ポートを使い果…