2011年8月30日火曜日

7月の帰省(3) 飛行機輪行

輪行時に注意した点です。
  • 輪行袋に入れたときにホイールが遊ばないようにある程度少し固定します
  • ハンドルを曲げるときは、ブレーキワイヤー同士が擦れないようにします。以前輪行中に擦れてワイヤーの被覆が破れてきました(11.09.24追記) 
  •  リアディレイラーの周りはある程度エアキャップ+ダンボールで保護します
  •  タイヤの空気圧は、着いてから空気入れるのが大変なのと、下げなくても大丈夫という話をもとに、特に下げていません(クリンチャー)。今まで4回ほど飛行機輪行していますが、タイヤが破裂していたことはありません。
  • チェーンが暴れないように、ひもである程度しばっておきます。
  •  空港で預けるときに、「自転車を立てた状態での搬送」と伝えます。やむおえず、横にする場合にどちらの面を上にするかを聞かれるので、ディレイラーが上になるように伝えます。それでもできるだけ横倒ししないようにお願いします。
    それでもホイールは心配になります。タオルや移動時に使う服などもクッションがわりにつめておきました。

7月の帰省(2)

7/27 茅ヶ崎→羽田空港→旭川。
平日なので、電車が混んでいる時間は避け、夕方の便にしました。早めに空港に行って自転車を預け、ラウンジで仕事のメール確認を終え、のんびりしました。
旭川まで移動して、ホテルで自転車を無事に組み立てられたら、この日のミッションは終わりです。
旭川に着いたのは夜の7時過ぎ。
旭川空港の到着・手荷物受取りで自転車を受け取り、旭川駅前までのバスに乗り込みます。
旭川駅に到着し、ホテルにチェックイン。仕事で旭川にくるときに利用しているホテルなので、なんとなく勝手知ったる感じです。
まずは自転車を部屋に運びこみ、さっそく組み立てです。

ホイールのふれもなく、無事に組上がりました。ほっと一安心です。
輪行バッグは近くのコンビニから実家(稚内)まで宅急便で送ります。
コンビニで、晩飯と、翌朝の朝食、補給食、あとはゆっくり眠れるようにビールを購入して部屋で早めに就寝しました。

2011年8月28日日曜日

自転車で帰省(1)準備

もう1ヶ月も前のことなんですけど、なんとなく時間と気分的な余裕ができたので、書いておきます。
7/26 出発準備。頭の中では何日も前から準備している気分なんですが、具体的な準備は自転車の梱包から。この作業は何度もやってますが、なんとなく、いよいよ明日出発だ、と気分が高揚してきます。
7/27 茅ヶ崎の自宅で、出発準備。持ち物リストは、この日まで必要と思われるものを随時evernoteに書き込んでおく。というのは、出発直前に「何が必要?」と考えても、急には思いつかないからです。

■準備
◯チェーン清掃
◯自転車梱包
◯チューブ ×2
◯空気入れ
◯パンクキット
◯ボトル
◯ディレイラー・エアキャップで梱包
◯充電器(iPod、携帯)
■自転車用リュック(背負って走る)
・パソコン(mac)
・pc電源
・iPod、ケーブル
・ルータ、LANの台、LANケーブル
・洗面(歯磨き、歯ブラシ、
・小さいはさみ
<自転車系・小物>
・コンタクト
・筋肉痛クリーム
・工具(六角)
・サプリ(マグネシウム、
◯テープ
・ガーゼ、テーピング
・地図★
・塩飴
・サングラス
<自転車系・大きい物>
・靴
・軽い靴★
・タオル
・メット
・保護テープ
<自転車系・衣類>
★ジャージ(上、下)
★ウインドブレーカー
★足:靴下、レギンス
★アンダーシャツ
★手:グローブ、カバー
■予め送る物
・おみやげ
・服
◯本
◯iPad
■旭川で送る物
・自転車ケース
だけ?

随分、チェック項目が多いね。
準備の様子を見つめるトツ(犬)。なにやってんのかね・・・という表情。
輪行バッグにつめて、少し、明日出発するのか、と実感がわいてくる。

2011年6月24日金曜日

Mac 上の Windows :IMEの切り替えキー統一化への戦い

11.06.24 am8:51
忘れてしまう前に書いておきます。
最終的にMacBookAir上でIME切り替えキーをどのようにしているか。結論としては、macでもwindowsでも、command + Space に統一しました。 

Mac時のIME切り替えは、標準で command + Space ですね。

VMWareFusion上の Windows7, WindowsXpでのIME ON/OFF は以下の設定を行いました。
  1. VMWareFusion 環境設定・キーボードとマウス で、
    キーマッピングを有効にする = OFF
    言語固有のキーマッピングを有効にする = OFF
    として、windowsを使っているとき commandキー をmacに取られないようにします。
  2. Windowsでは、chgkey.exe(ChangeKey)を使って、
    Win左 を Ctrl左 に置き換え(もともと commandキーはWin左になっている)
  3. 日本語IMEのキー設定を
    (MSOffice IME2010の場合、プロパティ・全般・編集操作・キー設定・変更ボタン)
    Ctrl + SPACE に、IME-オン/オフ を割り当てました。
つまり、Windowsでは、command + space を  ctrl + space に置き換えた、ということです。commandキーを、他のキーでなくて ctrlキー に置き換えた理由としては
  • win左キーを使う習慣が無い
  • altキーは、windowsの制御キーとして使われている
ぐらいの理由です。

2011年6月15日水曜日

VS2010のヘルプライブラリマネージャがおかしくなった

VS2010をインストールするときにディスク容量が不足していたせいか、F1を押すとヘルプエージェントがエラーとなりました。

ヘルプの設定を確認しようと思い、
VS・ヘルプメニューから、「ヘルプ設定の管理」を開きますが、ローカルのヘルプフォルダが選択できなくなっています。
以下の操作で復旧しました。(→復旧しかけています)
  1. C:\Program Files\Microsoft Help Viewer\v1.0 内の
  2. HelpLibManager.exe.config ファイルを
  3. <add key="FirstTimeRun" value="False" /> を
  4. <add key="FirstTimeRun" value="True" /> に変更し、
  5. 再度、ヘルプ設定の管理を開いてみると、
  6. ローカルフォルダの選択画面が表示されました。
  7. ここで、C:\ProgramData\Microsoft\helplibrary を選択しました。
  8. 次にヘルプ設定の管理を起動したとき、メニューが表示されたので、「オンラインからインストール」(※表記は正確ではありません)を行いました。
  9. ダウンロードするヘルプの選択が表示され、その中から、必要なヘルプを選択しました。
  10. 今ダウンロード中なので、この後うまくヘルプが表示されるかどうかは、また後日報告します。
以上

2011年4月28日木曜日

objective-C メモ1・クラスの宣言と定義

Objective-Cについてのメモです。言語についての解説ではありません。
本やサイトを読むだけではなかなか覚えることができないので、書いて覚えようと思います。後から思い出すきっかけになれば良いだけなので、トピックだけを抽出してまとめます。Objective-Cの基本となる言語はC言語のようですが、Cは知っているのでそれ以外についてのみ書きます。
Objective-C

・コンパイラディレクティブによって、オブジェクト指向部分を拡張しています。・Cに比べて多少言語拡張されています。例えば、for 〜 in などのコレクションへのアクセスなど。

基本
  • 文字列には、先頭に@を付加します。@”メッセージ!”
  • フォーマット指定子は、基本、C言語と同じで以下が拡張されています。
    %@=オブジェクトの内容

インポート 
#import <ヘッダファイル>
#import "ヘッダファイル"

クラスの宣言と定義 
@interface で始まり @end で終わります。
@interface クラス名 : 親クラス名
{
 インスタンス変数宣言
 ...
}
メソッド宣言
@end

メソッドとインスタンス 
クラスのメソッドは、インスタンスメソッドとクラスメソッドの2つがあります。

■インスタンスメソッド : インスタンスに対して実行するメソッドです。

メソッドの宣言
 - (戻り値型) メソッド名 : 仮引数リスト ... ;
※- 記号のメソッドをインスタンスメソッドと呼び、+ 記号で始まるメソッドをクラスメソッドと呼びます
例)
@interface Test : Object
- (void)method;
@end
 
インスタンスメソッドの実行
 [インスタンス メッセージ]
 例)
 [myself name] 
 
■クラスメソッド : 特定のインスタンスに依存しないメソッド
 
クラスメソッドの実行
 [クラス名 メッセージ]
 例)
 str = [NSString alloc]; 
 
 例) メソッドの戻り値がオブジェクトの場合は、複数のメソッドを続けて実行することができます。
 生成と初期化を連続して実行する例。 
  str = [[NSString alloc] init];
 
■インスタンス変数の宣言 (C++のクラスポインタ宣言と同じですね)
 クラス名 *変数名; 
 例)
 NSDate *date;
 
■インスタンスの生成
 変数 = [クラス名 alloc];
 allocメソッドは、インスタンス変数を初期化します。 
例)
 date = [NSDate alloc]; 

■クラスに応じた初期化メソッド init
例)
 date = [date init];
 
↓ 1行で実行
 
 date = [[NSDate alloc] init];
 
↓ newメソッドを使用する。
 
 date = [NSDate new]; 
 
■汎用データ型 id ※コンパイル時に型チェックされません。
 
id date;
date = [[NSDate alloc] init]; 
 
■インスタンスの開放は、release メソッドを使う。
 
[data release];
 
・自動開放の指定は、生成時に autorelease メソッドを使う。この自動開放の仕組みは NSAutoreleasePoolクラスによって実現されている。
テンプレートからプログラムを作成することで、この開放処理記述は省略できる。
また、この自動開放が組み込まれた標準クラス・メソッドもある。
例)
 name = [NSString stringWithString:@"Masayuki"]; 
 
クラスの定義 
@implementation コンパイラディレクティブを用いてクラスを定義しなければなりません。

@implementation クラス名
メソッド定義
...
@end 
  
<基本的なクラス定義のSample> 
#import <stdio.h>
#import <objc/Object.h>

@interface Test : Object
- (void)method;
@end

@implementation Test
- (void)method {
 printf("テスト\n");
}
@end
 
/* 
 main 
*/
int main() {
 id obj = [Test alloc];  // インスタンス化
 [obj method];  // method呼び出し   
 return 0;
} 
 

2011年4月24日日曜日

MacBookAir に Windows7環境を構築

開発環境にはWindows7も必要です。いまどきの開発ですから、わかりますよね。
このためMacのVMWareFusionにWindows7環境も作りました。この環境は開発がメインなので、windows7でVS2010を使うのが目的です。しかし、仮想環境なのでディスクスペースがそんなにありません。メモリもvaio時代(8G)の1/4(2G)です。このため、windows7上の作業は、必要最小限に絞りたいところです。
そこで、ドキュメント(主にExcel)をmacかwindows7か、どちらで編集するか悩みました。問題は操作性です。プログラム開発と同じくドキュメントも効率よく書く必要があります。

よく使うExcel(最新)の操作性を比較をしてみました。
Excelのバージョンはそれぞれ以下です。
mac  : Excel 2011
win7 : Excel 2010

(1)
行の挿入がキーボードだけで可能 評価: Win7 ◯ mac ×
(alt → r → i )
※私の編集方法は、思いついた分類や見出しを適当に行の間隔を空けて、バババと書いていきますので、後から空行が足りなくなり、行挿入の操作を頻繁に行います。
(2)
画面表示が、macの場合、125%に拡大しないと人並みな大きさになりません。これは致命的です。(文字が小さいままで編集すると、なぜかいい加減な文章になってしまいます。)そして、うっかり125%に拡大したまま人にメールすると、添付ファイルを開けたときに、まず「でかっ!」と思われます。内容を読んでもらえたとしても、「それにしても字、でかいなぁ・・・」と、内容とは無関係な印象が大きく残ってしまいます。
評価:Win7 ◯ mac ×
(3)
セルの編集のキーが、macの場合、control + U で、win7の場合、F2キー一発です。
評価:Win7 ◯ mac ×
 
たった3項目の比較ですが、この時点で勝負はついてしまいました。使い慣れたWin7のExcelを使用することにします。
<参考画像>
上が、mac版Excel2011
下が、win版Excel2010 (ユニティ)

2011年4月2日土曜日

MacBookAirにWindowsXpをインストール (3)

最近やけに、vaioのXpMode(Windows7)さんがサクサク動くようになりました。以前はもっさりしていたのに。
もしかして、Mac内のWindowsXpに移行しようとしていることがバレた? 誰に!?

でも、注意してるんですよ、vaio-typeZさんには気付かれないように。
以前使っていたThinkPadさんは、私がこっそりvaio-typeZさんに移行しようとしているときに、次々壊れましたからね・・・。ディスクのアクセスランプさんが点滅しなくなったり、筐体の端が欠けたり。

(※気づきました?XpModeさんやvaio-typeZさんに”さん”づけしてること。さすがにアクセスランプに”さん”はいらんか・・・用心深いのであれですが)

そもそもWindows7のXpModeで困っていたことは、大きく2つ。
1.VS2003 + Infragistics + FlexGrid.Net で開発したプロジェクトが開けないこと。
→ このために、thinkpadをいつでも使える状態にしています。
2.ODBCの登録で、ときどき「権限がない」と言われ、はじかれること。
→ 特権モードで起動してもだめでした。

3.もっさりしていて遅いこと。
あ、3つありました。

このために、vaio-typeZ と thinkPad(14.1inch)を背中にしょって出張していることもありました。
電源も合わせるとパソコン類だけで5kgぐらいしょって移動していたと思います。
あの頃は、「修行」という一言で済ませていましたが、さすがにね、歳も歳ですから、人に「いつまで修行してるんだ!」とも言われかねませんしね。
それと、何が面倒って、飛行機に乗るときに、荷物検査でノートパソコン2台を出してトレイに乗せて、それとは別に荷物を持って、夏ならそれだけ一汗かきますよ、実際。

前置き、長っ! 長すギル。

結局、あなたは誰ですか?
Macですか?Windowsですか?
そういう概念が必要ないんですか?
ということなんだと思います。

とにかくこれからはWindows7だ!ということで、なんとかXpModeでやりくりしようとしていた頃が
既に懐かしい・・・です。
VS2003(.NET1.1)のプロジェクトも難なく開きました。
あとは、実行あるのみです。それは酔いが覚めてからにします。

2011年4月1日金曜日

MacBookAirにWindowsXpをインストール(2)

またアレです。泡盛です。

まずは驚きの結果から。
Windows7のXpModeよりちゃんとしたXpでした。当然ですよね。仮想マシンですから。
VS2003、InfragisticsのNetAdvantage、FlexGrid.NET 、PervasiveV8、
それぞれ、ちゃんとインストールすることができました。
以前、Windows7のXpModeではIEが新しすぎてインストール途中で弾かれました。
弾かれました。2回言いました。忘れないように。

そして、MacOS X上のVMWareFusionには、Windows(仮想マシン?)を表示するモードが3種類あります。
・フルスクリーン
・シングルウィンドウ
・ユニティ
ん?ユニティ?・・・

フルスクリーンの説明は省略します。
(将来にわたって忘れることはないと思われますので。)
シングルウィンドウは、以下のような画面です。
ま、だいたい想像はつきますね。
では、ユニティ、とは?
恐る恐るメニューから選択してみます。
すると、どうでしょう!
MacOS X の中に、WindowsXpのExplorerや、notepadが現れました。
恐るべし、匠・・・、いや、Mac OS X !
このパワーに打ちのめされて、本日の移行作業を終了します。

2011年3月30日水曜日

MacBookAirにWindowsXpをインストール

やっと時間ができたので、MacBookAirにVC++6関係の開発環境を構築してみようと思います。
インストールするソフトはざっと以下の感じです。
極力、サービスパック死は避けたいので、慎重に、古いソフトから順番にインストールしていきます。

(※サービスパック死=サービスパックなどをあてる順番を間違ったりして、うまく起動しなかったり、再起動や再インストールを繰り返し、貴重な青春や開発時間を、ただインストール中に動くアイコンを見つめて(例:Windows95のインストール中に現れる、猿が太鼓をたたくアイコンなど)時間を浪費すること。また、全世界のサービスパックを充てるために浪費された時間を集めると、一体、何人分の一生が無駄遣いされたか、と嘆くことを言う)

・VC++6(sp5)
・VS2003
+Infragisticsライブラリ
・PervasiveV8

まずは、MacBookAirにインストールしてあるVMWareFusionに、仮想マシンを追加します。
と、ここまで書いて、夕食の時間になったので、一旦引き揚げます。
-----------
続きです。すいません、既に一杯飲みながら、アレです。泡盛です。
(ブログって、こんないい加減でいいんでしょうか。読んでもらおうと思ったらこれではいけないでしょうねぇ)

VMWareFusionに仮想マシンを追加し
・DVDドライブに、WindowsXP withSp3 のDVDをセットします。
・そして、仮想マシンを起動します。
すると、どうでしょう、Xpの新規インストールが始まるではありませんか、
(Macユーザーの人にとっては普通のことだと思いますが・・・)
・そのままXpをインストールします。
・キーボードは、英語101キーボードを選択します。
(半角・全角キーはありませんから、押しようがありません)
・特に注意点はありません。通常のインストールです。

・その後、すぐさま、ウイルススキャンをインストールします。
・まず、VC6++をインストールするために、MSDNからダウンロードを行います。
と思ったら、既に、MSDNのサイトには、VC++6のダウンロードメニューが見当たりません。
メニューの中にVC++4.2があるのにですよ。
仕方なく、VC6++のCDを探してきて、CDイメージをコピーしておきます。
その途中で、な、なんと、MSDNの2000年のCDのサンプルフォルダをコピー中に、Symantecのウイルススキャンが発動し、コピーファイルの中に「トロイの木馬」検出!って。
何か余計なものが入っているようです。 仕方なく、指示通りにPC(仮想マシン)再起動し、サンプルフォルダをコピーしないように注意しながら、CDをコピーしたところで終了です。

2011年2月21日月曜日

PodやPad

すっかり Pod や Pad やらに振り回されています。
それぞれ、一定時間操作しないと画面が暗くなったりするので、暗くなると、少し触ってやる必要があります。
もぐらたたきゲームのようです。
そのたびに集中力が途切れ、作業途中のことが完全に飛んでしまいます。
人がマルチタスクをやろうとすると切り替えオーバーヘッドにより結果的に効率が落ちると、どこかに書かれていましたが、実際そのようです。

2011年2月15日火曜日

iPodTouch + スキャンジャケット

やっとバーコードが読めるようになりました・・・。

ハードル高すぎる・・・

2011年2月12日土曜日

移動時間の効率化

移動が多いので、移動中に効率よくドキュメントをまとめたり、アイデアをメモしたり、ときには開発したり、できるようになることが移動のテーマです。

同時に使用している機材は以下です。
・VAIO-Z
・MacBookAir
・iPod touch
・iPad
これらを使って、開発、ドキュメント、スケジュール、メモ、を効率良く管理するために、
以下のソフトを使っています。
・Evernote (windows, mac, ipod, ipad)
・Googleカレンダー + SnapCal(ipod)

<Evernoteの良さ>
使用している機材のすべてで、メモ、ドキュメントを共有化できます。
・ローカルで書いて、ネットにつながったときに同期できます。
・プレミアムに入ったので、ノートにExcelファイルなども添付できます。
使い方としては、議事などをEvernoteにメモ書きし、ノートに添付したExcelに清書したりします。
例えば、移動中、iPodtouchでメモ書きしておいて、後で、MacでExcelに清書したりします。

<Googleカレンダーの良さ>
ネットに繋がっていたら、使用している機材の全てで、スケジュールを共有化できます。

まだ使い始めたばかりなので、本当に効率良くなっているのかわかりませんが、
少なくとも、思いついたときにいつでもメモに書けたり、便利な気がすることと、
そういうことが楽しいです。

2011年2月1日火曜日

Windows7のXpモードで焦る

Windows7の中のXpモードをシャットダウンするときに、何気なく 「更新をインストールする」 してみました。
その後、しばらくXPモードが起動しなくなり、非常に焦りました。結果的には起動できたのですが、
以下、正常起動するまでの経過です。

■「1つの更新をインストール中です。電源を切らないでください」のメッセージがが数十分、繰り返されたので、更新が止まっているのではないか?と不安になり、XPモードを強制的に閉じてしまいました。
■その後、XPモードを起動すると、ログイン画面は表示されますが、ログインすると「ビジーのためログインできません」とはねられるようになってしまい、ログインできなくなってしまいました。
VC6のソースが この中に入っているのに・・・(-_-;)
■その後、ログイン画面でESCを押したら、また、「1つの更新をインストール中です」の表示が繰り返されました。今度は、ディスクランプが点滅しているので、更新中と判断し、しばらく放置。
■コマンドプロンプトが 表示され、そのままとなる。
■XPモードを閉じる。
■XPモードを開く。 → 「起動中です 」が表示され、すぐに閉じた。
プロセスを確認するが、起動していない様子。
■ 再度、XPモードを開く。
今度は、正常に今まで使っていた環境のXPモード が正常起動しました。

不用意に!?更新をインストールすると 恐い目にあいます・・・。

2011年1月29日土曜日

MacBookAirの良いところ

<MacBookAir(13inch, SSD 250G)の良いところ>

・画面が見やすいです。文字の視認性が良く楽になりました。
最近、目がやられてきたので、vaioの白が眩しく思えていました。MacBookAirの白
は、私の目にやさしいです。
・キータッチが良いです。
・バッテリーが長持ちします。vaioの比じゃないです。
・VMWareFusion-lightでWindows7が動くので、Windowsの開発環境が構築できます。
・薄いので携帯性が良いです。
・どうでも良いことですが、見た目が格好良いです。 筐体はアルミの削り出しだそうです。
・筐体の剛性があります。
・VAIO(Z)からの引越しなので、タッチパッドの動きに驚きです。例えば、
・2本指で下げると、スクロールします。
・3本指でさげると、終端・先端の移動です。
・4本指で下げると、タスクリストです。
こういう動きが意外に自然で、慣れると手・指の移動が少なくて済むかもしれません。

<MacBookAirの今ひとつのところ>

・キーボードの配列がWindowsパソコンと違うので、慣れるまで大変です。
例えば、@などの記号系の位置が異なります。
慣れるという以前に、キートップとタイプした文字が違います。これは致命的です。 タイプミスしまくり。模索中。
→ その後、 デバイスマネージャーで、「キーボードドライバ」を「PS/2 101/102 キーボード」に変更したところ、英語キーボードとなりました。Macキーボードは、つまり英語キーボード配列ということですね。今頃気が付きました。

思いつくのは今のところこれぐらいです。

2011年1月6日木曜日

classのSerialize

classをSerizlize(XMLフォーマット)して、DBやファイルに書き込むことで、柔軟性の高いデータ形式で保存できる。

例) DBの可変長列にSerializeしたクラスオブジェクトを書き込み、そのオブジェクトをDBを介して再現するような場合。あるいは、設定値などを保存しておく、などに使える。


Sample : refSbXmlに、typeとobjで渡したクラスの情報を、Serializeした結果をセットして戻す。
//■Serializeするメソッド例
        public void Serialize( ref StringBuilder refSbXml, Type type, object obj)
        {
            System.Xml.XmlWriter xml_writer = System.Xml.XmlWriter.Create( refSbXml );
            System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( type );
            serializer.Serialize( xml_writer, obj );

            //    clean
            xml_writer = null;
            serializer = null;
        }

-----------------
//■呼び出し側
        StringBuilder sb_xml = new StringBuilder();
        OpLogDataKey_PAT_OPEN data_key = new OpLogDataKey_PAT_OPEN();
        data_key.PAT_ID = id;
        oplog_dataman.Serialize( ref sb_xml, typeof( OpLogDataKey_PAT_OPEN ), data_key);


//■SerializeするClass
    public class OpLogDataKey_PAT_OPEN
    {
        public string PAT_ID;
    }
-------------------
sb_xml.ToString()は、以下の文字列が得られる。

<?xml version="1.0" encoding="utf-16"?><OpLogDataKey_PAT_OPEN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><PAT_ID>36102152</PAT_ID></OpLogDataKey_PAT_OPEN>

-------------------
Deserializeは、XmlSerializerクラスのDeserializeメソッドを使う。

        public object Deserialize( string xmlData, Type type)
        {
            System.Xml.XmlReader xml_reader = System.Xml.XmlReader.Create( new System.IO.StringReader( xmlData));
            System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( type );
           return serializer.Deserialize( xml_reader);
        }

2011年1月5日水曜日

SQLServer データベースのコピー

SQLServerのデータベースを、SQLServerを止めずにコピーする方法について調べました。
(1)
簡易コピーツール DBCopyTool (紹介記事)
<特徴>
コピー先に新規のデータベースを指定した場合、テーブル構造、キー、トリガー、インデックスもコピーされ、元の環境と同じ定義状態になります。
内部的には、Backup / Restore でコピーしているようです。
※試したところ、データがコピーされたあと、「Error Delete File。このフォーマットはサポートされていません」 と表示されました。何のエラーかはわかりませんが、コピー先のデータを確認したところ、元データと同じ内容だったので、問題ないかな?Backup時のファイル削除に失敗しているとか。
(2)
SQL-ManagementStudioから、タスク・「エクスポート」の場合、データのみコピーされます。
つまり、エクスポート先にテーブルが作成されていない場合は、テーブルは作成されるが、キー、インデックス情報はコピーされません。
したがって、予めエクスポート先のデータベースを作成してから実行する必要があります。