Newsgroup: it.comp.software.database
Titolo: ALTER TABLE

Salve a tutti!
Ho la necessita di modificare la struttura di una tabella nel seguente modo.
Devo inserire dei dati da un db access in un db sql server 2000. Il problema
e che le tabelle hanno un campo chiave primaria contatore. Ora per mantenere
i valori della chiave durante la copia, avevo pensato di modificare il campo
chiave su SQL Server 2000 impostandolo a non IDENTITY, fare la copia e poi
reimpostarlo a IDENTITY.
Partendo dalla tabella SQL con il campo a IDENTITY uguale a NO per fare
alcune prove, ho tentato una sp con la sequente riga ma mi da un errore di
sintassi non valida
ALTER TABLE dbo.tabella ALTER COLUMN campo int IDENTITY(1,1)
Sono alle prime armi con le stored procedure, se qualcuno puo darmi una mano
gli sarei infinitamente grato.....
Un abbraccio
--
DD

Ti rispondo senza aver provato, ma non credo che puoi settare un campo a
IDENTITY quando ci sono già dei dati dentro al campo.

 ha scritto nel messaggio
news:B2R_8.14636$s74.4...@twister1.libero.it...


 wrote in message
news:i%P_8.14368$s74.4...@twister1.libero.it...

Daniele,
non puoi farlo. Ci sei riuscito con Enterprise Manager
perche' quando imposti la proprieta' identity a "no"
lui dietro le quinte esegue le seguenti azioni:
- crea una tabella temporanea con il campo definito senza identity
- esegue una INSERT nuovatabella SELECT FROM vecchiatabella
- elimina la vecchia tabella
- fa una rename della nuova tabella con il nome della vecchia
(per toglierti lo scrupolo quando fai la modifica in Enterprise
Manager, premi il terzo bottone da sinistra sulla toolbar: "Save
Change Script" e guarda cosa combina dietro le quinte).
Per gestire il problema dipende dall'ambiente che stai utilizzando
per fare l'inserimento.
Da una connessione qualunque puoi usare SET IDENTITY_INSERT per
specificare i valori della colonna IDENTITY.
Da un package DTS puoi specificare di mantenere i valori per
la colonna IDENTITY.
Ciao,
--
Gianluca Hotz
Backoffice MVP (SQL Server) MCP SQL Server and MCP Windows
Vice-President of the Italian User Group for SQL Server
Founding Member of the Italian User Group for .NET
http://www.ghotz.com
http://www.ugiss.org


Queste due cose non le ho capite. Io come ambiente per l'inserimento userei
uno script in vbs o asp.
Ci sono dei problemi, in questo caso? Con set identity_insert cosa farei
esattamente? Posso forzare il valore che va nel campo a dispetto
dell'impostazione sull'identita, mantenendo i valori della tabella
originaria?
E un package DTS che č? Perdonami se rompo con ste domande, non me ne
volere, ma sono un newbie!!
Un abbraccio
DD

 volere, ma sono un newbie!!
DTS e' l'acronimo di Data Transformation Services, un set di
tool e tecnologie per eseguire operazioni di import/export
da e verso un qualunque ambiente per il quale esista un
driver OLE-DB/ODBC.
Le operazioni di import/export possono essere semplici,
copia brutale dei dati, oppure complesse, eseguendo
operazioni di trasformazione tramite ActiveX scripting
oppure componenti COM appositi.
L'Enterprise Manager di SQL Server mette a disposizione
un Workflow Editor (chi conosce veri sistemi di Workflow
Management sa che in realta' non si tratta neanche
lontanamente di una cosa simile) che ti permette di
creare dei flussi per l'import/esport di dati.
Se vuoi fare una prova veloce, fai click con il tasto
destro su database pubs (in enterprise manager),
seleziona "All tasks" -> "import data", Next,
seleziona come sorgente il server locale ed il
database Northwind, Next, come server destinazione
dovrebbe gia' proporti il server locale ed il database
pubs, Next, seleziona "copy tables", seleziona la
prima tabella (Categories), Next (Senza cambiare
altro per ora), non selezionare "Run immediately"
ma bensi' "Save DTS packages"->"SQL Server", Next,
dai un nome al package (es. Package1), assicurati che
il server sia quello locale, Next, Finish.
Quando ha terminato, sempre in Enterprise Manager, apri la
cartella "Data Transformation Services", click su "Local Packages",
doppio click su package che hai salvato.
Quello che vedi e' un flusso mooolto semplice che crea
la tabella destinazione ed esegue una trasformazione
molto semplice di copia riga per riga, colonna per colonna.
In realta' DTS e' molto piu' complesso (tanto per rendere
l'idea c'e' un corso ufficiale Microsoft di 5 giorni su
creazione di Data Warehouses e DTS), la documentazione la
trovi sui Books Online e credo ci sia anche qualche libro
sull'argomento.


 driver OLE-DB/ODBC.
Ti ringrazio infinitamente di tutto l'aiuto che mi hai dato. Alla fine
tramite ODBC sono riuscito a far funzionare il DTS. Evidentemente il Driver
OLE DB di Access deve essere sputt......
Grazie ancora
Un abbraccio
DD

 wrote in message
news:QwB%8.26159$GV2.6...@twister2.libero.it...

Daniele,
se inizi a smanettare con DTS ti consiglio questi siti:
http://www.sqldts.com
e' mantenuto da Darren Green che e' quello che risponde
alla maggior parte dei messaggi in microsoft.public.sqlsrver.dts
http://www.sqldev.net
e' mantenuto da Gert Drapers che e' il vecchio PM
di tutti i tools di SQL Sever.
