【SQLServer】ビューとストアドをリフレッシュする

SQLSQL Server
この記事は約2分で読めます。
スポンサーリンク

 

テーブル定義を変更した場合は、Viewのメンテナンスを忘れずに

基本的にViewの項目取得に*(アスタリスク)を使用しなければ影響はないと思いますが、もしアスタリスクがある場合は,Viewが参照しているテーブルの定義を変更してしまうと、Viewとカラム(項目)がずれてしまったり、予期せぬことが発生してしまいます。エラーが出ればすぐに気づきますが、最悪エラーも出ずに項目がずれたままViewの値が取得されることもあります。

なので!!

  • ViewでSELECT * FROM xxxxなどのアスタリスクは使わない!
  • テーブル定義を変更した場合は念のためsp_refreshviewでViewをリフレッシュする。

この二つは、守ったほうがいいと思います。

Viewをリフレッシュする(sp_refreshview)

システム切替などでテーブル定義を変更した場合は、念のため以下のコマンドですべてのviewをリフレッシュしたほうがいいです!

DECLARE @sql NVARCHAR(MAX) = ''; 
SELECT @sql += 'EXEC sp_refreshview '''+[name]+''''+CHAR(10) FROM sys.objects 
WHERE [type] IN ('V'); 
SELECT @sql

ストアドプロシージャーをリフレッシュ(sp_recompile)

ストアドプロシージャーも同様に以下のコマンドですべてのストアドプロシージャーをリフレッシュできます。

DECLARE @sql NVARCHAR(MAX) = ''; 
SELECT @sql += 'EXEC sp_recompile '''+[name]+''''+CHAR(10) FROM sys.objects 
WHERE [type] IN ('P'); 
SELECT @sql 

EXEC (@sql);

このコマンド自体はすぐに終わるので、DB定義の変更を伴う大きな切り替えがある場合は、実行しておいて損はないと思います。

 

WordPressを使うならロリポップ!
簡単インストール完備で楽々スタート!

コメント

タイトルとURLをコピーしました