1

列の名前変更に問題があります。私のコードは次のとおりです。

Using m_cnInterval
    Using m_CMDInterval = New SqlCommand()
        m_CMDInterval.Connection = m_cnInterval
        m_CMDInterval.CommandText = "EXEC sp_rename '[" & strClassColumnName(intClassArrayPosition) & "]', '[" & strRenameClassColumn(intClassArrayPosition) & "]', 'COLUMN'"
        m_CMDInterval.CommandType = CommandType.Text
        m_CMDInterval.ExecuteNonQuery()
    End Using
End Using

次のようなエラー メッセージが表示されます。

「パラメーター @objname があいまいであるか、要求された @objtype (列) が間違っています」

このエラーは、一重引用符と括弧の使用方法に関連していると思います。列名に変数を使用する場合、別の構文はありますか?

ありがとう

4

2 に答える 2

1

最初の引数でテーブルへの修飾パスを指定する必要があります。次のようなことを試してください:

m_CMDInterval.CommandText =
        String.Format("EXEC sp_rename '[{0}].[dbo].[{1}].[{2}]', '{3}', 'COLUMN'",
                      "databasename",
                      "tablename",
                      "old column name",
                      "new column name")

変数で値を入力します。新しい名前に角かっこ [] を含めてはなりません。そうしないと、新しい名前の一部になります (少なくとも、SSMS でテストしたときに見たものです)。

于 2012-11-02T19:19:11.263 に答える
0

私は実際に以下を使用することになりました:

m_CMDInterval.CommandText = "EXEC sp_rename 'Interval.[" & strClassColumnName _
(intClassArrayPosition) & "]', '" & strRenameClassColumn(intClassArrayPosition) _
 & "', 'COLUMN'"

列名でテーブル名を指定する必要がありました。列名にスペースが含まれているため、括弧を使用しました。名前にスペースが含まれていても、名前を変更する列名に括弧を使用する必要はありませんでした。

助けてくれてありがとう!

于 2012-11-02T23:31:57.620 に答える