2017-05-08 4 views
-1

In SQL Server 2016 Express habe ich zunächst eine Tabelle mit einem Primärschlüssel erstellt, der den int-Datentyp verwendet. Nun, weiter in das Projekt, habe ich gemerkt, dass ich diese Spalte brauche ein String-Datentyp zu sein, aber wenn ich versuche, dies:Kann ich den Datentyp meines Primärschlüssels in einer temporalen Tabelle ändern?

alter table ExpAwbs 
drop constraint PK_ExpAwbs; 

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

alter table ExpAwbs 
add constraint PK_ExpAwbs primary key (idExpAwbs); 

ich diese

Msg 4902, Level 16, State 1, Line 1 
Cannot find the object "ExpAwbs" because it does not exist or you do not have permissions. 

Ist es möglich, zu tun was versuche ich auf einem temporalen Tisch zu tun, oder muss ich den Tisch neu erstellen?

+2

Sind Sie in der richtigen Datenbank, in der sich diese Tabelle befindet? –

Antwort

4

Versuchen Sie folgendes:

Use YourDatabaseName 
Go 

alter table ExpAwbs 
drop constraint PK_ExpAwbs; 

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

alter table ExpAwbs 
add constraint PK_ExpAwbs primary key (idExpAwbs); 

Wenn dies nicht, dass meine Arbeit, dass der Benutzer nicht über Berechtigungen, Sie haben also die Benutzer oder Grant die Erlaubnis für den Benutzer zu ändern.

+0

Das ist seltsam. Das hat funktioniert, aber der Datenbankserver hat nur einen Benutzer, und das ist der Admin-Benutzer. Aber ich habe jetzt einen anderen Fehler bekommen, da ich die Primärschlüsseleinschränkung nicht aus einer temporalen Systemversionstabelle löschen kann. Ich nehme an, dies bedeutet, dass das, was ich versuche, nicht getan werden kann. –

+0

Tatsächlich, Drehen der System-Versionierung erlaubt mir, die Primärschlüssel-Einschränkung fallen zu lassen. –

0

Wie @wei_dba erwähnt, scheint es sicherlich ein Genehmigungsproblem zu sein. Um das zu beweisen, habe ich Ihre Tabelle neu erstellt, einige Daten hinzugefügt und es ausprobiert - es hat funktioniert. Wenn dies nicht möglich ist, liegt das Problem eindeutig im Bereich der Berechtigungen. Möglicherweise müssen Sie jemanden haben, der diese Abfrage für Sie ausführt.
Beim Überprüfen Ihrer Abfrage wird ein weiteres Problem mit einer schnellen Fehlerbehebung angezeigt.

alter table ExpAwbs 
alter column idExpAwbs varchar(12); 

mit

alter table ExpAwbs 
alter column idExpAwbs varchar(12) not null; 

Reasoning ist, dass Sie darauf achten müssen, dass die PK ist nicht-nullable, etwas, das Sie nicht in Ihrer Anfrage gestellt haben: Sie können die folgenden ersetzt werden soll.

Verwandte Themen