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