T-SQL

2005までは時刻型はやっぱりないらしい

Transact SQL のデータ型には DateTime型 はあるけど、Date型 や Time型 は、やはりないらしい。2008はあるらしいです。 実はこれまで文字列型で代用していましたが、なんかちょっとアレなので、考えを変えて、CHECK制約にしてみようかと画策。"start_at"カ…

データベース一覧を見る

use master select name from sysdatabases go で見ることができます。

結構ショック

書くの忘れてたけど、その程度のものでなく、かなりショックを受けました。 TransactSQLでは、TEXT型のフィールドのイコール比較ができません、ソートができません。そして、主キーにできません…。

特定のデータベースに Windows認証のログインを有効にする

Windows認証のログインで、制限ユーザでもテーブル構造の変更などをしたいと思いました。 まずは、権限はおいといて、Windows認証のログインを使えるようにすること自体に、引っかかりました。sp_addlogin でやっていたのですが、"\"が入っているから使えま…

IIFみたいなものがない

たとえば、Access でなら使えた IIF(入荷数 IS NULL, 0, 入荷数) といったものを書きたい場合には、次のようにします。 CASE WHEN 入荷数 IS NULL THEN 0 ELSE 入荷数 END ENDは忘れてはいけません…。

ビュー一覧、テーブル一覧、システムテーブル一覧の取得

http://d.hatena.ne.jp/yellow_73/20041013 の改定版テーブル一覧を見る場合は、 EXEC sp_tables @table_type="'TABLE'" と書きましたが、引数を VIEW, SYSTEMTABLE にしてやると、それぞれビュー、システムテーブルを見ることができます。

ビューのステートメントを捕まえる

sp_helptext "" で見れるっぽいです。

SQL Server Books Online

ここらへん参照してみる http://kinshachi.ddo.jp/kurage/html/MT/comp/archives/000513.html しかし、VS .Net から MSDN を入れてるので、とりあえず存在しているので、とりあえずいらないっぽい。

ステートメントを捕まえたいけど

sp_helpsql って無いらしいです。代替となる関数を書いてなく、かわりに、SQL Server Books Online を見ろ、とのこと。

テーブル一覧を得る

一般テーブルの一覧を得るために、sp_tables を利用。 EXEC sp_tables @table_type="'TABLE'" (ダブルクォートとシングルクォートの二重引用が必要っぽいです)

ALTER COLUMN で えうえう〜

フィールドの型を変更できるのですが、実数型から文字列型に変更しようとすると、例外が出ました。 T-SQ Lの real型って .net の Double型でなく Single型だったんですね…。

プライマイキー制限の見方

一行で書いてあります。 "PRIMARY KEY (clustered)" "<プライマリキー名>" "(n/a)" "(n/a)" "(n/a)" "(n/a)" "<フィールド名>"

テーブル削除と外部キー制限

外部キーを他からつけられているテーブルは削除できません。 外部キーを他につけていても、外部キーを他からつけられていない場合は削除できます。 当然なんですが、メモ。

sysobjects利用を検討したけどやめました

sysobjects テーブルで、xtype='F ' で、外部キー制限が抽出できるのですが、参照元は無かったので使いませんでした、と。

sp_helpconstraint

先日の日記で、sp_helpconstraint でテーブル名が出るだけで制限の内容が見えない、と書きましたが、 複数の結果セットを見ていなかっただけだったことが判明。恥ずかしい。 外部キー制限は、どうも2行にわたっているみたいです。以下にフィールドの説明を挙…

制限が見えない

フィールドに外部キー制限をかけて、それを引き出そうとしましたが sp_helpconstraint で、返されてくるオブジェクトは、指定したテーブル名だけ。なんかわけわかんない。ぐぐってもあんまり情報無いし…。

型の名称が…

よく間違うので、メモします。double -> real逆方向に間違うこともあるんだよね、これって。

もうADO.NETなんか知らないっていうか、もういい知らない、みたいな。

フィールドの編集を ADO.NET でやるのをあきらめる。やり方がまったく分からない。 分からないから、AccessからMSDEに変更し、SQLで行うようにしてしまいました。削除 : ALTER TABLE (tablename) DROP COLUMN (fieldname) 追加 : ALTER TABLE (tablename) AD…