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?
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
@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. –
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