web-dev-qa-db-de.com

Wie kann ich lösen "Entweder ist der Parameter @objname mehrdeutig oder der behauptete @objtype (COLUMN) ist falsch."?

Wenn ich versuche, die folgende Abfrage auszuführen:

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

Ich bekomme einen Fehler: 

Entweder lautet der Parameter @ objname mehrdeutig oder der beanspruchte @objtype (SPALTE) ist falsch.

Wie kann ich es lösen?

38
Penguen

Nüsse Ich habe diesen gleichen Fehler bereits vor Wochen gefunden und nach langer Zeit habe ich herausgefunden, wie er funktioniert - aber ich habe ihn seitdem vergessen. (Nicht viel Hilfe, außer zu sagen, es kann getan werden.)

Haben Sie verschiedene Kombinationen von Brackets oder mit und ohne Brackest ausprobiert? z.B.

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';

Wenn alles andere fehlschlägt, gibt es immer etwas 

  • Erstellen Sie eine neue Tabelle (als "xENG_TEst") mit den richtigen Namen
  • Daten aus alter Tabelle übernehmen
  • Alte Tabelle fallen lassen
  • Benennen Sie die neue Tabelle in den endgültigen Namen um
23
Philip Kelley

Führen Sie die Abfrage in der richtigen Datenbank aus? d.h.

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

Das funktioniert

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

Ich bin heute auf dieses Thema gestoßen und habe mit ihm zusammen gearbeitet:

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

Um diese Syntax zu erhalten, habe ich die oben genannten Empfehlungen von Martin Smith befolgt. Öffnen Sie die Tabelle in der Entwurfsansicht, benennen Sie die Spalte um und klicken Sie auf den Tabellendesigner | Änderungsskript generieren. Daraufhin wurde das folgende Skript erstellt, das die Umbenennung in zwei Schritten ausführt:

/* 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
5
Jim B

Ich habe diesen Fehler beim Aktualisieren der ersten MVC5-Datenbank des Codes erhalten. Löschen (Rechtsklick, Löschen) aller Tabellen aus meiner Datenbank und Entfernen der Migrationen aus dem für mich funktionierenden Migrationsordner. 

1
stink

ich hatte auch dieses Problem - sehr ärgerlich und habe selbst noch keine zufriedenstellende Antwort auf das SQL-Niveau gefunden (abgesehen von den langatmigen, die Temptabellen erstellen usw.), und ich hatte keine Zeit, es zu dem Schluss zu bringen, zu dem ich gekommen wäre gefallen.

Am Ende wurde SQL Server Management Studio dazu verwendet, die Tabelle auszuwählen, mit der rechten Maustaste auf die Spalte zu klicken und "Umbenennen" zu wählen. simples!

natürlich würde ich lieber wissen, wie man das ohne Gui macht, aber manchmal muss man einfach fertig werden!

1
Rob Ganly

Ich habe jede mögliche Lösung auf dieser Website ausprobiert und nichts hat für mich funktioniert. Am Ende war ich im Design-Modus. Klicken Sie mit der rechten Maustaste auf den Tabellennamen und dann auf Design. Dann habe ich den Namen geändert und hier gespeichert. Einfach gearbeitet.

0
Greg

Beide der folgenden Arbeiten ( wie hier besprochen ).

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'
0
Martin Smith