webForumDet fria alternativet

Konvertera text-fält till varchar(500) i MSSQL

Databaser & SQL

4 svar · 361 visningar · startad av joup

Medlem sedan feb. 2002116 inlägg
Frågan#1

Tjenare.

Jag har en tabell som innehåller en kolumn som i dagsläget är en "text", det känns lite onödigt och nu vill jag konvertera den till en varchar som kan ta 500 tecken.

Har testat att använda ASP.NET Enterprise Manager, men då skapar den bara en temp-tabell med de "rätta" kolumntyperna och lägger inte över själva datan.

Medlem sedan dec. 200012 464 inlägg
#2
ALTER TABLE t
 ALTER COLUMN c varchar(500)
Medlem sedan feb. 2002116 inlägg
#3

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot alter column 'inledning' because it is 'text'.

/mssql/konv2.asp, line 7

:-(

Medlem sedan dec. 20003 887 inlägg
#4

Jag hittade följande, men jag vet inte om det hjälper dig.

--This statement will generate an error.
ALTER TABLE Tbl 
ALTER COLUMN Notes text

--This is the error.
Cannot alter column 'Notes' because it is 'ntext'.

All BLOB data that you insert into the table will not be stored in the data row. Instead, an out-row BLOB root pointer that points to the root structure of a data tree is stored in the row. To store BLOB data in row, execute the sp_tableoption stored procedure with the text in row option.

red.
Kanske ska säga att jag hittade det här: Chapter 11 - Using BLOBs

Medlem sedan dec. 200012 464 inlägg
#5

Då får man väl sköta det manuellt

alter table t add column mc varchar(500)
update t set mc = cast(c as varchar(500))
alter table t drop column mc

Sen kan man döpa om kolumnen med sp_rename

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_ra-rz_3ns5.asp

I och för sig så hade jag för mig att det var det som EM skulle fixa.

251 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)