SQLの窓

2012年12月18日


ファイルから直接データベースを別のPCでリストアする / SQLExpress

SQLExpress 2008 バッチDB バックアップ でパックアップしたファイルを別の PC でリストアします。ここでは、MYDB というデータベースを MYDB.dat というファイルでバックアップしたものと考えます。

まず、MYDB.dat をどこに置いてもいいわけでは無く、ログインしているユーザがフルコントロールの権限を持つ場所に保存します。

その後内部の保存した時の情報を MYDB.dat の中から読み取る為に以下のSQL を sqlcmd で実行します。

sqlcmd -E -S .\SQLEXPRESS -i コマンドが書かれたL.txt
※ owner を sa にしたい場合は、-E では無く sa とパスワードで -U sa -P パスワード でログイン情報を使用します
RESTORE FILELISTONLY FROM DISK = 'C:\temp\MYDB.dat'
go
情報として、保存した時の論理名と、物理パスの情報がセットで存在し、データとログと合わせて4つの情報が必要になります。通常、データベース名と論理名は一致しているものですが、そもそも複製データーベースだと論理名が違う場合があります。その場合は最後に論理名も変更しないとオリジナルと同じ構成にならないので注意して下さい

これによって、元の情報が手に入るので、リストアする PC の環境を 『目的のDBが使用している物理ファイルのパスの確認 / SQLExpress 』で得たうえで以下のようなコマンドを作成して実行します
※ 必ずしもこのディレクトリ内に置く必要は無いはずですが、今回は管理上同じ場所へリストアします
RESTORE DATABASE MYDB 
	FROM DISK = 'C:\temp\MYDB.dat'
WITH
	MOVE 'MYDB' TO 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MYDB.mdf',
	MOVE 'MYDB_log' TO 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MYDB_log.LDF'
go

これは、ファイル内の論理名を使って、現在の PC のどの場所にリストアするかを決めるものです。

※ 削除する場合は、use master をしてから、drop database MYDB です。


タグ:SQLExpress DB
posted by lightbox at 2012-12-18 16:19 | SQLExpress | このブログの読者になる | 更新情報をチェックする

目的のDBが使用している物理ファイルのパスの確認 / SQLExpress

まず、コマンドファイル(sp.txt)を作成し、sqlcmd を実行します。標準出力では無く、ファイルに出力したい場合は、-o ファイル名を追加します。

sqlcmd -E -S .\SQLEXPRESS -i sp.txt

-E は、信頼関係接続です。SQLExpress がインストールされている PC から実行するのが最も確実であると思いますが、他の PC より実行したい場合は -U と -P でユーザとパスワードを指定する必要があるかもしれません。

sqlcmd -U sa -P password -S pc-000\SQLEXPRESS -i sp.txt

sp.txt
-- lightbox は、DB名です
use lightbox
go
-- sp_helpfile はシステムストアードプロシージャです
-- ドキュメントは http://msdn.microsoft.com/ja-jp/library/ms174307.aspx
sp_helpfile
go


▼ 出力結果
データベース コンテキストが 'lightbox' に変更されました。
name                                                                                                                             fileid filename                                                                                                                                                                                                                                                             filegroup                                                                                                                        size               maxsize            growth             usage    
-------------------------------------------------------------------------------------------------------------------------------- ------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------ ------------------ ---------
lightbox                                                                                                                              1 c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\lightbox.mdf                                                                                                                                                                                                PRIMARY                                                                                                                          2240 KB            Unlimited          1024 KB            data only
lightbox_log                                                                                                                          2 c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\lightbox_log.LDF                                                                                                                                                                                            NULL                                                                                                                             1088 KB            2147483648 KB      10%                log only 

関連する記事

ファイルから直接データベースを別のPCでリストアする / SQLExpress

SQLExpress 2008 バッチDB バックアップ



タグ:DB SQLExpress
posted by lightbox at 2012-12-18 12:22 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2012年12月11日


SQLExpress 2008 バッチDB バックアップ

タスクスケジューラにバッチファイルを登録して運用しています。Windows Server に登録していますが、注意するのは『開始オプション』のフィールドにバッチファイルが存在するフォルダを指定する事と、ユーザのログオンの有無にかかわらず実行可能にするという事です( 可能なら最上位の特権で )

バックアップなので、同じ PC 上に保存しても意味無いのでネットワーク上の別のサーバーへコピーしています。このバッチを2種類作り、保存フォルダも二つ作って1日おきに交互にコピーするようにしています。

backup.sql
use DB名
go
BACKUP DATABASE DB名 TO DISK = 'C:\保存場所\DB保存名.dat'
go


バッチファイル
del C:\保存場所\DB保存名.dat

sqlcmd -E -S .\SQLEXPRESS -t 3600 -i C:\batch\db\backup.sql

net use x: \\PC名\共有名 パスワード /USER:ユーザ名

copy C:\保存場所\DB保存名.dat X:\共有内保存フォルダ

net use x: /DELETE /yes

※ 3600 は タイムアウト設定

関連する情報

バックアップしたデーターベースを元に複製データベースを作成する :[SQL] リストア

関連する記事

ピンポイントですが、SQLServer 2008 は SQLServer 7.0 のデータをロード出来ないのです



posted by lightbox at 2012-12-11 14:05 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2012年06月06日


ピンポイントですが、SQLServer 2008 は SQLServer 7.0 のデータをロード出来ないのです

SQLServer 2005 までは SQL の RESTORE でふつうにロードできます。但し、SQLServer 2005 では、VIEW に問題があって、SQLServer 2008 にアップグレードすると動くようになるのですが・・・・。今回データを再ロードしようとしたら 『互換性がありません』という主旨のエラーが出ました。世間にさすがに例が無くってあわてましたが、自分のやった手順を思い出して、たぶんそれに違い無いという事に。

検証は明日です。
検証しました。

結局、自分のPC に SQLExpress 2005 がインストールされているので、まずそこへ RESTORE しました。その後、いろいろメンテナンス( 必要無いデータを削除 )してから BACKUP しました。そのファイルを SQLExpress 2008 に RESTORE して事無きを得ました。

※ データが大き過ぎてタイムアウト設定が必要でした
( 以下は思い切って大きくしています )

--------------------------------------------------
sqlcmd -E -S .\SQLEXPRESS -t 3600

use master
go

DUMP TRANSACTION データベース名 WITH NO_LOG
go

DBCC SHRINKDATABASE (データベース名)
go

use データベース名
go
EXEC sp_updatestats
go
--------------------------------------------------

RESTORE
FILELISTONLY 
FROM DISK = 'ファイルのパス'

で、BACKUP されたフォルダのパスをチェックして、PC のそのフォルダを作っておけば以下のコマンドで簡単にリストアできます( DB は存在しない状態で )

RESTORE DATABASE データベース名
FROM DISK = 'ファイルのパス'

※ いろいろ変更してロードする場合はこちら




タグ:トラブル
posted by lightbox at 2012-06-06 23:55 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2012年04月10日


SQLExpress2005 で副問い合わせを含む VIEW が異常終了しました

結論として、SQLExpress 2008 で正しく動作するようになりました。

元々 SQLServer7 からの移行なので、経験のある SQLExpress2005 を Windows Server 2008 に
インストールしたのですが、VIEW が正しく実行されずに原因も不明でした。対症療法としては、
select 構文では正しく実行されるので from に副問い合わせとして元の select 構文を指定
する事でなんとかなるとは思いますが、SQLExpress 2008 にアップグレードする事が根本的な
解決方法のようです。

アップグレードは特に何の問題も無く実施され、別名もそのまま移行されて使用可能な状態です。

構成マネージャ

SQLExpress2005 では、C:\Windows\System32\mmc.exe /32 "C:\Windows\system32\SQLServerManager.msc"
となっていましたが、C:\Windows\System32\mmc.exe /32 "C:\Windows\system32\SQLServerManager10.msc"
とすると新しい構成マネージャが起動可能です



関連する記事

SQLExpress2005設定


タグ:トラブル
posted by lightbox at 2012-04-10 16:43 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2011年03月01日


Microsoft SQLExpress : sa に空のパスワードを設定する方法

ALTER LOGIN sa WITH CHECK_POLICY = OFF
ALTER LOGIN sa WITH PASSWORD = ''

CHECK_POLICY = OFF を実行しない場合は、以下のようなメッセージが表示されます

メッセージ 15118、レベル 16、状態 1、サーバー VPC-028\SQLEXPRESS、行 1
パスワードの検証に失敗しました。このパスワードは Windows のポリシーで指定された
強力なパスワードの基準を満たすほど複雑ではありません。
関連する Microsoft ドキュメント パスワード ポリシー ALTER LOGIN (Transact-SQL) 強力なパスワード プログラムによるパスワードの変更 関連する Microsoft ダウンロード Microsoft SQL Server 2005 Express Edition SP4 Microsoft SQL Server 2005 用 Feature Pack 関連する記事 SQLExpress 2005 の接続設定
LoginMode のあるレジストリを開くスクリプト

ログインモード設定 ( Windows 認証 : 1、混合モード認証 : 2 )
別名が定義された場所を開くスクリプト

バージョン文字列 のあるレジストリを開くスクリプト

以下 2005
リリースSqlservr.exe
RTM2005.90.1399
SQL Server 2005 Service Pack 12005.90.2047
SQL Server 2005 Service Pack 22005.90.3042
SQL Server 2005 Service Pack 32005.90.4035
SQL Server 2005 Service Pack 42005.90.5000
関連する Microsoft ドキュメント

SQL Server のバージョンとエディションを識別する方法


posted by lightbox at 2011-03-01 11:25 | SQLExpress | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり