2013-03-07 8 views
9

Ho bisogno di modificare un tipo di dati di una colonna da smallint a bigint (considerazione di progettazione scadente, non chiedere). Corro il TSQLProvare a eliminare un valore predefinito, ma ottenere un messaggio che non esiste sul server

alter table dbo.Test alter column ProductionModeID bigint NULL 

Ma ottengo il messaggio:

Msg 5074, livello 16, stato 1, riga 1 L'oggetto 'DF_Test_ProductionModeID' dipende da colonna 'ProductionModeID'.

messaggio 4922, livello 16, stato 9, riga 1 ALTER TABLE ALTER COLUMN ProductionModeID non riuscito perché uno o più oggetti accedono a questa colonna.

Ho trovato DF_Test_ProductionModeID in dbo.Test >> Vincoli. (Non so come sia stato creato lo DF_Test_ProductionModeID, né credo che ne abbia bisogno per esistere). I Premere Canc, scelgo il tasto OK, e ottengo il seguente messaggio:

============================== =====

Il valore predefinito 'DF_Test_ProductionModeID' non esiste sul server. (SqlManagerUI)


Per informazioni, cliccare: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1447.4+((KJ_RTM).100213-0103+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.ObjectDoesNotExist&LinkId=20476


Programma Località:

a Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject (Int32 objectRowIndex) di Microsoft. SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects (Boolean stopOnError)

Quindi sono confuso, perché se non esiste, allora come può dipendere da una colonna?

risposta

13

Cosa succede quando si esegue quanto segue?

ALTER table Test drop DF_Test_ProductionModeID 

Vedi anche How To Name Default Constraints And How To Drop Default Constraint Without A Name In SQL Server per un po 'di informazioni

+0

Beh, che risolve il problema, e le mie opere originali 'ALTER' e il mio tipo di dati è cambiato. C'è una spiegazione logica del perché devo fare questo, o è solo "una di quelle cose"? Grazie – djv

+2

@DanVerdolino oltre a quello l'interfaccia utente è piena di piccoli problemi come questo? No. Molto tempo fa mi sono rassegnato all'apprendimento del DDL e non mi fidavo di puntare e di cliccare sull'interfaccia utente. Come bonus, il DDL è molto più facile da memorizzare nel controllo del codice sorgente rispetto ai clic del mouse e alle opzioni di menu. –

+2

Non so dove hai trovato il vincolo in SSMS quindi non posso commentare, di solito faccio tutto tramite script perché poi so cosa verrà eseguito invece di voodoo SSMS – SQLMenace