SQL Server:関連メモ(覚え書き)
SQL Server 関連の覚え書き
SQL Server, SSMSE, Access, Excel, Outlook などデータベース関連での覚書。
ネットワーク接続の有効化
※規定で無効になっている。
- [スタート] から SQL Server メニュー [構成ツール] → [SQL Server 構成構成マネージャ]
※コンパネの[コンピュータの管理]の中にもある。 - [SQL Server 200* ネットワークの構成] → [サーバー名(エディション・環境で異なる) のプロトコル]
- TCP/IP を「有効化」にする。→ ※SQL Server の再起動が必要。
- [SQL Server 200* のサービス] → [SQL Server(サーバー名)] → [再起動]
- ※実際のネットワーク越しの動作未確認。
- 停止する場合は逆の操作を行う。
sqlcmd コマンドで cmd 上で SQL 文を実行
- コマンドプロンプトを起動
- sqlcmd /E /S サーバー名
- ここでのサーバー名は、{コンピュータ名\サーバー名} でないと接続できないようである。
- プロンプトが、[ 1> ] のように表示されたら、SQL 文の実行が可能となる。
既存データベースを表示する SQL 文入力例:
1> use <ターゲットとするデータベース名> 2> select * from <表示したいテーブル名> 3> go
- Enter 押下でテーブルが適すとベースで表示される。
- 終了する場合 [ 1> quit ] or [ 1> exit ] で cmd 初期に戻る。quit / exit はデータベース終了時の処理が異なる可能性があるが、未確認。
- help は、[ sqlcmd ?/ ] or [ -? ] としないと出ないようである。
スイッチは大文字・小文字で意味が異なる。
[ /E ] = trusted connection , [ /S ] = server の意味である。
スクリプトをバックグラウンドで実行
sqlcmd で /i オプションを指定することで 事前に作成した SQL(スクリプト)ファイル(.sql)をバックグラ
ウンドで実行することが出切る。
※Oracle SQL*Plus の「@フゔル名」に相当とのこと。
- 具体例:以下 SQL 文を C:\sample_sql.sql 等の名前で保存。
use sample_db select * from sample_table go
- cmd で以下のように・・・入力
C:\>sqlcmd /E /S <コンプュータ名\サーバー名> /i "c:\test.sql"
- test.sql が実行される。
コマンドプロンプト使用上のワンポイント
コマンドプロンプト(me 以降なら cmd 、以前なら command )使用では、階層が深いととにかく入力が面倒になる。
C:\ 直下や USB など使うと階層が浅ければ操作が簡単になるが、C:\直下へファイルを直接作りたくない(・・・気分的・・・)とかする場合、仮想ドライブや RAM ドライブを使う等でも便利になる。
RAM ドライブや仮想ドライブは、フリーソフトがいくつかあるようなので試してみたが、今一つ使いたくない気分・・・。
・1) win 認識不能なほど実メモリ積んでれば、RAM driveを積極的に使いたいが、ガンガン使うとスワップが発生するようなメモリ構成では・・・メモリに余裕なし。
・2) 仮想ドライブのフリーソフトの一つを使ってみたが、しっくりこない。(何となく・・・)
Windows には標準で「ネットワークドライブの割り当て」機能があるので、これを利用すると、自PCの共有フォルダを仮想ドライブのように割り当てできる。
- My Documents 内に "仮想ドライブ" などと名前を付けてフォルダを作成。
- "仮想ドライブ"を共有設定する。適度にセキュリティの設定をしておくのが良い・・・。
- メニューから「ネットワークドライブの割り当て」で、ドライブ名 [ Z ] とかにしてネットワークドライブ化。
- 特別なソフト無しに [ Z:\ ] ドライブが出来上がる。
※共有機能を有効にしたフォルダを使用するので、セキュリティ的に低下することに注意。
※USB メモリなど常時使用できれば、こんなことする必要もない・・・。
MS Office から SQL Server のデータを利用する
Excel へデータをインポートする
※SSMSE から SQL Server へ接続できなくなるなど、原因不明のトラブルに見舞われる可能性があるため要注意。
- [外部データの取り込み] - [新しいデータベースクエリ] - [データソースの選択]が表示される。
- [データベース]タブ - [ <新規データソース> ]を選択し [ OK ]
- a ). 1 新規データソース名・・・ 適当に・・・ SQL SV(1) とか付ける
- b ). 2 アクセスするデータベースの種類・・・ SQL Server を選択
- c ). 3 [接続]ボタンで、[SQL Server ログイン]ダイアログ表示
- サーバー名:<接続する SQL Server名:コンピュータ名\サーバー名(localhost名\SQLEXPRESS)等> を入力
※localhost\SQLEXPRESS では繋がらないようなので、コンピュータ名の正しい指定が必要と思われる? - [オプション]から[データベース]で接続したいテーブル名を選択 - [ OK ]
- サーバー名:<接続する SQL Server名:コンピュータ名\サーバー名(localhost名\SQLEXPRESS)等> を入力
- [新規データソースの作成]ダイアログに戻り 4 データソースの標準・・・は空白でも可(選択しても可)で [ OK ]
- [データソースの選択]ダイアログに戻ると、sql sv(1) が登録されているので選択状態のまま・・・ [ OK ]
- [クエリ ウィザード - 列の選択]ダイアログ - [クエリに含む・・・]の中から「テーブルと列」を選択
- ※[オプション]ボタン - [オーナー] で [ dbo ] を選択すると管理下のテーブルのみ表示される。
- 選択 → [ > ] で [クエリの列]へ追加し [次へ] - [次へ] - [次へ] と進む。
- ※途中いろいろ設定を変えても良い
- [クエリ ウィザードの完了] で・・・
- a ). Microsoft Excel にデータを返す ・・・ そのままデータを Excel へ送られる
- b ). Microsoft Query でデータの表示またはクエリの編集 ・・・ MS Query 起動 → SQL 編集 → Excel へ送る
- c ). このクエリから OLAP キューブ ・・・ ?よくわからない?
- a か b を選択、必要に応じ [クエリの保存] を行い [完了]
- [クエリウィザード - 列の選択] ダイアログ
- [MS Excel への外部データの取り出し] → [ OK ] で Excel のアクティブシートに抽出されたデータが書き出される。
- [クエリ ウィザード - 列の選択]ダイアログ - [クエリに含む・・・]の中から「テーブルと列」を選択
※面倒になってきたので最後のあたり怪しい。
※当然 Access mdb も可能。
※データベースへ直接接続し SQL 文を実行出切る訳ではなく、あくまで excel sheet へデータをエクスポートが出きるだけって仕様のようである。
※SQL Server への接続は、手順間違うと・・・まあ、うまくいかない。
※サーバーの接続設定とか・・・いろいろ弄り回すと、SSMSE / sqlcmd で接続出来なくなったり悲惨な目にあうことになるかも・・・(実際ひどい目に遭った。)
- この作業が定型的なものなら、[データソースの選択]に登録した sql sv(1) を選択すれば、SQL Server への接続までしてくれるので簡単になる。接続以降のテーブル選択などは必要。
- 最後に保存した 「SQL SV(1) からのクエリ」を実行([クエリ]タブ)すれば、テーブル選択も不要になり、マウスクリックだけで簡単にデータを抽出できるのでもっと便利。
Access / Outlook へのインポート
比較的新しいバージョンなら Access へ SQL Server のテーブルをインポートが可能。
古いバージョンでは出来ないようであるが、SQL Server 側のエクスポート機能(Express は不可と思われる)や、Excel へインポートしたデータなら取り込みが可能なようである。
[ 編集 ] ▲上へ
データベース・SQL文・SQLクエリー(query)関連リンク
参考になる書籍など
・SQL Server ・データベース・プログラミング ・ASP.NET ・SQL全般
- SQL Server 専門・学習・試験対策の良書
wiki内関連ページ
- SQL文:SQLステートメント
- SQLステートメント
- SQLクエリー
- SQL文:ユニオンクエリー
- SQL文:パススルークエリー?
- SQL文:データ定義クエリー
- SQL文:サブクエリー?
- VB2005リファレンス(覚え書き)
- Microsoft SQL Server 関連
[ 編集 ] ▲上へ
2009年08月21日(金) 19:31:08 Modified by sakura_momo2