2017-04-22 22 views
3

SQLサーバーで奇妙な問題が発生しました。 "SPH_F2V_VEB_FIN-04-GLA-07 - GL転載を取り消してキャンセルしました"という名前のビューがありますが、次のクエリを実行したときに名前が変更された定義があります。SQL Server - 定義のビュー名が実際のビュー名と異なる

SELECT object_definition (OBJECT_ID(N'dbo.SPH_F2V_VEB_FIN-04-GLA-07 - Reversed and Cancelled GL Postings')) 

出力:あなたが気付いた場合

CREATE VIEW [dbo].[SPH_F2V_VEB_FIN-04-GLA-07 - Reversed & Cancelled GL Postings] AS 

SELECT 
    --GL1.[Business Unit], 
    GL1.[Company Code], 
    GL1.Description, 
.... 

、名前に変更 - を変更し、 "SPH_F2V_VEB_FIN-04-GLA-07逆&キャンセルGLポスティング" "と" "&"。最初はそれは、「と」に関連するSQL変換の問題か何かのように見えたが、私は「と」と「&」で複数のビューを試してみましたが、彼らが期待どおりに動作しているように見えました。

これはどうして起こる可能性がありますか?私はDBがこれをどのように許しているかについてもかなり懐疑的です。どんなアイデアも深く感謝しています!

+0

@GordonLinoff - 私はdbをチェックしましたが、 '&'のあるビューは存在しません。だからこそ、それは一つの視点です。 –

答えて

5

これは、sp_renameを使用してビューの名前を変更した場合に発生します。

名前を変更するには、ドロップして作成することをお勧めします。ストアドプロシージャ、関数、ビュー、またはトリガ sys.sql_modulesカタログビューの定義 列に対応するオブジェクト名の名前を変更しないであろう名前を変更

。したがって、これらのオブジェクト型の名前を変更するためにsp_renameを使用しないように、 をお勧めします。その代わりに、 をドロップし、その新しい名前でオブジェクトを再作成します。

+0

あなたは正しいです。そう、彼らは言う、**警告は呪文の後に来る** –

関連する問題