So-net無料ブログ作成

SQL Server 2017をインストールしたらDBが壊れた(悪いのは高速スタートアップ) [その他]

追記 2018/06/14
今すぐ、高速スタートアップを無効にすること!
無効にして、パソコンを再起動したらDBに繋がった!SQL Server 2017 Developerは悪くなかった!
(試してないけど、再インストールする気力ないです)

丸1日たって、SQL Server 2016のDBに接続したら、「エラー 823」が発生した。
これが出ると、パソコンを再起動しても直らない。
なんで!?と思って、さらに色々と探してみたら、高速スタートアップが悪かったらしい。
高速スタートアップは、終了前の情報を保存しておき、起動するときにそれらを再度読み込んでいるらしい。
なので、SQL ServerがDBを終了させた!と思ったのに、次に起動したら終了してなかった!?となってエラーになるようだ。

無効の仕方は、次のURLを参照してください。
Windows 10で高速スタートアップを無効にする方法

Windows8/8.1 + SQL Server での不具合(高速スタートアップ)

投稿 2018/06/13
SQL Server 2017 Developer Editionが開発であれば無償利用が可能ということでインストールしてみた。

SQL Server Management Studio(SSMS) v17.7もインストールして
早速、バックアップをしたDBを復元させて、動作確認して
問題ないかな?と思って次の日にDBへ繋げてみるも繋がらない・・・

SSMSを立ち上げて、DBを見ようとすると「エラー 823」が発生した。
内容を確認するとDBが壊れているらしい。
しょうがないので、DBの削除やデタッチをしてもエラーが発生して何もできなくなった。
mdfファイルを削除して、もう一度、DBを復元して動作確認も出来て「さぁ終わった」と
パソコンを再起動すると、やっぱりDBが壊れる。

SQL Server 2017をアンインストールして、再インストールをして
DBを復元して、パソコンを再起動したらDBが壊れる。
DBを復元せずに1から作成して、パソコンを再起動したらDBが壊れる。

ストレージにはSSDを使用しているので、SSDが壊れてる?と思ってイベントログを見たりしたけど問題なかった。
どうしようもなくなったので、SQL Server 2017をアンインストールして
代わりにSQL Server 2016 Developerをインストールした。

同じようにDBを復元して、動作確認して、パソコンを再起動してもDBは壊れない。
当分、SQL Server 2017は使わないことにしようと思う。
高速スタートアップを無効にしたら使える!(試してないけど)
nice!(1)  コメント(0) 

開発環境を仮想マシンに構築 [その他]

開発環境のOSがWindows 7からWindows 10へと更新することになった。

Windows CE 6.0の開発をするために、
Visual Studio 2008のインストールをと思ったけどWindows 10はサポートしていない。

Windows CE 6.0の開発には、Visual Studio 2008 Professionalのスマートデバイスで行うので
Hyper-VでWindows 7の環境を構築して問題はひとまず解決。
(Windows 10でもVisual Studio 2008は起動するようだ)
(スマートデバイスはVisual Studio 2008 Professional以降でないと開発できない)

Hyper-Vから仮想デスクトップを開くと画面の解像度がフルHDにならない。
リモートデスクトップで接続することで、解像度の問題は解決したけど
今度は、USBのシリアルコンバータが仮想デスクトップで認識できなかった。

USBリダイレクトで何とかなるのかな?と思ってたけど何とも出来なかったので、
VMware Workstation 14 Player(有償)で開発環境を再度構築することにした。

VMware Workstation Playerを使用して、仮想環境にシリアルコンバータの
ドライバをインストールして通信を行うと上手くできた。
(USBシリアルコンバータは、ラトックシステム REX-USB60Fを使用)

開発環境の構築には、VMwareが便利かなと思った。

さらに便利にするために、
「VMware Player用簡易スナップショット管理ソフト:NHM」を導入した。
余計なソフトをインストールしていないOSだけの環境のスナップショットを取り
そこから開発環境やら、テスト環境やらを構築するのがすごく便利になった。
nice!(0)  コメント(0) 

Windows Server 2012 R2を使用しリモートデスクトップ側で音を鳴らす [その他]

ターミナルサーバーを構築し、リモートデスクトップ側(クライアントの方)で音を鳴らそうとしたときのメモ。
サーバー側にはサウンドカードがないため音は出ません。

ホスト(サーバー):Windows Server 2012 R2 (サウンドカードなし)
ゲスト(クライアント):Windows 10 Pro (多数)

ゲスト側でのリモートデスクトップの設定は
[ローカル リソース]-[サウンド]を[このコンピュータで聞く]に設定しておく。

ホスト側での設定として
サービスから次の項目を自動で開始にしておく。
・Windows Audio
・Windows Audio Endpoint Builder

グループポリシーの設定を変更する。
ファイルを指定して実行から"gpedit.msc"と入力してグループポリシーの編集を開く。
[コンピュータの構成]-[管理用テンプレート]-[Windows コンポーネント]-[リモート デスクトップ サービス]-[リモート デスクトップ セッション ホスト]-[デバイスのソースのリダイレクト]を開いて
"オーディオおよびビデオ再生リダイレクトを許可する"を有効にする。

設定が終われば、サーバーを再起動して、クライアントからリモートデスクトップで接続すると音が鳴った。
nice!(0)  コメント(0) 

VisualStudio2017のオフラインインストール [その他]

Visual Studio 2017 ProfessionalをWindows Server 2012 R2にインストールしたときのメモ

Visual Studio 2017は、オンラインでインストールする必要があるようで、ISOの提供がないみたい。
サーバーはインターネットに接続しないのでオフラインでのインストールが必要でした。
Visual Studio 2017のexe(すごい長いファイル名だった)を次のコマンドをコマンドプロンプトから実行した。

> SW_DVD5_Visual_Studio_2017_Pro.exe --layout D:\vs2017offline --lang ja-JP
ほんとはもっと長いファイル名だけど省略して記載。

ダウンロードしたファイル一式(D:\vs2017offline)をサーバーに持っていき、証明書のインストールをした。

E:\vs2017offline\certificatesのフォルダ内にある次の3ファイルをダブルクリックで実行した。
・manifestSignCertificates.p12
・manifestCounterSignCertificates.p12
・vs_installer_opc.SignCertificates.p12
インストール先は、ローカルコンピュータにした。
パスワードは空白のままでインストールをする。

E:\vs2017offline\vs_professional.exeをダブルクリックで実行すると、インストールが開始された。
nice!(0)  コメント(0) 

Excel VBAで無限ループを停止 [その他]

ExcelのCellに入力された改行文字をスペースに置換しようとマクロを作ってみた。
まず、改行文字が vbLf だったのに手間取った。

改行文字を消すだけだしと保存もせずに、やっつけで作ったマクロを動かすと
無限ループに突入し「保存しとけば良かった・・・」と思ったけど調べてみると止め方が見つかった。

・Microsoft Visual Basic for Applications を開く
・Ctrl + Pause もしくは Ctrl + Break を押す。
 Pause/Breakキーが無い場合(特にノートPC)は、スクリーンキーボードを表示して
 Ctrlキーを押しながら、スクリーンキーボードのPauseをクリックする。
・これでも止まらない場合は、Escキーを連打する!
 自分はこれで止まりました。

スクリーンキーボードは、[アクセサリ]-[コンピューターの簡単操作]にあります。
nice!(0)  コメント(0) 

モバイルデータをOFFにしての電話とかメールとか [その他]

スマホのモバイルデータの通信容量が上限を超えそうなので、
モバイルデータをOFFにしてWiFiのみで頑張ってみたときのメモ。

・電話の着信、発信ができた。
・SMSの受信、送信ができた。
・メールの受信は「サーバーにメールがあります」と表示された。
 メールの新着が分かるので、WiFiが繋がるところまで行って受信したりした。

モバイルデータをOFFにしても困ることはなかったかな?
待ち時間での暇つぶしとか、電車の時間調べたりが不便でした。
nice!(0)  コメント(0) 

VMWareで仮想シリアルポート同士を接続 [その他]

RS232Cの開発でシリアルポートが必要になったけど、
ノートPCなんでシリアルポートがない。
USB-RS232C変換ケーブルもない。

VMWareのゲストOSにシリアルポートを2個追加して、同じ名前付きパイプを設定すると
仮想PC内のシリアルポート同士で送受信できるようになった。

開発環境のノートPCでは、COM2とCOM3が追加された。
ss001.png
ss002.png

未使用のシリアルポート(COMポート)の削除 [その他]

USBのシリアル変換を使用して、いろいろな機器と接続していると
なんだかんだで、COMポートが増えていた。
COM1がずっと使用状態になって、割り当てできなかったりと不便だったので
次の方法で未使用のCOMポートを削除した。

コマンドプロンプトを管理者として実行して
次のコマンドを実行するとデバイスマネージャが開くので

set devmgr_show_nonpresent_devices=1
start devmgmt.msc

メニューの[表示]-[非表示のデバイスの表示]を押すと、現在使用していないデバイスが表示される。

デバイスマネージャのポートのツリーを開いて現在使用していないポートを右クリックして削除する。
このとき、ドライバーソフトウェアは削除しない。

参考URL
Windowsで増えすぎた未使用COMポートを削除する方法
http://airvariable.asablo.jp/blog/2013/02/24/6730209

WinMergeのJSONプラグインを作成してみた [その他]

JSONファイルが何かと便利!と色々使ってみてるけど、
元データとの比較が面倒だったりしたのでWinMergeのJSONプラグインを作成したときのメモ。

JSONファイルを整形して比較する。
整形には、JavaScriptのJSONを使用する。
WinMergeのプラグインは、VBScriptで作成されている。
WinMergeのプラグインで、JavaScriptは動くのか?(動いた!)
でも、JSONを使用すると「'JSON' は宣言されていません」と出る。
json2.jsを使用すれば出来た!

json2.js
https://github.com/douglascrockford/JSON-js

作成したプラグインと、json2.jsをMergePluginsフォルダに入れます。

ファイル名:CompareJsonFiles.sct
<scriptlet>

<implements type="Automation" id="dispatcher">
	<property name="PluginEvent">
		<get/>
	</property>
	<property name="PluginDescription">
		<get/>
	</property>
	<property name="PluginFileFilters">
		<get/>
	</property>
	<property name="PluginIsAutomatic">
		<get/>
	</property>
	<method name="UnpackFile"/>
	<method name="PackFile"/>
</implements>

<script language="JavaScript" src="json2.js"></script>
<script language="JavaScript">
function getJson(filename) {
	return jsonParse(adoLoadText(filename, "utf-8"));
}
function jsonParse(text) {
	try {
		var obj = JSON.parse(text); 
		return JSON.stringify(obj, null, "    ");
	} catch(e) {
		return e.message;
	}
}
function adoLoadText(filename, charset) {
	var stream, text;
	stream = new ActiveXObject("ADODB.Stream");
	stream.type = 2;
	stream.charset = charset;
	stream.open();
	stream.loadFromFile(filename);
	text = stream.readText(-1);
	stream.close();
	return text;
}
</script>

<script language="VBS">

Option Explicit

Function get_PluginEvent()
	get_PluginEvent = "FILE_PACK_UNPACK"
End Function

Function get_PluginDescription()
	get_PluginDescription = "Json形式のファイルを整形し比較をする。"
End Function

Function get_PluginFileFilters()
	get_PluginFileFilters = "\.json$"
End Function

Function get_PluginIsAutomatic()
	get_PluginIsAutomatic = True
End Function

Function UnpackFile(fileSrc, fileDst, pbChanged, pSubcode)
	Dim fso
	Dim foDst
	
	Set fso = CreateObject("Scripting.FileSystemObject")
	
	Set foDst = fso.OpenTextFile(fileDst, 2, True)
	foDst.Write(getJson(fileSrc))
	foDst.Close
	
	Set foDst = Nothing
	Set fso = Nothing
	
	pbChanged = True
	pSubcode = 0
	UnpackFile = True
End Function

Function PackFile(fileSrc, fileDst, pbChanged, pSubcode)
	PackFile = False
End Function

</script>
</scriptlet>


WinMergeのプラグインは、JavaScriptでも良いんじゃないのかな?

SQLite3へ大量のCSVを一括で取り込む [その他]

SQLite3へCSVファイルを取り込むためのスクリプトのメモ

次の必要なファイルを同じフォルダに配置する。
・sqlite3.exe
・CSVを取り込む先のテーブル(CSV_DATA)が作成されたDB(Sample.sqlite3)
・csv_import.bat
・INPUTフォルダを作成し、取り込む対象のCSVファイルを入れる。

*sqlite3.exeは http://www.sqlite.org/ から sqlite-shell-win32-x86-3090200.zip をダウンロードする。
*CSV_DATAテーブルの内容は、DATETIME型、後はREAL型が100個。

csv_import.batを実行すると、OUTPUTフォルダにINPUTフォルダ内のCSVファイルを結合した
merge.csvが作成され、それをDBに取り込む。

・csv_import.bat
@ECHO OFF

ECHO DB内のCSVデータを削除
sqlite3 Sample.sqlite3 "delete from CSV_DATA"

ECHO CSVを結合
mkdir .\OUTPUT
type .\INPUT\*.csv > .\OUTPUT\merge.csv

ECHO CSVをDBに取込
sqlite3 -separator , Sample.sqlite3 ".import ./OUTPUT/merge.csv CSV_DATA"

ECHO.
ECHO 処理が完了しました。
ECHO 終了するには何かキーを押してください...
PAUSE > NUL


・取り込むCSVファイルの内容
数値データは、100個あります。
2015/12/01 00:00:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:01:00,     0,     0.2,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:02:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:03:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:04:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   657,     0,     0,     0,     0,     0
2015/12/01 00:05:00,     0,     0.2,     0,     0,     0,     0,     0,     0,   661,     0,     0,     0,     0,     0
2015/12/01 00:06:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:07:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:08:00,     0,     0.4,     0,     0,     0,     0,     0,     0,   827,     0,     0,     0,     0,  1000
2015/12/01 00:09:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:10:00,     0,     0.4,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。