It is currently 22 April 2025, 19:10 Advanced search

Utilizzo datatype nvarchar(max) in sqlserver

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Utilizzo datatype nvarchar(max) in sqlserver

Postby teopost » 23 October 2013, 14:43

C'è un sistema per usare un datatype non previsto da inde ?
Parlo del datatype nvarchar(MAX) per sqlserver che supera finalmente il problema dei 4000 caratteri unicode (8000 normali)
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby lucabaldini » 24 October 2013, 7:43

Dipende cosa intendi per "usare".

Se intendi poter creare tabelle di database con In.de che utilizzino quel costrutto l'unico modo è creare il DDL, aprirlo in modifica inserendo "nvarchar(MAX)" e poi eseguendo il DDL senza ricrearlo.
Se intendi poterlo usare a run-time in pannelli (DB o DO è uguale) allora credo sia automaticamente gestito.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby teopost » 24 October 2013, 8:36

Non e' possibile fare una sorta di estensione o addin a inde per intervenire nella fase di generazione del codice e dire, per esempio, che tutti gli nvarchar(4000) diventino nvarchar(max) ?
A questo proposito sarebbe bello poter intervenire a livello di mapping dei datatype cosi' come avviene per le funzioni di libreria
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby lucabaldini » 24 October 2013, 9:07

Credo sia possibile farlo. Con un wizard e intercettando gli eventi che vengono notificati durante la creazione del DDL forse è possibile... però non ho mai provato.

E' anche vero che se uno non deve ricreare la struttura del DB tutti i giorni, la modifica manuale del DDL solo per quelle tabelle dove serve non dovrebbe richiedere troppo tempo.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby teopost » 24 October 2013, 9:15

Il problema non è tanto quello di modificare il datatype sulle tabelle.
Quello e' facile, basta crearsi una query che compone lo statement di modifica.
Esempio

Code: Select all
SELECT 'alter table ' + table_name + ' alter column ' + column_name + ' nvarchar(MAX)' FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'nvarchar' AND CHARACTER_MAXIMUM_LENGTH = 4000 AND TABLE_NAME IN (SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE')


Il problema è che le variabili delle stored procedure con un collegamento al campo della tabella continuano ad essere nvarchar(4000) e questo fa si che i dati vengano comunque troncati.
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby lucabaldini » 24 October 2013, 9:56

Giusto. Ma anche il codice delle stored procedure è dentro al DDL... e, supponendo che tu non debba cambiare le stored procedure tutti i giorni, puoi modificare anche quelle nel DDL. Inoltre immagino che tu non voglia usare quel tipo di campo in tutti i campi carattere del tuo DB.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Utilizzo datatype nvarchar(max) in sqlserver

Postby lucabaldini » 24 October 2013, 9:57

Comunque vorrei pensarci meglio e capire se può essere utile gestire quel tipo di dato.

Ho creato l'attività NPQ01221 per tenere conto di questa conversazione. Quando verrà valutata, potrai seguirne l'andamento con Instant Developer Roadmap.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 8 guests