Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

DROP Column schlägt fehl bei SQL SERVER

Frage Entwicklung Datenbanken

Mitglied: PCFJKG

PCFJKG (Level 1) - Jetzt verbinden

01.04.2009, aktualisiert 03.04.2009, 9946 Aufrufe, 6 Kommentare

Mit ALTER TABLE könnnen z.B. in einer Tabelle auf einem SQL-SERVER Spalten hinzugefügt und/oder gelöscht werden. DROP einer Spalte schlägt jedoch fehl, wenn diese die mit IDENTITY PRIMARY KEY erzeugt wurde.

In der SQL-SERVER-Hilfe und im Forum habe ich Verschiedenes dazu gelesen und probiert; da es trotz dieser Hinweise nicht funktioniert, liegt es wahrscheinlich wahrscheinlich mal wieder an der Syntax, einem fehlenden (oder falschen) Zeichen usw.usf. Kann mir jemand zu Folgendem einen Tipp geben ?

ALTER PROCEDURE dbo.P_Test
AS
BEGIN
DROP TABLE T_Test
CREATE TABLE T_Test ( ZNr int identity primary key, dummy int)
ALTER TABLE T_Test DROP ZNr
END
Message: 'ZNr' ist keine Einschränkung. Das war wohl auch zu erwarten, aber

ALTER PROCEDURE dbo.P_Test
AS
BEGIN
DROP TABLE T_Test
CREATE TABLE T_Test ( ZNr int identity primary key, dummy int)
ALTER TABLE T_Test DROP CONSTRAINT ZNr
END
Message: 'ZNr' ist keine Einschränkung. Also, auf ein Neues:

ALTER PROCEDURE dbo.P_Test
AS
BEGIN
DROP TABLE T_Test
CREATE TABLE T_Test ( ZNr int identity primary key, dummy int)
ALTER TABLE T_Test DROP FOREIGN ZNr
END
Message: Falsche Syntax in der Nähe des FOREIGN-Schlüsselwortes

und noch einmal etwas anders (ohne identity)

ALTER PROCEDURE dbo.P_Test
AS
BEGIN
DROP TABLE T_Test
CREATE TABLE T_Test ( ZNr int primary key, dummy int)
ALTER TABLE T_Test DROP COLUMN ZNr
END
Message: Das Objekt 'PK__T_Test__D8FF7BA46545CD27D' ist vom Spalte-Objekt 'Znr' abhängig:

Soll wohl bedeuten, dass die PRIMARY KEY Eigenschaft vor den droppen entfernt werden soll. Nur: Wie macht man das ?


SQL-SERVER 2000 und SQL-SERVER 2008 verhalten sich gleich, kann ergo nicht an der Version liegen.

Who can help ?

thanks...

PCFJKG
Mitglied: Netzheimer
01.04.2009 um 15:45 Uhr
Hallo.

Als erstes würde ich die Anweisungen per 'go' trennen, sonst kann es sein dass der Server noch mit dem Löschen der alten Tabelle Test beschäftigt ist, obwohl er sie schon neu anlegen soll.

Für die ZNr empfehel ich: ZNr int identity(1,1) primary key not null -> erste Zahl Startwert, zweite Zahl erhöhen um 1; außerdem darf es keine NULL-Werte enthalten weil es ja primary key ist.

DROP FOREIGN kenne ich so nicht -> Vermutlich DROP CONSTRAINT ...

Der Ansatz mit erst anlegen und dann ALTER TABLE ist der Richtige.
Bitte warten ..
Mitglied: PCFJKG
03.04.2009 um 08:17 Uhr
Hallo Netzheimer,

zunächst Danke für die Antwort, habe natürlich heute Früh sofort getestet. Leider kommt auch bei der
Variante ZNr int identity(1,1) primary key not null beim ausführen die Meldung 'ZNr' ist keine Einschränkung.

Gibt es vielleicht noch eine Idee ?

... und nochmals danke für die Hilfe

PCFJKG
Bitte warten ..
Mitglied: Biber
03.04.2009 um 09:17 Uhr
Moin PCFJKG,

vorab: ich vermag keinen konstruierbaren Anlass für ein derariges Vorgehen (Anlegen einer Tabelle mit PK und umgehendes Droppen des PK-Feldes) herzuleiten.

Aber wenn Du durch welche Unwägbarkeiten des Schicksals auch immer in diese Situation geraten sein solltest, dann reduzieren sich die Alternativen auf:
  • Schritt 1: die PRIMARY KEY-Constraint entfernen --> dazu musst Du die beim Namen nennen können
  • um den Namen der Constraint zu "wissen", kannst Du ihn entweder selbst festlegen beim Anlegen der Tabelle, oder
  • da wir ja annehmen, dass es ganz blöd lauft, gehen wir davon aus, dass auch das verratzt wurde und eine 30cm lange Constraint-Bezeichnung vom SQL-Server generiert wurde

---> Diese wurde die ja oben in der Fehlermeldung auch mitgeteilt:
'PKT_TestD8FF7BA46545CD27D'
--> Also wäre ja eine wahrscheinliche Lösung für den ersten Schritt:
01.
ALTER TABLE T_Test DROP CONSTRAINT 'PKT_TestD8FF7BA46545CD27D'; 
02.
-- danach die üblichen ALTER TABLE DROP COLUMN-Statements...
Da es nun wirklich keine Empfehlung sein sollte, den Namen der Constraint aus dem Text einer Fehlermeldung herauszu-Copy&Pasten, wäre mein Tipp zur Ermittlung des Namens folgender:
01.
SELECT sk.name AS DerConstraintIhrName 
02.
FROM sys.key_constraints AS sk  
03.
Join  sys.tables AS st ON st.object_id = sk.parent_object_id  
04.
WHERE  
05.
sk.type_desc = 'PRIMARY_KEY_CONSTRAINT' and st.name = 'T_Test';
Grüße
Biber

P.S. Ich verschiebe den Beitrag mal von "Office->Access" nach "Datenbanken".
Bitte warten ..
Mitglied: PCFJKG
03.04.2009 um 11:05 Uhr
Hallo Biber,

zum Vorab: In der Tabelle wurde neben 17 weiteren Spalten die Spalte ZNr als int IDENTITY PRIMARY KEY angelegt. DieseTabelle wird in Verknüpfung mit anderen Tabellen als Source eines Korrekturformulares verwendet. Nach erfolgter Korrektur werden die Daten zurückgeschrieben und die ZNr dabei benötigt. Diese wird mit SELECT (...) INTO neben den erwähnten anderen Spalten und Tabellen in eine Korrekturtabelle geschrieben, die nun dadurch die Definition IDENTITY PRIMARY KEY übernimmt. Ohne es weiter auszuführen, an einer bestimmten Stelle entsteht daraus ein Problem und der geringste Aufwand zur Änderung unserer Software wäre es, die ZNr zu löschen und neu mit ALTER und geänderter Definition wie beschrieben anzufügen; das in meiner Frage veröffentlichte Beispiel CREATE und dann ALTER sollte nur ohne weiteren Ballast das Problem schildern.

Nun meine Ergänzungsfrage:

Kann man den CONSTRAINT-Name \"im Nachhinein\" in der Originaltabelle selbst festlegen (ggf. neue Tabelle und dann die alte kopieren oder inserten ?)

Dann könnte das Problem ein- für allemal mit geringstem Aufwand gelöst werden.

Aber: unabhängig davon:

Wie immer eine konkrete und hilfreiche Antwort, welche die Aufgaben der Fragestellung gelöst hat und
dafür vor allem Anderen VIELEN DANK !

PCFJKG
Bitte warten ..
Mitglied: Biber
03.04.2009 um 12:25 Uhr
Moin PCFJKG,

danke für die Erläuterung der Notwendigkeit. Deiner Lösungssuche...
In der IT kann man/frau wirklich manchmal gar nicht so krumm denken, wie sich manche Prozesse verselbständigen.

zu Deiner Zusatzfrage "Umbenennen der PK_Constraint im Nachhinein"

Ja nee... eigentlich kein Problem.
Die Redmonder haben für derlei Späße eine Stored Procedure mit dabei, die sich sp_rename nennt und mit der Du fast alles (Tabellen, Felder,Indices oder eben auch Constraints) umbenamsen kannst.

[jetzt das "aber"]
Ja hey, bevor Du jetzt eine Suchmaschine befragt nach "mssql sp_rename", erst noch kurz überlegen...

Zum Umbenennen muss ich ja zwei Sachen wissen:
  • den neuen Namen, den das Kind haben soll... und der muss systemweit eindeutig sein -->willst Du Dir das Ausdenken eines "einmaligen" Bezeichners wirklich auch noch aufhalsen? Ich denke, Bestseller wie "Die 5000 beliebtesten Vornamen" zeugen davon, dass die eigene Phantasie oft nicht ausreicht, sich da jeden Tag etwas Peppiges auszudenken.
  • und, noch ärgerlicher, Du brauchst ja auch den bisherigen "alten Namen" der Constraint. zum Umbenamsen.

Was soll's also - wenn Du den alten Namen ohnehin ermitteln musst und dann in Händen hast--> wozu dat Dingen noch umbenennen?? Sobald Du den Namen kennst, kannst Du es doch droppen...

Grüße
Biber
Bitte warten ..
Mitglied: PCFJKG
03.04.2009 um 14:11 Uhr
Hallo Biber,

warum sp_rename nutzen, wenn es im Forum Mitglieder gibt, die "weiter"-denken (?).

Deine Erläuterung leuchtet sofort ein und ich werde ergo Deinen Rat befolgen.

Nun wird es wohl doch noch ein happy weekend. Ich wünsche Dir ein mindestens ebenso schönes Wochenende (das Wetter soll ja wohl endlich mitspielen) und nochmals danke.

Schöne Grüße nach Bremen


PCFJKG
Bitte warten ..
Ähnliche Inhalte
Microsoft
NovaBackup 16.0 Sicherung SQL Server schlägt fehl
Frage von makuobbMicrosoft1 Kommentar

Hallo, ich habe eine SBS 2011 installiert. Als Sicherungsprogramm möchte ich NovaBackup Essential 16.0 verwenden. Die Datensicherung von Datendateien ...

Windows Server
Datensicherung von MS SQL-Server schlägt fehl
gelöst Frage von CorrbenWindows Server3 Kommentare

Hallo zusammen, Wenn ich einen SQL-Server sichern möchte, erhalte ich ständig Fehlermeldungen, dass das Element nicht geöffnet werden konnte, ...

Datenbanken
Select column by id ORALCE SQL
gelöst Frage von 94451Datenbanken2 Kommentare

Hallo Liebe Leut, gibt es die Möglichkeit eine Column anhand einer ID zu selekiteren? wenn ich einen Abruf mache ...

LAN, WAN, Wireless
Authenfizierung am RADIUS-Server schlägt fehl
gelöst Frage von MenrenrehLAN, WAN, Wireless4 Kommentare

Hallo werte Experten, ich würde ein paar Ratschläge benötigen bei einem Problem, dass sich bei mir ergeben hat. Ich ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...