仕事中に同僚が発見した便利そうな技を紹介
といっても、人のブログに乗ってたやつだけども。
http://d.hatena.ne.jp/siokoshou/20080124#p1
何をしようとしたかというと、Enumで宣言したエラーコードをもとにエラーメッセージを返す処理を書きたく、うまい変換手段を考えてた。
Enumで宣言したコードからToStringでEnumにひもづく文字列を取得するというもの。
拡張メソッドというやつが便利すぎるので今後取り入れたいと思う。
まぁ、そんだけ。
2013/04/05
SSMS IntelliSenseが言うことを聞かない時の対処
DBのオブジェクト構造を変更したとき、新しいオブジェクトでインテリセンスが効かなかったりする。
何かをきっかけに効くようになるため、放置していたが、ちょこちょこストアドやらビューやらを作ったり消したりしていると結構わけわからなくなるので調べてみた。
http://msdn.microsoft.com/ja-jp/library/ms173434.aspx
どうやら、ローカルキャッシュを持っているようで、これを更新することで最新の状態でインテリセンスを効かすことができるようだ。
方法としては以下の2パターン
1.[編集] → [IntelliSense] → [ローカルキャッシュの更新]
2.Shift + Ctrl + R
どちらも、クエリエディタが開いているときに操作可能な様。
まぁ、メニュー漁れよの一言だとは思うが。。。忘れそうなので記載する。
2013/03/05
C# Listからオブジェクトの要素を検索する
久々の更新
2回以上探したロジックなので自前でのっけます。
C# List<T>からオブジェクトの要素を検索する
オブジェクトのコレクションからオブジェクトのプロパティやらフィールドをキーに検索する方法について。
抽出方法として2点見つけた。
1.List<T>.Findとデリゲートで抽出
2.Linqを使って抽出
2.はイマイチLinqを理解していないためパス(ぇ
てわけで、お気楽に1.を記載
まずは、MSDN
http://msdn.microsoft.com/ja-jp/library/x0b5b5bc.aspx
Find以外にもFindAllだのFindLastだのがあるようだ。
目的に応じて使い分ければよし。
で、使い方については以下の通り。
※ Dataクラスにはプロパティ「ID」があるものとする。
例:ID=1であるDataオブジェクトをDatasコレクションから抽出する
int localID = 1;
Data data = Datas.Find(
delegate(Data d)
{
return d.ID == localID;
}
);
同様に複数とりたかった場合はFindAllを使えばいいし、Indexが一番大きいオブジェクトを取得したければ、FindLastを使えばよいということ。いやぁ便利だねぇデリゲート。
他のやりたいこともそのうち追加しとこう
備忘録
・オブジェクトリストを一発ソート
・オブジェクトリスト内の存在確認
2012/12/29
2012/06/29
2012/05/24
SQLServerのすごいやつ2
本日教えてもらった便利なやつは以下の通り!
・sys.database_filesテーブル
これをみると、データベースの物理ファイルに関する情報がわかる!
・dbcc shrinkfile (データベース物理ファイル名, 0)
物理ファイルの圧縮を行う。
また、物理ファイルの圧縮を行う際に、データベースの「復旧モデル」によって圧縮具合が違う。
「完全」の場合、バックアップがなされていないと、DB物理ファイルに持ち続けるため容量が減らない。
「単純」とかにしていると、一発で大分へるっぽい。
いつもこれで困るから、覚えておこうと思う。
・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のすべてのテーブルの使用容量一覧が取得できる。
べんりー!
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のすべてのテーブルの使用容量一覧が取得できる。
べんりー!
登録:
投稿 (Atom)
