SQL Serverバージョンアップ時の問題と解決方法について pptx
Document Sample


SQL Serverバージョンアップ時の問題
と解決方法について
稲垣 智浩(CatTail)
1
はじめに
• 弊社は生産管理パッケージを開発/販売してします。
• 元々はメインフレームやオフコンで開発していたシステムをWindows
に移植し、その際、データベースとしてはSQL Serverを選択しました。
• その当時のバージョンはSQL Server 6.0/6.5で、以降、SQL Serverが
バージョンアップする度に対応を行ってきました。
• 今回は、その経験を元に対策した方法を発表したいと思います。
2
SQL Server 6.0/6.5から7.0以降へ
• 項目名に記号類が使えなくなった。
項目名の先頭が全角の数字でもエラーになる。(漢数字はOK)
– 項目名を変更して対応。
例)図# → 図番
• ソート順が不定になった。
– ORDER BYを必ず指定するようにプログラムを変更。
• インストール時のデフォルトの照合順序がバイナリ順から
JAPANESE_CI_ASに変更された。
– インストール時に「バイナリ順」を指定して対応。
3
SQL Server 2005
• DB-Libraryがサポート外になった。
– 一時的な対応として、NTWDBLIB.DLLを%WINDIR%\SYSTEM32フォルダにコピー。
これにより、DB-LibraryでSQL Server 2005にアクセスできるようになる。
– 根本的な対応としては、ADOやADO.NETを使ってSQL Serverにアクセスする。
• 外部結合で *= や =* がサポートされなくなった。
– プログラムをLEFT OUTER JOIN/RIGHT OUTER JOINに変更。
– プログラムが変更できない場合、データベース互換レベルをSQL
Server 2000(80)に変更することで対応可能。
※この場合、DMV等SQL Server 2005の機能が使えなくなるので注意。
• DTSがサポート外になった。
– MSのダウンロードセンターから、Microsoft SQL Server 2005 用 Feature Packの中
にあるMicrosoft SQL Server 2000 DTS デザイナ コンポーネントをダウンロードして
インストールする。
http://www.microsoft.com/downloads/details.aspx?FamilyID=50b97994-8453-
4998-8226-fa42ec403d17&DisplayLang=ja
4
SQL Server 2005 Tips
• Windows Vistaでコンピュータ名に小文字が含まれる場合。
– 照合順序がバイナリ順だとインストール時にエラーが発生する。
対策としては、コンピュータ名を全て大文字に変更する。
http://support.microsoft.com/kb/929105/ja
• ミラーリングについて
– ADOでも対応可能。
その場合、OLE DBプロバイダとしてSQLOLEDBではなくSQLNCLIを使う。
– 障害時にフェイルオーバーしない。(タイムアウトが発生する)
→ ConnectionTimeout、CommandTimeoutの値を増やす。
5
その他Tips
• SQL Serverの権限について。
– あくまでもSQL Serverのサービスアカウントの権限で動作します。
– 例えばサービスアカウントとしてローカルシステムアカウントを指定した場合、別コ
ンピュータへのアクセスはできません。
その他Tips
• SQL Serverインストール後にコンピュータ名を変更した場合。
– select @@servername
– @@servernameの内容が実際のコンピュータ名と違う場合、sp_dropserver
@@servername を実行してサーバー情報を削除。
その後、sp_addserver ‘実際のコンピュータ名’, local で実際のコンピュータ名を登
録します。
– その後、SQL Serverのサービスを再起動してください。
その他Tips
• BCPでインポートするテキストファイルに項目の途中に改行コードが含
まれている場合の対応。
– フォーマットファイルを作成することで正常にインポートできます。
項目名 データ型
郵便番号 VARCHAR(8)
住所 NVARCHAR(255)
改行コード
その他Tips
• フォーマットファイルを指定しない場合
bcp データベース名.dbo.住所一覧 in 住所一覧.txt -S . -t , -c
– 列の間に改行コードが含まれていると、その行はスキップされる。
• フォーマットファイルを指定した場合
bcp データベース名.dbo.住所一覧 in 住所一覧.txt -S . -f 住所一覧.fmt
– 列の間に改行コードが含まれていても、正常にインポートされる。
改行コード
9
最後に
• PassJのメーリングリストやMSDNフォーラムで質問があった場合、
(自分が回答できる内容であればですが)積極的に回答していますの
で、 PassJのメーリングリストやMSDNフォーラムを活用してください。
(あと、某匿名掲示板のデータベース板でも回答してたりしますw)
以上、ご清聴ありがとうございました。
Get documents about "