2012/05/24

SQLServerのすごいやつ2

本日教えてもらった便利なやつは以下の通り!

・sys.database_filesテーブル
これをみると、データベースの物理ファイルに関する情報がわかる!

・dbcc shrinkfile (データベース物理ファイル名, 0)
物理ファイルの圧縮を行う。

また、物理ファイルの圧縮を行う際に、データベースの「復旧モデル」によって圧縮具合が違う。
「完全」の場合、バックアップがなされていないと、DB物理ファイルに持ち続けるため容量が減らない。
 「単純」とかにしていると、一発で大分へるっぽい。

いつもこれで困るから、覚えておこうと思う。

2012/05/12

SQLServerのすごいやつ(隠しストアド編)

職場のDBマスターに教えてもらったSQLServerの隠しストアド

exec sp_MSforeachtable @command1 = "select '?'"

ヘルプに乗ってないやつらしく、かつ便利なやつなので覚えとくといいよ、とアドバイスいただいた。

 何ができるかというと。。。

sp_MSForeachtableで返されるのが、「スキーマ.テーブル名」の一覧

使い方としては、@command1で指定した文内の「?」に上記の「スキーマ.テーブル名」がはめ込まれる。

だから、全テーブルに一括でSQL文をブン投げたい場合に便利 らしい!!

たとえば、これ

CREATE TABLE #temp (
TABLE_NAME sysname,
rows sysname,
reserved sysname,
data varchar(32),
index_size varchar(254),
unused varchar(100)
)

 INSERT INTO #temp EXEC sp_MSforeachtable @command1 = "sp_spaceused '?'"

SELECT * FROM #temp order by table_name

sp_spaceusedで引数に渡したテーブルの使用容量をとれるストアドだが、
これに、sp_MSforeachtableを挟むと、各テーブルのテーブル使用容量を取り出せる。

SQL文がsp_MSforeachtableで取得したテーブル分繰り返されるので、いったん仮想テーブルに詰めて抽出すると、実行したDBのすべてのテーブルの使用容量一覧が取得できる。

べんりー!

2012/04/30

Azureってなんじゃらほい

仕事でAzureを使わないかという話が出た。

何の事だかワケワカメなので、調べようと思ったのでメモをしておく。

2012/04/05

Javaのフォームデザイナ

JavaでSwingを使ったプログラムをちょいちょいいじっているのだが、
フォームを作るのがかなりしんどい。

なぜって、それは。
Visual Studio病だから。

そんなわけで、視覚的にコントロールの配置ができるプラグインを探し回った。

Visual Swing for Eclipse

オープンソースでリンクが切れていない かつ Eclipse1.6での動作確認済み!
NetBeansのデザイナーに似ている。
XMLとか作ってバインドバインドじゃない感じ。
GUIでコントロールを配置すると、クラス内にメソッドを自動生成する。

まぁ、現状、これが一番あってるなぁ。



なぜか、Javaのデザイナ関係はすたれるのが早く(?)、リンク切れだの最近のじゃ動かんだのが多い。
きっとJavaでのデスクトップアプリケーションがまったくはやってないことが原因なんだろうなぁ。
Webとか作りにくくって嫌いなんだが。。。

まぁ兎に角。なくなる前に確保しよう。

2012/03/05

sqliteの使い方

macでsqliteを使うための環境やtoolとか。
あと、sqlite特有の使い方を覚え書き!

まずは、ざっとコマンドラインでの使い方

そもそも前提として、sqliteはファイル=データベースとなっている。
で、データベースの作り方は、コマンドから行う。

sqlite3 [データベース名(ファイル名)]

データベース名で指定した名前のファイルがカレントディレクトリに作成される。

あとは、環境を調べるコマンドは以下の通り

.exit
終了コマンド
.quit
終了コマンド
.help
ヘルプを表示
.table
データベースに登録されているテーブルの一覧
.schema ?TABLE?
指定テーブルのCREATE文を表示する
.read FILENAME
指定データベースを読み込む?(試してない(ぇ
ある程度コマンドでの動かし方を覚えておかないと、会社で使うときに困りそうだが、面倒なので、クライアントを探してみた。

Lita – SQLite Administration Tool
日本語に対応していないが、ある程度使えそう。
見た目がmacらしい
Lita – SQLite Administration Tool | David Deraedt

SQLite Database Browser
見た目がかっこわるい。日本語に対応。
SQLite Database Browser を日本語化してみた

とりあえず、このくらいで。

xcodeでsqlite

iPhone開発をせねばならなくなったのでとりあえず備忘録をつけていく

sqliteを使ってDBをアプリに組み込む方法を調べている。

まず、macにsqliteがインストールされていること。
これはxcodeを入れると入っているっぽい?
少なくとも、買ったばっかりのLionにxcodeをインストールした後、コンソールでsqliteを起動できた。
  1. コンソールを起動し、sqliteでデータベースを作る。
  2. 作成したデータベースファイルをxcodeのプロジェクトに追加する
  3. xcodeのプロジェクト画面のsummaryタブ内にあるLinked Frameworks and Librariesで+を押し、libsqlite3.dynlibを追加する
  4. コード上でimportをしてapiからアクセスすればOKなはず(というか、ここまでしかわからない)
さて、実際にコード上でうまく動かすにはどうするか調べよう。。。

追加

コード上で扱う方法

インポートヘッダ
#import "sqlite3.h"

だめだ、いったんこれで止めて、sqliteの使い方で別エントリをたてることにする

2012/02/28

SQLServerでFKの一覧を取得したい

SQLServerでFKの一覧をずばっ!と取得するためには以下のようにINFORMATION_SCHEMAを用いる。

SELECT
    REF.CONSTRAINT_CATALOG AS [DB_NAME]
,    REF.CONSTRAINT_SCHEMA AS [SCHEMA]
,    REF.CONSTRAINT_NAME AS [FK_NAME]
,    COL_FK.TABLE_NAME AS [FK_TABLE_NAME]
,    COL_FK.COLUMN_NAME AS [FK_COLUMN_NAME]
,    COL_PK.TABLE_NAME AS [PK_TABLE_NAME]
,    COL_PK.COLUMN_NAME AS [PK_COLUMN_NAME]
FROM
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS REF
INNER JOIN
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS COL_FK
        ON (REF.CONSTRAINT_NAME = COL_FK.CONSTRAINT_NAME)
INNER JOIN
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS COL_PK
        ON (REF.UNIQUE_CONSTRAINT_NAME = COL_PK.CONSTRAINT_NAME)
ORDER BY
    COL_PK.TABLE_NAME
,    COL_PK.COLUMN_NAME

これで、FKの元と先を合わせて取得できちゃったりする。

べんりべんり

いじょ