• 締切済み

SP2? スクリプト生成が遅くなった

SP2? スクリプト生成が遅くなった スクリプト生成にものすごく時間がかかるようになりました。 見てるとストアドや関数はそれほどでもないのですがテーブルは極端に遅い気がします。 テーブル数は200程度なのですが10秒以下で成功メッセージが出るものと1テーブルに2分以上かかることもあります。 前回作成から違いは テーブル数は倍になっているのとSP2をインストールしたくらいです。 テスト環境なのでサーバーは無負荷状態ですと実行環境に違いはないのですが 原因、早くする方法などご存知の方居ませんか?

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

答えにはなっていないのですが。。 確かにスクリプト生成はSP2から遅くなりました。 ・それまでは複数のテーブルを指定しても一括で属性情報を取得していたのに、テーブル毎に取得するようになった ・拡張プロパティやデフォルト制約の情報をカラム単位で取得するようになった 結果、SSMSが投げるクエリの数は以前の軽く10倍以上です。 何か不都合があったのかもしれませんが、詳細はわかりません。その割に常識レベルのテーブルでは同じスクリプトが生成されます。 悩ましいのは、拡張プロパティや外部制約などのスクリプト生成オプションをオフにしても、取得を省略してくれないことです。

smx2819
質問者

お礼

やっぱりSP2ですか・・・ あまりに遅いので処理中に質問投げてたのですが 質問後にサーバーはアップしていないと気付き実行してみました。 すると初期の処理対象数取得時にかなり時間がかかりましたが 各メンバーは一瞬で終わってしまった。 自分の端末は70%以上完了してましたが有無を言わさず「チャンセル」

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • データベースの移行

    テスト環境から本番環境のサーバーに、複数のデータベースを移行しようと思っています。データベースやテーブルやストアドプロシージャは必要ですが、データは必要ありません(あってもいいですが、データ量が多いので時間がかかりそうです)。 本番環境にデータベースだけ作成し、テスト環境のデータファイルと入れ替えるという手も考えたのですが、双方の環境でデータベースのファイルの位置が違うので、この手は使えませんよね。。。 そうなると他の方法としては手動で一つ一つデータベース・テーブル・ストアドプロシージャのスクリプト(スクリプト作成で作ったもの)を流すしかありませんか?

  • LPとSPの違いってありますか?

    HDD+DVDでハードからDVDビデオを作製しようと考えているのですがDVDに焼く際にLP(標準)とSP(2倍)ってありますよね?(逆だったらすみません) その2種類の画質的な違いってあるのでしょうか? 例えば画素数が落ちてしまったりだとか、しっかりと焼けないことがあるとか、劣化が早いとか・・・ 何かそのようなことが起こることを知っている方は教えてください。

  • ストアドプロシージャの多用でパフォーマンスは向上するか?

    抽象的な話で非常に恐縮なのですが、 ストアドの中で行うSELECTやINSERTなどの処理を 更にストアドにすることで、パフォーマンスは向上するのでしょうか? たとえば、「テーブルAの内容を取得してテーブルBにINSERT」というストアドがあったとします。 この場合、以下のような記述になると思います。 ---------------------------------- SELECT (略) FROM TBL_A INSERT INTO TBL_B (略) ---------------------------------- このSELECT及びINSERT処理をそれぞれストアド化し、 ---------------------------------- EXEC SP_A (略) EXEC SP_B (略) ---------------------------------- とすると、わずかなりでも処理速度は向上するのでしょうか? (極論ですが、全てのSELECT、INSERT、UPDATEをストアド化するのがベストなのでしょうか?) 現在、数百万~数千万件のレコードを処理するストアドを作成中で、処理時間の短縮が大きな課題になっています。 1件あたりの処理が0.1秒でも縮めば、10万件の処理時間は10,000秒(=3時間弱)の短縮になり、決して馬鹿にはできません。 妙な質問ですが、良策があればご教授ください。

  • サーバ移行に伴うデータベース移行

    下記の様に旧サーバから新サーバへDB環境を移行しようと思っています。 旧サーバ:OS…WindowsNT、  DB…SQLserve7.0 新サーバ:OS…Windows2003、 DB…SQLserve2000(SP3) DTSを使用し、既存データベースを新サーバへインポートしていて、テーブルは正常に移行できたのですがストアドプロシージャ(SP)やビュー等が新旧サーバで同じようになりません。(ユーザ作成分しか移行できず) イメージではDTSを使用すればデータベースのテーブルからSPから全て同一の項目数になると思っていたのですが… SPなどはどうやって移せばよいでしょうか? どなたか教えて下さい。 宜しくお願い致します。

  • ストアドプロシージャ

    以下のような事が行いたいのですが、うまくいきません。  <テーブル1>   id  計算式    1  注文数×単価    2  在庫数×単価  <テーブル2>    No. 注文数 在庫数 単価    A   50   20  500    B   70   85  860 ここで、テーブル1より計算式を検索し、 その計算式をもとにテーブル2のデータを計算したいのです。 ストアドプロシージャ等を使用すれば出来るのかとおもったのですが、 どうしてもうまくいきません。 このようなことはできないのでしょうか? 開発環境  ORACLE 8.1.7

  • ストアドの一時テーブル格納について

    ストアドの一時テーブル格納について SQLServer2000を使用しています。 sp_help_jobの結果セットを一時テーブルにいれたく、 以下のようなスクリプトを作成しています。 -------------- create table #tbl (  列名  ・  ・  ・ ) Insert into #tbl msdb.dbo.sp_help_job -------------- スクリプトを実行すると、以下のエラーでInsertに失敗します。 「メッセージ 8164、レベル 16、状態 1、プロシージャ sp_get_composite_job_info、行 72 INSERT EXEC ステートメントは入れ子にはできません。」 上記の改善策についてアドバイス頂けないでしょうか。 よろしくお願いします。

  • VB6.0上でExcelオブジェクトを生成

    質問です。 VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As Excel.Application … Set xlApp = CreateObject("Excel.Application") と その2 Dim xlApp As Object … Set xlApp = CreateObject("Excel.Application") と、どちらが良いのでしょうか? 開発環境は Win XP SP2 VB 6.0 Excel 2003 実行環境は Win 98 SE VB 6.0(ランタイムのみ) Excel 2000 SR-1 です。 開発環境ではその1、その2ともOKなのですが、 実行環境ではその2のみがOKです。 参考書にはその1が書かれていますが、その2を使うことによって何か不具合や都合の悪いことが起こりうるのでしょうか? あるいは当方の見当違いで根本的に何かが間違っているのでしょうか? どんな些細なことでも結構ですので宜しくお願いします。

  • スラッシュ"/"で始まるテーブル名も、sp_spaceusedのループ処理に取り込みたい

    お世話になります。はまってしまい、お知恵を貸して下さい。 SQL Server2000環境です。 データの月ごとの増加量が、想定よりも多いので、 各テーブルのサイズを出し、それをたし合わせることで、実際にテーブルが占める分を計算したいです。 下記の質問の答えを参考に、ストアドプロシージャにして実行しました。 http://okwave.jp/qa3291219.html ******************************************** declare cur cursor for select [name] from dbo.sysobjects where xtype='U'; declare @tableName nvarchar(1552) open cur; fetch next from cur into @tableName; WHILE @@FETCH_STATUS = 0 BEGIN exec('sp_spaceused ' + @tableName) FETCH NEXT FROM cur into @tableName; END; CLOSE cur; DEALLOCATE cur; ****************************************** ほとんどのテーブルについては、答えが得られるのですが、 スラッシュ始まりのテーブルは、構文エラーになってしまいます。 スラッシュ始まりのテーブルが100個近くあり、(/BDL/MSGLOG など) 出切ればループ処理に組み込みたいです。 スラッシュ始まりのテーブル1つに対しては、 'sp_spaceused' + '[テーブル名]' と、大カッコ・シングルクォーテーションで囲めば、テーブル名として処理できたのですが。。 スラッシュ始まりのテーブルについても、FETCHで一行ずつ処理してくれるようにするには、 どうしたらいいでしょうか? すみませんが、よろしくお願いします。

  • バックアップのメール通知について

    教えてください。 Linux環境下でバックアップファイルがあるディレクトリに毎日生成されています。 バックアップの確認をメールで通知するように設定したいです。 前日よりも新しいファイルが生成されていたら成功という内容の 通知を行い、 失敗したらエラーの内容を通知するようにしたいです。 シェルスクリプトでどのように書けばいいか教えていただけますでしょうか?

  • 関数の実行について

    AccessからSQL Server2005へ作り変えています。 質問させていただきます。 テーブル名「伝票」の中身    製品  在庫数  注文数       A    12     10         B    11     13         C    16     11     このテーブルから在庫数と注文数を比較して、 注文数が在庫数以内の場合は・・・OK 注文数が在庫数以上の場合は・・・NG イメージとしては以下のようにななります。    製品  在庫数  注文数  判定     A    12     10    OK     B    11     13    NG     C    16     11    OK これをAccessのクエリで表現する場合は、判定にVBAを使っています。 (テーブルに判定という項目はありません) SQL Server2005ではスカラ値関数を作って、それをストアドプロシージャで 呼び出せば可能ですよね・・・? そこで以下の悪戦苦闘しながら以下のスカラ値関数を作りました。    ALTER FUNCTION dbo.HANTEI (@ZAIKO int, @TYUMON int, @HANTEI nvarchar(2)) RETURNS nvarchar(2) AS BEGIN IF @ZAIKO >= @TYUMON SET @HANTEI = 'OK' ELSE SET @HANTEI = 'NG' RETURN @HANTEI END これをストアドプロシージャで実行すると、パラメータで指定したHANTEI がテーブルにないので エラーになります。テーブルに判定に相当する項目を用意すると正しく結果が出ます。 テーブルに判定項目を用意せずに正しい結果を出したいのですがどうすればよいですか? よろしくお願いします。