SQL Serverで全DB全テーブル全カラムのメタデータを取得する
背景
テーブルレイアウトも仕様書も、弊社内製既存のアプリがことごとく情報がなく、とりあえずDBのメタデータを出力することに。とりあえずメモ。
これらを使って開発側で仕様や意味合いなどまとめていきたい。。。
環境
- SQL Server 2014
コード
DECLARE @DBName NVARCHAR(256) DECLARE @varSQL NVARCHAR(512) DECLARE @getDBName CURSOR SET @getDBName = CURSOR FOR SELECT name FROM sys.databases CREATE TABLE #TmpTable ( DBName NVARCHAR(256),SchemaName NVARCHAR(256),TableName NVARCHAR(256),ColumnName NVARCHAR(256), ValueType NVARCHAR(256),max_length NVARCHAR(256),precision NVARCHAR(256),scale NVARCHAR(256),is_nullable NVARCHAR(256) ) OPEN @getDBName FETCH NEXT FROM @getDBName INTO @DBName WHILE @@FETCH_STATUS = 0 BEGIN print @DBName; SET @varSQL = 'USE ' + @DBName + '; INSERT INTO #TmpTable SELECT ''' + @DBName + ''' AS DatabaseName , SCHEMA_NAME(obj.schema_id) AS SchemaName , obj.name AS TableName , col.name AS ColumnName , typ.name AS ValueType , col.max_length , col.precision , col.scale , col.is_nullable FROM sys.objects obj INNER JOIN sys.columns col ON obj.object_id = col.object_id INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id WHERE obj.type = ''U'' ' EXEC (@varSQL) FETCH NEXT FROM @getDBName INTO @DBName END CLOSE @getDBName DEALLOCATE @getDBName SELECT * FROM #TmpTable ORDER BY DBName,TableName,ColumnName DROP TABLE #TmpTable
参考
各データベースへのループ処理
https://blog.sqlauthority.com/2008/04/29/sql-server-find-table-in-every-database-of-sql-server/
メタデータ関連
新春MacBook(Unibody 2010)をSSDに、RAM8GBに換装した
家族が端末ほしいと言うので新しく古いMacBook Unibody 2010mid を使えるようにHDDをSSD(500GB)に変え、RAMを8GB(4GBx2)にしてみました。
用途は簡単なプログラミングやネットサーフィンくらいかな。 前提として、元あったデータも何も捨てるのでバックアップなどは一切しません。
やったこと
- 下調べ
- パーツ購入
- 換装作業
- OS再インストール
下調べ
古いMacBookのSSD化、またRAMの換装はしたことがなかったので下調べ。
分解・換装方法
写真はifixit、動画はGeekanoids氏で確認しました。
HDD
RAM
使用パーツ
新年にコンビニ受け取りし、かつ全部まとめてもらいたかったのでAmazonで注文。
HDD
秋葉館のページを参照し対応商品を確認。 www.akibakan.com
近いものをAmazonでレビューを確認しつつ購入。 www.amazon.co.jp
RAM
Apple の公式より、RAMを確認。 MacBook (13-inch, Mid 2010) - 技術仕様
Amazonからこれを購入。 www.amazon.co.jp
精密ドライバー
レビューもまずまずで、かっこよかった(キッズ並観点)のでこれを購入。
換装作業
動画そのまま、問題なく実行できました。 特にメモリは Geekanoidsさんの動画で挿すときに角度をつけるなど、気をつけるべきところがわかったので助かりました。 今気づいたんですが、ifixitにあるバッテリー外し忘れてましたね。
OS再インストール
OS再インストールは
付属DVDからSnowLeopardをインストール
個人情報やAppleIDについては入力しませんでした。
ソフトウェアアップデート(トラブルあり)
SnowLeopardをインストール完了し、ソフトウェアアップデートをかけたら デフォルトの壁紙だけ表示されており、マウスポインタは動かせるが、何もすすまない状態になりました。
調べたところ、以下のQ&Aで解決しました。
SnowLeopard10.6.3でソ… - Apple コミュニティ
そうしたらしばらくアップデートと再起動の繰り返しです。
El Capitanへのアップデート
App Storeからダウンロードするはずなんですが、検索しても見つからないので AppleのサイトからApp Storeを開くリンクを使って移動し、インストールしました。
以上! いい感じに使えるといいなぁ。
源泉徴収票には賞与が含まれる。
久々の記事でまったくコンテンツ性のないタイトル落ちの記事です。 本文を見ている方には申し訳がありません。 ふと思い立って検索するとタイトルで人を寄せて内容を読ませるタイプの記事が多かったのでタイトルだけで終わる記事もいいのでは?と書きました。
以上!
「画像を表示」を復活させるブックマークレットを作ってみたらもっといいものが既にあった
あらすじ
- web系開発に触れていないがjavascriptで色々するのが楽しい。
- 流れで最近話題のGoogle画像検索から消えた「画像を表示」を復活(&改善)させようとブックマークレットを作った。
- ググったら既に拡張機能が作られていたよ。
- 勿体無いのでブックマークレットを記事にメモした。
該当記事
私の作ったもの
2018/02/20 版
javascript:(function(){ function convertHref2Url(href){ var startTag = "/imgres?imgurl="; var endTag = "&imgrefurl="; return decodeURIComponent(href.substring(href.indexOf(startTag) + startTag.length, href.indexOf(endTag))); }; Array.from(document.querySelectorAll("a[jsname='hSRGPd']"), e => { var imageLink = document.createElement("a"); imageLink.setAttribute("target","_blank"); imageLink.style ="height:30px;width:80px;" + "background-color:rgba(130, 130, 255, 0.8);" + "color:rgba(255, 255, 255, 1.0);" + "z-index:1;" + "border-radius: 10px;" + "display: flex;" + "flex-direction: column;" + "justify-content: center;" + "align-items: center;" + "position: absolute;" + "text-decoration: none;"; imageLink.href = convertHref2Url(e.href); var linkTitle = document.createElement("div"); linkTitle.style = "color:black;font-size:5px;"; linkTitle.innerText = "View image"; imageLink.appendChild(linkTitle); e.parentNode.appendChild(imageLink); }); })();
2018/02/21 版
面白そうだったので色々試した
- スクロールした後、リンクのついてない画像が出て来る。 何度も実行することを考慮して重複しないようにした。
- すべての追加される要素にstyle属性を直書きすると文字数がすごいことになる(影響不明)のでstyle要素を追加した。 style要素も重複対応済。
javascript: (function () { function convertHref2Url(href) { var startTag = "/imgres?imgurl="; var endTag = "&imgrefurl="; return decodeURIComponent(href.substring(href.indexOf(startTag) + startTag.length, href.indexOf(endTag))); }; var styleId = "gas_view-image_style"; var labelClass = "gas_view-image_label"; var linkClass = "gas_view-image_link"; var s = document.querySelector("#" + styleId); if (s === null) { var style = document.createElement("style"); style.setAttribute("id", styleId); style.nodeType = "text/css"; style.appendChild(document.createTextNode(` .${labelClass} { height:30px; width:80px; background-color:rgba(130, 130, 255, 0.9); color:rgba(255, 255, 255, 1.0); z-index:1; border-radius: 10px; display: flex; flex-direction: column; justify-content: center; align-items: center; position: absolute; text-decoration: none; } .${linkClass}{ color:black; font-size:8px; } `)); document.head.appendChild(style); } Array.from(document.querySelectorAll("a[jsname='hSRGPd']"), e => { if (e.parentNode.querySelector("." + labelClass) === null) { var imageLink = document.createElement("a"); imageLink.setAttribute("target", "_blank"); imageLink.setAttribute("class", labelClass); imageLink.href = convertHref2Url(e.href); var linkTitle = document.createElement("div"); linkTitle.innerText = "View image"; linkTitle.setAttribute("class", linkClass); imageLink.appendChild(linkTitle); e.parentNode.appendChild(imageLink); } }); })();
あと記事の問題ですが、コードハイライトが有効になるように修正。 (javascript を js にしていた。)
動作
こんな感じに「View image」のリンクが作られます。
javascriptどころかweb系全然触れてない(言い訳)のでコードの適当さがあります。
以上!
日経BP-IT PRO Activeの記事を印刷用にするブックマークレット
もくじ
- 前置き
- 環境
- ソース
- 使うとどうなるか
- 感想
前置き
最近チーム全体が情報収集する気風になってきていて、日経関連の記事を見る機会が多くなりました。
PDF込みで記事になっていたり、印刷ビューになるものはいいのですが、それ以外はページ全体を紙に印刷して情報共有することになっています。
で、毎度開発者ツールで無駄なものを削除していたのですが、面倒なのでブックマークレットにしてみました。
「ブックマークレットとはなんぞや」についてはググってください。
環境
以下の環境で動かしてます。
ソース
本業じゃないのでおそらく美しくないコードになっています。
javascript: (function() { ["#bpGlobalHeader","#wrapper>header","#wrapper>footer","#wrapper>div>aside",".content>article>footer>section",".tools",".breadcrumb"].forEach(function(val, index, ar) { Array.from(document.querySelectorAll(val), e => e.remove()); }); document.querySelector("article").style.width="auto"; })()
使うとどうなるか
実行前
実行後
感想
- 他の日経のサイトで試したら全然消えなくて辛い。
- Javascriptの簡潔な組み方が分からない。
- ブックマークレット割と便利。
Outlookのクイック操作のエクスポート/インポートをする方法
もくじ
- 前置き
- クイック操作のエクスポート
- クイック操作のインポート
- 注意点
前置き
日本語でググると古い記事がトップに出て エクスポート不可能 という結論になり、 英語でググると新しい記事がトップに出て エクスポート可能 という結論にになるという切ない感じだったので書きました。
「outlook クイック操作 エクスポート」 とかググったら一番目に下記URLがヒットします。 2011年の古い記事なのですが、結論としてはエクスポート不可ということになっています。
Microsoftコミュニティ-作成したクイック操作の設定をエクスポートしたい
作成したクイック操作の設定をエクスポートしたい - マイクロソフト コミュニティ
「outlook quick step export」とググれば今年の記事が出てきます。 結論としては ツールを使えば可能 とのこと。
How can I export quick steps
How can I export quick steps - Microsoft Community
やっぱり日本語の情報だけでなく英語でもググる必要がありますね。 クイック操作は英語でquick stepと呼ぶそうです。Officeの日本語から英語で検索する時に下記の記事が参考になりました。
クイック操作のエクスポート
mfcmapi のダウンロード
mfcmapiというツールを使用します。 下記URLから最新のバイナリをダウンロードします。 古いバージョンだと日本語(マルチバイト文字)が正しく扱えず、文字化けします。
mfcmapiによるエクスポート
英語の記事と同様の手順となりますが、
- [Session]->[Logon] を選択する。
- 自分のメールアドレスをダブルクリックします。
- [Root Container]先頭の三角をクリックして開く。
- [インフォメーション ストアの先頭]先頭の三角をクリックして開く。
- [クイック操作設定]を右クリックして[Export Folder]->[AS MSG files...]
- 出力先のディレクトリを指定して、エクスポート完了
クイック操作のインポート
mfcmapiによるインポート
- [Session]->[Logon] を選択する。
- 自分のメールアドレスをダブルクリックします。
- [Root Container]先頭の三角をクリックして開く。
- [インフォメーション ストアの先頭]を右クリックして[Open associated contents table]を選択。
- [Folder]->[Import]->[From MSG...]を選択肢、インポートするMSGファイルを指定する。
- インポート完了
注意点
検証の前提
- マシン環境
- Windows 7 32bit
- Office2010
- MFCMapi.exe.17.0.17099.01
- 試した事
- 自分のPCから[エクスポート]->[クイック操作削除]->[インポート]
- 自分のOutlook2010からエクスポートしたクイック操作を他のOutlook2013にインポート
念のためクイック操作を複製したり、消えても問題ないクイック操作でお試しすることを推奨します。