C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: SqlServer2005のストアドプロシージャについて


(過去ログ 45 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■24104 / inTopicNo.1)  SqlServer2005のストアドプロシージャについて
  
□投稿者/ 小春 (80回)-(2008/08/27(Wed) 22:13:59)

分類:[データベース全般] 

2008/08/28(Thu) 10:45:36 編集(投稿者)
2008/08/28(Thu) 10:45:27 編集(投稿者)

御世話になっております。

SqlServer2005のストアドプロシージャの仕組み?で悩んでおります。

A(サーバ名はSVAとする)という場所から、バックアップを取り、
B(サーバ名はSVBとする)という場所に、Aのバックアップデータを復元した場合、
Bで復元したデータベースのストアドプロシージャをコンパイルしようとすると、
以下のエラーが発生します。

--------------------------------------------------------------------------------------------------------------------------------------------
メッセージ 7202、レベル 11、状態 2、プロシージャ usp_hogehoge、行 72
sys.servers にサーバー 'SVA' が見つかりませんでした。正しいサーバー名を指定したかどうかを確認してください。必要であればストアド プロシージャ sp_addlinkedserver を実行し、サーバーを sys.servers に追加してください。
--------------------------------------------------------------------------------------------------------------------------------------------

リンクサーバの構成を取っている訳ではないので、
sp_addlinkedserverを実行してsys.serversのビューに追加したくありません。
ただ、SVAのバックアップを復元してSVBで動作したいだけなんですが…。

バックアップ時の内容に、ストアドプロシージャとサーバ名が紐付いているようなものがあるのでしょうか?
また、バックアップの取り直しなのか、もしくは他の回避策がありますか?

以上、宜しくお願い致します。

#エラーのストアド名をusp_hogehogeに変更しました ;^^)
引用返信 編集キー/
■24118 / inTopicNo.2)  Re[1]: SqlServer2005のストアドプロシージャについて
□投稿者/ Mr.T (275回)-(2008/08/28(Thu) 01:42:42)
Mr.Tです、こんにちは。

ストアドプロシジャ内で、別のストアドプロシジャを呼んでいる場合に、こんな
書き方をしていたら、アウトではないかと思いますが。

exe SVA.dbo.targetProcedure ****
#スキーマは勝手にdboにしました

つまり、サーバ名まで指定してたら、コンパイルできないような。

ともかく、
>uspSHK7420_RoumuhiKeisan、行 72
ってかいてあるんだから、そこ周辺のソースはのせてもよいのでは。

引用返信 編集キー/
■24135 / inTopicNo.3)  Re[2]: SqlServer2005のストアドプロシージャについて
□投稿者/ 小春 (81回)-(2008/08/28(Thu) 10:43:42)
2008/08/28(Thu) 10:46:09 編集(投稿者)
Mr.Tさん ご返信ありがとうございます。

■No24118 (Mr.T さん) に返信
> Mr.Tです、こんにちは。
> 
> ストアドプロシジャ内で、別のストアドプロシジャを呼んでいる場合に、こんな
> 書き方をしていたら、アウトではないかと思いますが。
> 
> exe SVA.dbo.targetProcedure ****
> #スキーマは勝手にdboにしました
> 
> つまり、サーバ名まで指定してたら、コンパイルできないような。
> 
> ともかく、
> >usp_hogehoge、行 72
> ってかいてあるんだから、そこ周辺のソースはのせてもよいのでは。

そこ周辺のソースは以下のINSERT文になります。

    BEGIN TRY
        INSERT INTO hoge
                  ( 項目1
                  , 項目2
                  , お金
                  )
             SELECT @inHoge
                  , 項目2
                  , SUM(お金)
               FROM TableHoge
              GROUP BY 項目2;

    END TRY
    BEGIN CATCH
    	SET @otMsg = dbo.ufcErrorMessage()   <--エラー情報を取得する、スカラ値関数です。
        RETURN
    END CATCH

ufcErrorMessageのみ、スキーマ指定しており、
他はサーバ名まで指定しているところはありません。

ストアドプロシージャとサーバ名が
システムテーブルでリンクしている情報があるのでしょうか?
よろしくお願い致します。m(_ _)m

引用返信 編集キー/
■24139 / inTopicNo.4)  Re[3]: SqlServer2005のストアドプロシージャについて
□投稿者/ Mr.T (276回)-(2008/08/28(Thu) 11:17:23)
72行目ってどこなんですか?

> そこ周辺のソースは以下のINSERT文になります。
>
> BEGIN TRY
> INSERT INTO hoge
> ( 項目1
> , 項目2
> , お金
> )
> SELECT @inHoge
> , 項目2
> , SUM(お金)
> FROM TableHoge
> GROUP BY 項目2;
>
> END TRY
> BEGIN CATCH
> SET @otMsg = dbo.ufcErrorMessage() <--エラー情報を取得する、スカラ値関数です。
> RETURN
> END CATCH
>
> ufcErrorMessageのみ、スキーマ指定しており、
> 他はサーバ名まで指定しているところはありません。

上記のストアドをそのままそっくり、SVBで作り直しても同じエラーになりますか?

引用返信 編集キー/
■24148 / inTopicNo.5)  Re[4]: SqlServer2005のストアドプロシージャについて
□投稿者/ 小春 (82回)-(2008/08/28(Thu) 11:46:00)
Mr.Tさん ご返信ありがとうございます。

■No24139 (Mr.T さん) に返信
> 72行目ってどこなんですか?
72行目は、

    BEGIN TRY
<--72行目
        INSERT INTO hoge
                  ( 項目1
                  , 項目2
                  , お金
                  )
      :
      :
になります。

> 上記のストアドをそのままそっくり、SVBで作り直しても同じエラーになりますか?

上のストアドをそのままそっくり、SVBに作り直すのは難しいです。
このストアドは、SVA、SVBの個々の環境では正常に動作(内部の処理も)しますので、
個々の環境では問題ないです。
SVAのバックアップをSVBに復元した場合だけ、この現象が起きます。

なので、テーブル名、項目名をSVAから復元したものを使用し、
上記に似たストアドを作っても同様な現象が起きちゃいます(T_T)

引用返信 編集キー/
■24156 / inTopicNo.6)  Re[5]: SqlServer2005のストアドプロシージャについて
□投稿者/ Mr.T (277回)-(2008/08/28(Thu) 13:54:48)

こちらでも同じように別データベースのバックアップを復元してみましたけど、
そんな現象は出ないです。

> 上のストアドをそのままそっくり、SVBに作り直すのは難しいです。
> このストアドは、SVA、SVBの個々の環境では正常に動作(内部の処理も)しますので、
> 個々の環境では問題ないです。

つまり、同じSQLで作成したものならば、問題なく動くというわけですね。

現状ぱっと思いつくところはないのですが、他のストアドでも同じ現象というのは
でてないですか?
このテーブルについてのInsert文だけがエラーになるのですか?

Insert対象となっているテーブルに、サーバー名が関係しているような項目が設定
されていたりはしませんか?


引用返信 編集キー/
■24162 / inTopicNo.7)  Re[6]: SqlServer2005のストアドプロシージャについて
□投稿者/ 小春 (83回)-(2008/08/28(Thu) 15:23:21)
Mr.Tさん ご返信ありがとうございます。

No24156 (Mr.T さん) に返信
> こちらでも同じように別データベースのバックアップを復元してみましたけど、
> そんな現象は出ないです。
お忙しいところ、わざわざ試していただいてありがとうございます。m(_ _)m

> 現状ぱっと思いつくところはないのですが、他のストアドでも同じ現象というのは
> でてないですか?
> このテーブルについてのInsert文だけがエラーになるのですか?
> Insert対象となっているテーブルに、サーバー名が関係しているような項目が設定
> されていたりはしませんか?
!!!!!( ̄□ ̄;)
Mr.Tさんに指摘をされ、テーブルにはサーバー名が関係しそうなものはないのですが、
ビューが結合されてて、そのビューの中身をのぞくと、シノニムがいました!
このシノニムにサーバ名が付加されている可能性が非常に高くなりました!

すぐには試せない環境にいるので、本日の帰社後、
試した結果をご報告させて頂きます。その後、解決済みとさせてください。

Mr.Tさんありがとうございましたm(_ _)m
引用返信 編集キー/
■24179 / inTopicNo.8)  Re[7]: SqlServer2005のストアドプロシージャについて
□投稿者/ 小春 (84回)-(2008/08/28(Thu) 20:42:24)
ビンゴでした。
Mr.Tさんありがとうございましたm(_ _)m

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -