1

新しい列を追加した 2 つのテーブルがあります。列名は LocationKey です。ストアド プロシージャの変更でその列を使用しようとするたびに、以下のエラー メッセージが表示されます。戻って、列名をコピーして貼り付けました。正確です!両方のテーブルにある必要がある場所です。

 Msg 207, Level 16, State 1, Procedure usp_MY_Stored_procedure, Line 122
Invalid column name 'LocationKey'.

私はグーグルで検索しましたが、思いついたものは何も問題を解決していません。何が欠けているのでしょうか?

私が読んだリンク:1.テーブルの作成後に挿入を呼び出すと、「無効な列名」エラーが発生する

  1. http://social.msdn.microsoft.com/Forums/sqlserver/en-US/87ef4b02-6a57-4cae-9e0c-bf705f3c2bec/invalid-column-name-after-adding-new-column

  2. http://www.mssqltips.com/sqlservertip/2591/troubleshooting-intellisense-in-sql-server-management-studio-2012/

これをさらにトラブルシューティングするためにできることは何でも大歓迎です。

-- DROP LEADING DOUBLE QUOTE (and PhotoUrl column)
    INSERT INTO [table2](

        [Comment1]
        ,[Comment 2]
        ,[Comment 3]
        ,[Comment 4]
        ,[Name]
        ,[PhotoUrl]
        ,[LocationKey]

        )



    SELECT 
         [Comment1]
        , [Comment 2]
        , [Comment 3]
        , [Comment 4]
        , SUBSTRING([Name],1,100)-- Limit to 100 chars
        , [PhotoUrl]  -- varchar(MAX)
        , [LocationKey]


    FROM [table1]
4

3 に答える 3

2

他の回答のコンマの問題が質問の単なるタイプミスである場合、他に 2 つの考えが思い浮かびます。

  1. SP は、おそらく同じテーブル構造を持つ (更新されていない) 別のデータベースに切り替えていますか?
  2. データベース (開発、運用など) の複数のコピーがあり、SP を変更しようとしている場所とは別のサーバーに列を追加しましたか?

また、SELECT ステートメントをコピーして新しいクエリに貼り付け、実行してみることができます。無効な列エラーが Table1 または Table2 から発生しているかどうかがわかります。

別の考え-テーブルに直接ではなく、ビューを介してクエリを実行している可能性がありますか? ビューが SCHEMABINDING で定義されていない場合、ビューを更新して新しいフィールドを表示する必要があります。

于 2013-08-13T15:09:47.347 に答える
2

構文が正しくないように見えるため、SQL を変更する必要があります。これを試してください...

INSERT INTO [table2](

        [Comment1]
        ,[Comment 2]
        ,[Comment 3]
        ,[Comment 4]
        ,[Name]
        ,[PhotoUrl]
        ,[LocationKey]

        )



    SELECT 
         [Comment1]
        , [Comment 2]
        , [Comment 3]
        , [Comment 4]
        , SUBSTRING([Name],1,100)-- Limit to 100 chars
        , [PhotoUrl]  -- varchar(MAX)
        , [LocationKey]


    FROM [table1]

編集:コメントに基づく

さまざまな環境を色分けしたい場合は、このヒントを使用できますhttp://evanon.net/blog/post/2011/04/16/Colour-coded-Environments-in-SQL-Server-Management-Studio-2008 .aspx

于 2013-08-13T15:04:40.370 に答える
0

あなたの構文は間違っています。先頭のコンマを削除し、括弧を追加します。以下の更新されたコードを参照してください。

INSERT INTO [table2]
(
  [Comment1]
 ,[Comment 2]
 ,[Comment 3]
 ,[Comment 4]
 ,[Name]
 ,[PhotoUrl]
 ,[LocationKey]
)

SELECT
  [Comment1]
 ,[Comment 2]
 ,[Comment 3]
 ,[Comment 4]
 ,SUBSTRING([Name],1,100)
 ,[PhotoUrl]
 ,[LocationKey]
FROM [table1];
于 2013-08-13T15:05:59.770 に答える