2010-06-22 29 views
34

如果我嘗試執行以下查詢:我該如何解決「參數@objname不明確或聲明的@objtype(COLUMN)錯誤。」?

EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN' 

我得到一個錯誤:

Either the [email protected] is ambiguous or the claimed @objtype (COLUMN) is wrong.

我該如何解決呢?

+2

向我們展示'ENG_MYTALLY'的定義 – egrunin 2010-06-22 08:56:10

+0

在我的情況下,我得到了這個錯誤,因爲我嘗試更新的表名不存在。 – Samuel 2013-05-27 21:06:27

+0

這是由於類名(模型)名稱的衝突,當自動創建表和... – 2015-02-16 17:23:09

回答

22

堅果。幾周前,我也遇到了同樣的錯誤,在浪費了大量時間之後,我想到了如何讓它發揮作用 - 但我忘記了它。 (沒有太大的幫助,除了說是的,它可以完成。)

您是否嘗試過不同的括號組合,或使用和不使用括號?例如

EXEC sp_rename 'ENG_TEst.ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN'; 
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'; 
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', '[ENG_Test_AC_TYPE]', 'COLUMN'; 
EXEC sp_rename '[ENG_TEst].ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN'; 

如果一切都失敗了,總是有

  • 用適當的名稱
  • 複製數據在從舊錶
  • 刪除舊錶
  • 創建新表(如 「xENG_TEst」)將新表重命名爲最終名稱
+3

對我來說第二個選項的工作 – 2013-11-03 14:13:11

+1

我剛剛得到了Op的錯誤本身。當我再次運行sp_rename時,我得到了正確的錯誤:對象'BlahColumnID'無法重命名,因爲對象參與強制依賴關係。就我而言,這是因爲BlahColumnID參與了計算列功能。 – AlwaysLearning 2014-03-10 05:12:23

+1

對我來說,我不得不在第二個建議的語法前加上'[dbo] .':[[dbo]。[ENG_TEst]。[ENG_Test_A/C_TYPE]'。我特別的問題是使用實體框架的RenameColumn(),雖然它是sp_rename的包裝。 – levininja 2015-04-01 15:52:43

10

您是否在正確的數據庫中運行查詢?即

Use MyDatabase; 
GO 
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'; 
GO 
1

我也有這個問題 - 非常討厭,還沒有找到一個令人滿意的sql答案(除了涉及創建臨時表等冗長的問題),我沒有時間去探索它,結果我會喜歡。

最後,只需使用SQL Server Management Studio通過選擇表,右鍵單擊列並點擊重命名即可。 簡單!

顯然我寧願知道如何做到沒有gui但有時你只是得讓sh **完成!

+0

您可以單擊工具欄中的「腳本」圖標查看SSMS如何執行它! – 2011-03-25 12:00:26

+0

@MartinSmith你可以讓SSMS編寫通過對象瀏覽器重命名列的動作嗎?我無法弄清楚如何。我能想到的唯一方法是使用SQL Profiler來追蹤它,但這很重要。 – 2013-03-06 17:36:46

+1

@IainElder - 您可以,但您需要在設計視圖中打開表格,然後重命名該列,然後編寫更改。如果你直接在樹視圖中重命名列,那麼它只是沒有給它腳本編寫的機會。 – 2013-03-06 17:56:07

0

以下兩項工作(as discussed here)。

exec sp_rename 'ENG_TEst.[[ENG_Test_A/C_TYPE]]]' , 
       'ENG_Test_A/C_TYPE', 'COLUMN' 


exec sp_rename 'ENG_TEst."[ENG_Test_A/C_TYPE]"' , 
       'ENG_Test_A/C_TYPE', 'COLUMN' 
10

這工作

EXEC sp_rename 
@objname = 'ENG_TEst."[ENG_Test_A/C_TYPE]"', 
@newname = 'ENG_Test_A/C_TYPE', 
@objtype = 'COLUMN' 
+1

我認爲objectname應該是objname – curiousBoy 2014-02-05 21:58:15

-1

只是嘗試刪除鏈接到該列的統計指標。

最好的問候。

1

更新代碼第一個MVC5數據庫時出現此錯誤。從我的數據庫中刪除(右鍵單擊,刪除)所有表格,並從Migration文件夾中刪除遷移對我有用。

4

我就遇到了這個今天得到它一起工作:

EXECUTE sp_rename N'dbo.table_name.original_field_name', N'new_field_name', 'COLUMN' 

爲了得到這個語法,我跟着上面馬丁·史密斯的建議 - 在設計視圖中打開表,重命名列,然後單擊表設計師|生成更改腳本。這產生低於該做的重命名腳本分爲兩步:

/* To prevent any potential data loss issues, you should review this script in 
    detail before running it outside the context of the database designer.*/ 
BEGIN TRANSACTION 
SET QUOTED_IDENTIFIER ON 
SET ARITHABORT ON 
SET NUMERIC_ROUNDABORT OFF 
SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_NULLS ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 
COMMIT 
BEGIN TRANSACTION 
GO 
EXECUTE sp_rename N'dbo.table_name.original_field_name', N'Tmp_new_field_name_1', COLUMN' 
GO 
EXECUTE sp_rename N'dbo.table_name.Tmp_new_field_name_1', N'new_field_name', 'COLUMN' 
GO 
ALTER TABLE dbo.table_name SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT 
+0

其次,對於SSMS不提供改變腳本的情況,即改變索引;在重命名時運行SQL分析器跟蹤,以查看它生成的腳本。 – 2014-03-11 10:45:53

0

我試着在這個網站每一個可能的解決方案並沒有什麼工作適合我。我最終做了設計模式。右鍵單擊表名稱,然後單擊設計。然後我改了名字並保存在這裏。工作簡單。

相關問題