FC2ブログ
32bit版のSqlServerでAWEを使ってみる
折角、OSが64bitで尚且つ、物理メモリも多く積んでるのにアプリケーションが32bitじゃメモリを有効に使えない。4GBの壁があるから。

でも、SqlServerにはAWEという機能があって、これを使うと4GBの壁を超えて物理メモリを使えるようになる。
以下、設定方法(2005の場合)

1. SqlServer を起動するユーザー(アカウント)に対して次の特権をローカルセキュリティポリシー
から割り当てる。
 ・メモリ内のページロック

2. SqlServerのサーバーのプロパティを開き、メモリ設定で、AWEを有効にするチェックをいれる

3. サーバーを再起動する。

これでOK。AWEが有効になっているかは、
DBCC MEMORYSTATUS
を実行してAWE Allocated の項目が0以外ならOK。

詳細はここの方のブログを参照して。
素晴らしい記事です。
http://engineermemo.wordpress.com/2010/12/04/%E3%81%82%E3%82%89%E3%81%9F%E3%82%81%E3%81%A6-sql-server-%E3%81%A8-awe-%E3%81%9D%E3%81%AE-1/
スポンサーサイト
SQLServer のデータベースダイアグラムをコピー
データベースダイアグラムって便利だよね・・・('A`)y~~~

-- SQLServer 2005 の場合ね。他のバージョンも似たようなものだろうよ

truncate table DEST_DBNAME..sysdiagrams

-- ID列のINSERTを許可する!
SET IDENTITY_INSERT DEST_DBNAME..sysdiagrams ON

insert into DEST_DBNAME..sysdiagrams (name, principal_id, diagram_id, version, definition)
select name, principal_id, diagram_id, version, definition from SRC_DBNAME..sysdiagrams

SET IDENTITY_INSERT DEST_DBNAME..sysdiagrams OFF
msbuild ちゃんは優秀
いい加減、jenkins とか使って継続的インテグレーションってのをやってみたい年頃になったわけですよ。
で、MS製品だとどうやるのかなーと思って色々と調べたのだけど、DBのマイグレーションの方法が載ってない('A`)
てか、VSのデータベースプロジェクトってコンソールからも操作できるから、これで行けるじゃんと思って実験してみた。

msbuild ちゃんに次のパラメータでコマンドを投げつける

まずはプロジェクトのビルド
msbuild "VisualStudioのDBプロジェクト.sqlproj" t:Build

続いてデプロイ
msbuild "VisualStudioのDBプロジェクト.sqlproj" t:Deploy /p:TargetConnectionString="デプロイ先の接続文字列" /p:TargetDatabase=DB名 /p:BlockOnPossibleDataLoss=false

これで完了。あとは、jenkins ちゃんのプロジェクトの設定で、上記のコマンドを実行できるようにするだけ。
で、msbuild ちゃん?がデプロイ先のDBを参照して、差分更新をしてくれるから楽ちん('A`)y~~~

・BlockOnPossibleDataLoss このパラメータがないと、列の削除を行う変更でエラーを食らう
・DBプロジェクトの拡張子は使ってるVSのバージョンで違うかも。2012以降は、sqlprojかな?
SQL Server のLinkServer と MySQL ODBC ドライバ5.2シリーズ
長いこと3シリーズを使っていたのだけどついに新しいのに切り替えるタイミングが出来たかも。

LinkServerを使ってMySQLと通信していたのだけど、5シリーズでは正常に文字列の列の取得ができなかった。
当時のODBCドライバのソースをのぞいてみたら、内部的にマルチバイト文字の扱いをUNICODEにしていて、これが
原因でエラーが出ているようだった。
SQL Server のLinkServerで、ODBCを使うときは、ANIS版じゃないと駄目なのかな?
この辺はちゃんと調査してないからわかんね。そもそもODBC直たたきのソフトって作ったことないやwww
C++でも、ADODBとか使えるしね・・・

んで、5.2シリーズからは、ちゃんとANSI版、UNICODE版が入っていて、ANSI版を使えば、LinkServerでも
正常に動作してくれるようになった。文字列関係でもエラーが出なくなって安心と('A`)y~~~
SQLServer Data Tools でのスキーマ比較
便利だね('A`)y~~~
いやマジで。

このスキーマ比較を行う際にオプションが色々とあって、危険な行為とかを抑制したり、確認作業を簡略化できるわけだ。

覚えといたほうがいいのは

・データ損失の可能性がある場合にブロックする
 これは、テーブル構成が変わる際に、もともと入っていたデータが無くなる可能性が
 あるかもよって場合に、テーブルの更新ができないようにしてくれる。
 デフォルトでONだから、問題がないときはOFFにすればテーブル構成もさくっと変えてくれる。

・スクリプトでの更新モジュール
 これは、テーブルやストアドを変更した場合に、これらを参照してるモジュール(ストアドとかね)が
 問題なく動作できるかをチェックしてくれる。
 ストアドとかに一切影響が無いような、変更だったらOFFにしても大丈夫。
 デフォルトはON。

・filegroup の配置を無視する
 テーブルやインデックス等を変更した際に、配置先のfilegroupを変更した場合に、OFFにする。
 デフォルトではONだから、filegroupを変更してもスキーマが変更されない。

TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ