Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [vb6] copia di database mysql da remoto

    ciao a tutti,

    per chi non avesse seguito le puntate precedenti, in materia di vb6 sono ancora un pivellino

    il mio problema:
    Riesco a connettere il mio programma ad un database mysql situato in remoto. Vorrei, però, fosse possibile "semplicemente" ( ) cliccando su un pulsante, effettuare una copia di un db mysql su un computer locale.

    sapete instradarmi?

    bye

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    basta crearti una query che esegua i comandi T-SQL che facciano in ordine:
    Creare il db
    creare le tabelle del db
    copiare eventuali dati dalle tabelle MySQL a quelle appena create.

    una volta fatto questo script lo esegui come text di un command e lanci l'execute della connection sul server SQL

    codice:
    MioComando.CommandTex= SCRIPT
    MiaConnection.Execute(MioComando)

  3. #3
    così semplice?
    non funzionerà...

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  4. #4
    argh! mi sa che non ho capito, in quanto non funzia...

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    allora, la sintassi SQL è la stessa (essendo uno standard) quindi potresti creare un script oppure una stored procedure da lanciare sul server SQL per ricreare il db che hai su mySQL con tutte le tabelle ed i dati (questo dipende da cosa vuoi riportare).

    una volta che ti crei i vari batch per:
    Creare il database
    Creare le tabelle con i vari vincoli, relazioni, etc etc
    Creare gli script di copia dati da mySQL a SQLSever

    puoi lanciare questo script da VB con il codice (molto molto stringato) che ti ho postato prima


    Adesso cerco i link su MSDN on-line per la sintassi SQL di MS e te li posto qui

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    part 1:
    CREATE DATABASE
    Crea un nuovo database e i file utilizzati per archiviare il database oppure collega un database dai file di un database creato in precedenza.



    Nota Per ulteriori informazioni sulla compatibilità con versioni precedenti di DISK INIT, vedere Dispositivi - Livello 3 in Informazioni sulla compatibilità con versioni precedenti di Microsoft® SQL Server™.


    Sintassi
    CREATE DATABASE database_name
    [ ON
    [ < filespec > [ ,...n ] ]
    [ , < filegroup > [ ,...n ] ]
    ]
    [ LOG ON { < filespec > [ ,...n ] } ]
    [ COLLATE collation_name ]
    [ FOR LOAD | FOR ATTACH ]

    < filespec > ::=

    [ PRIMARY ]
    ( [ NAME = logical_file_name , ]
    FILENAME = 'os_file_name'
    [ , SIZE = size ]
    [ , MAXSIZE = { max_size | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment ] ) [ ,...n ]

    < filegroup > ::=

    FILEGROUP filegroup_name < filespec > [ ,...n ]

    Argomenti
    database_name

    Nome del nuovo database. I nomi di database devono essere univoci all'interno di un server e conformi alle regole per gli identificatori. Il numero massimo di caratteri consentito per l'argomento database_name è 128, a meno che per il file di log non sia stato specificato alcun nome logico. Se non viene specificato un nome logico di file di log, ne viene generato uno automaticamente tramite l'aggiunta di un suffisso all'argomento database_name. Questo limita il numero di caratteri dell'argomento database_name a 123 per fare in modo che il nome logico di file di log generato includa meno di 128 caratteri.

    ON

    Specifica che i file su disco utilizzati per archiviare le sezioni di dati del database (file di dati) vengono definiti in modo esplicito. Alla parola chiave segue un elenco delimitato da virgola di voci <filespec> che definiscono i file di dati del filegroup primario. L'elenco di file del filegroup primario può essere seguito da un elenco facoltativo delimitato da virgola di voci <filegroup> che definiscono i filegroup utente e i relativi file.

    n

    Segnaposto che indica la possibilità di specificare più file per il nuovo database.

    LOG ON

    Specifica che i file su disco utilizzati per archiviare il log del database (file di log) vengono definiti in modo esplicito. Alla parola chiave segue un elenco delimitato da virgola di voci <filespec> che definiscono i file di log. Se la parola chiave LOG ON viene omessa, viene creato automaticamente un singolo file di log generato dal sistema con dimensioni pari al 25% della somma delle dimensioni di tutti i file di dati del database.

    FOR LOAD

    Questa clausola è supportata per compatibilità con versioni precedenti di Microsoft SQL Server. Il database viene creato con l'opzione di database dbo use only attivata e lo stato viene impostato per il caricamento. Ciò non è necessario in SQL Server versione 7.0, in cui un database può essere ricreato tramite l'istruzione RESTORE come parte dell'operazione di ripristino.

    FOR ATTACH

    Specifica che un database viene collegato da un set di file del sistema operativo già esistente. È necessario che una voce dell'elenco <filespec> specifichi il primo file primario. Le altre voci <filespec> necessarie sono quelle relative ai file con percorso diverso rispetto al percorso utilizzato in fase di creazione del database o quando il database è stato scollegato. Per questi file è necessario specificare una voce <filespec>. Il database collegato deve essere stato creato in base alla stessa tabella codici e allo stesso tipo di ordinamento di SQL Server. Utilizzare la stored procedure di sistema sp_attach_db anziché eseguire direttamente l'istruzione CREATE DATABASE FOR ATTACH. Utilizzare l'istruzione CREATE DATABASE FOR ATTACH solo quando è necessario specificare più di 16 voci <filespec>.

    Se si collega un database a un server diverso dal server da cui il database è stato scollegato e il database scollegato è abilitato per la replica, è necessario eseguire sp_removedbreplication per rimuovere le opzioni di replica dal database.

    collation_name

    Specifica le regole di confronto predefinite per il database. È possibile utilizzare nomi di regole di confronto di Windows o SQL. Se collation_name viene omesso, al database vengono assegnate le regole di confronto predefinite dell'istanza di SQL Server.

    Per ulteriori informazioni sulle regole di confronto di Windows e SQL, vedere COLLATE.

    PRIMARY

    Specifica che l'elenco <filespec> associato definisce il file primario. Il filegroup primario include tutte le tabelle di sistema del database e tutti gli oggetti non assegnati ai filegroup utente. La prima voce di <filespec> del filegroup primario diventa il file primario, ovvero il file contenente l'inizio logico del database e le tabelle di sistema. Un database può includere un solo file primario. Se la parola chiave PRIMARY viene omessa, il primo file elencato nell'istruzione CREATE DATABASE diventa il file primario.

    NAME

    Specifica il nome logico del file definito in <filespec>. Il parametro NAME non è necessario quando viene specificata la clausola FOR ATTACH.

    logical_file_name

    Nome utilizzato per fare riferimento al file in qualsiasi istruzione Transact-SQL eseguita dopo la creazione del database. logical_file_name deve essere univoco nel database e conforme alle regole per gli identificatori. Il nome può essere un carattere o una costante Unicode oppure un identificatore normale o delimitato.

    FILENAME

    Specifica il nome di file del sistema operativo definito in <filespec>.

    'os_file_name'

    Percorso e nome di file utilizzati dal sistema operativo in fase di creazione del file fisico definito in <filespec>. Il percorso specificato in os_file_name deve corrispondere a una directory di un'istanza di SQL Server. Non è consentito specificare una directory di un file system compresso.

    Se il file viene creato in una partizione non formattata, os_file_name deve specificare solo la lettera dell'unità di una partizione non formattata esistente. È possibile creare un solo file in ogni partizione non formattata. Le dimensioni dei file di partizioni non formattate non aumentano automaticamente. I parametri MAXSIZE e FILEGROWTH pertanto non sono necessari quando os_file_name specifica una partizione non formattata.

    SIZE

    Specifica le dimensioni del file definito in <filespec>. Se il parametro SIZE viene omesso dalla voce <filespec> per un file primario, vengono utilizzate le dimensioni del file primario del database model. Se SIZE viene omesso dalla voce <filespec> per un file secondario, viene creato un file di 1 MB.

    size

    Dimensioni iniziali del file definito in <filespec>. È possibile utilizzare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero, ovvero non includere decimali. Il valore minimo consentito per l'argomento size è 512 KB. Se size viene omesso, il valore predefinito è 1 MB. Le dimensioni specificate per il file di dati primario deve essere uguale almeno alle dimensioni del file primario del database model.

    MAXSIZE

    Specifica le dimensioni massime per il file definito in <filespec>.

    max_size

    Dimensioni massime per il file definito in <filespec>. È possibile utilizzare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero, ovvero non includere decimali. Se max_size viene omesso, le dimensioni del file aumentano fino a quando il disco non risulta pieno.



    Nota Quando un disco è quasi pieno, l'amministratore di sistema di SQL Server riceve un avviso inviato dal registro di sistema S/B di Microsoft Windows NT®.


    UNLIMITED

    Specifica che le dimensioni del file definito in <filespec> aumentano fino a quando il disco risulta pieno.

    FILEGROWTH

    Specifica l'incremento delle dimensione del file definito in <filespec>. Il valore impostato per il parametro FILEGROWTH di un file non può essere superiore al valore del parametro MAXSIZE.

    growth_increment

    Quantità di spazio aggiunta al file ogni volta che è necessario spazio aggiuntivo. Specificare un numero intero, ovvero non includere decimali. Il valore 0 indica che le dimensioni non verranno aumentate. È possibile specificare il valore in megabyte (MB), kilobyte (KB), gigabyte (GB) o terabyte (TB) oppure in forma di percentuale (%). Se si specifica un valore senza il suffisso MB, KB o %, il suffisso predefinito è MB. Se si utilizza il suffisso %, l'incremento corrisponde alla percentuale delle dimensioni del file specificata quando si verifica l'incremento. Se FILEGROWTH viene omesso, il valore predefinito è 10% e il valore minimo è 64 KB. Le dimensioni specificate vengono arrotondate al blocco di 64 KB più prossimo.

    Osservazioni
    È possibile utilizzare un'istruzione CREATE DATABASE per creare un database e i file in cui archiviarlo. In SQL Server l'istruzione CREATE DATABASE è implementata in due passaggi:

    Viene innanzitutto utilizzata una copia del database model per inizializzare il database e i metadati corrispondenti.


    La parte rimanente del database viene quindi compilata con pagine vuote, ad eccezione delle pagine con dati interni che registrano la modalità di utilizzo dello spazio nel database.
    Gli oggetti definiti dall'utente inclusi nel database model vengono pertanto copiati in tutti i nuovi database. È possibile aggiungere al database model qualsiasi oggetto che si desidera includere in tutti i database, ad esempio tabelle, viste, stored procedure, tipi di dati e così via.

    Ogni nuovo database eredita le impostazioni delle opzioni di database del database model (a meno che non venga specificata l'opzione FOR ATTACH). L'opzione di database select into/bulkcopy, ad esempio, è impostata su OFF nel database model e in tutti i nuovi database. Se si esegue l'istruzione ALTER DATABASE per modificare le opzioni del database model, tali impostazioni vengono adottate anche nei nuovi database. Se viene specificata l'opzione FOR ATTACH nell'istruzione CREATE DATABASE, i nuovi database ereditano le impostazioni delle opzioni di database dal database originale.

    In un server è possibile specificare al massimo 32.767 database.

    Per l'archiviazione di un database vengono utilizzati tre tipi di file:

    Il file primario include le informazioni di avvio del database. Viene inoltre utilizzato per archiviare dati. A ogni database è associato un file primario.


    I file secondari contengono tutti i dati che non è possibile includere nel file primario. I file secondari non sono necessari se il file di dati primario è sufficientemente grande per contenere tutti i dati del database. Per alcuni database di grandi dimensioni potrebbe essere necessario utilizzare più file secondari oppure file secondari su unità disco distinte in modo da distribuire i dati su più dischi.


    I file di log delle transazioni contengono le informazioni necessarie per il ripristino del database. È necessario che per ogni database sia disponibile almeno un file di log delle transazioni. La dimensione minima per un file di log delle transazioni è 512 KB.
    Ogni database include almeno due file, un file primario e un file di log delle transazioni.

    Sebbene 'os_file_name' possa essere qualsiasi nome valido di file del sistema operativo, è consigliabile specificare le seguenti estensioni in modo che il nome indichi chiaramente lo scopo del file.

    Tipo di file Estensione del nome del file
    File di dati primario mdf
    File di dati secondario ndf
    File di log delle transazioni ldf

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    part 2:
    Nota Quando si crea un database utente, è consigliabile eseguire un backup del database master.


    Non è possibile specificare frazioni nei parametri SIZE, MAXSIZE e FILEGROWTH. Per specificare una frazione di megabyte nei parametri SIZE, è necessario convertire il valore in kilobyte moltiplicando il numero per 1.024. Specificare, ad esempio, 1.536 KB anziché 1,5 MB (1,5 moltiplicato per 1.024 è uguale a 1.536).

    Quando una semplice istruzione CREATE DATABASE database_name viene specificata senza parametri aggiuntivi, il database viene creato con le stesse dimensioni del database model.

    A tutti i database è associato almeno un filegroup primario, a cui vengono assegnate tutte le tabelle di sistema. Per un database potrebbero essere inoltre disponibili filegroup definiti dall'utente. Se un oggetto viene creato con una clausola ON filegroup che specifica un filegroup definito dall'utente, tutte le pagine per l'oggetto vengono allocate nel filegroup specificato. Le pagine per tutti gli oggetti utente creati senza la clausola ON filegroup o con la clausola ON DEFAULT vengono allocate nel filegroup primario. Nei nuovi database il filegroup primario è il filegroup predefinito. È tuttavia possibile impostare come predefinito un filegroup definito dall'utente tramite l'istruzione ALTER DATABASE:

    ALTER DATABASE database_name MODIFY FILEGROUP filegroup_name DEFAULT

    Ogni database ha un proprietario che può eseguire attività particolari nel database. Il proprietario è l'utente che crea il database. È possibile modificare il proprietario del database con la procedura sp_changedbowner.

    Per visualizzare un report relativo a un database o a tutti i database di un computer SQL Server, utilizzare la procedura sp_helpdb. Per ottenere un report relativo allo spazio in uso in un database, utilizzare la procedura sp_spaceused. Per un report relativo ai filegroup di un database, utilizzare la procedura sp_helpfilegroup, mentre per un report dei file di un database utilizzare la procedura sp_helpfile.

    Nelle versioni precedenti di SQL Server, prima di eseguire l'istruzione CREATE DATABASE vengono eseguite istruzioni DISK INIT per creare i file di un database. Per compatibilità con le versioni precedenti, l'istruzione CREATE DATABASE consente di creare un nuovo database in file o dispositivi creati con l'istruzione DISK INIT. Per ulteriori informazioni, vedere Compatibilità di SQL Server con le versioni precedenti.

    Autorizzazioni
    L'autorizzazione per l'istruzione CREATE DATABASE viene assegnata per impostazione predefinita ai membri dei ruoli predefiniti del server sysadmin e dbcreator. I membri dei ruoli predefiniti del server sysadmin e securityadmin possono concedere autorizzazioni per l'istruzione CREATE DATABASE ad altri account di accesso. I membri dei ruoli predefiniti del server sysadmin e dbcreator possono aggiungere altri account di accesso al ruolo dbcreator. È necessario che l'autorizzazione per l'istruzione CREATE DATABASE sia concessa in modo esplicito. Non è possibile concederla tramite l'istruzione GRANT ALL.

    L'autorizzazione per l'istruzione CREATE DATABASE viene normalmente limitata a pochi account di accesso per mantenere il controllo sull'utilizzo del disco di un computer SQL Server.

    Esempi
    A. Creazione di un database che specifica i file di dati e i file di log delle transazioni
    In questo esempio viene creato il database Sales. Dato che la parola chiave PRIMARY non è specificata, il primo file, ovvero Sales_dat, corrisponde al file primario. Nel parametro SIZE non viene specificato il suffisso MB o KB per le dimensioni del file Sales_dat, che per impostazione predefinita vengono pertanto allocate in megabyte. Le dimensioni del file Sales_log vengono allocate in megabyte perché nel parametro SIZE è stato specificato in modo esplicito il suffisso MB.

    USE master
    GO
    CREATE DATABASE Sales
    ON
    ( NAME = Sales_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )
    GO

    B. Creazione di un database specificando più file di dati e più file di log delle transazioni
    In questo esempio viene creato il database Archive con tre file di dati da 100 MB e due file di log delle transazioni da 100 MB. Il file primario è il primo file dell'elenco e viene specificato in modo esplicito con la parola chiave PRIMARY. I file di log delle transazioni vengono specificati dopo le parole chiave LOG ON. Si notino le estensioni utilizzate per i file nell'opzione FILENAME: mdf per i file di dati primari, ndf per i file di dati secondari e ldf per i file di log delle transazioni.

    USE master
    GO
    CREATE DATABASE Archive
    ON
    PRIMARY ( NAME = Arch1,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch2,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch3,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
    LOG ON
    ( NAME = Archlog1,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Archlog2,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog2.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
    GO

    C. Creazione di un database semplice
    In questo esempio viene creato il database Products e viene specificato un singolo file. Il file specificato diventa il file primario e viene automaticamente creato un file di log delle transazioni da 1 MB. Poiché per il file primario non viene specificato il suffisso MB o KB nel parametro SIZE, le dimensioni del file vengono allocate in megabyte. Inoltre, dato che per il file di log delle transazioni non è specificata alcuna voce <filespec>, il parametro MAXSIZE non viene specificato, ovvero le dimensioni del file di log delle transazioni potranno aumentare fino a riempire lo spazio disponibile del disco.

    USE master
    GO
    CREATE DATABASE Products
    ON
    ( NAME = prods_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods.mdf',
    SIZE = 4,
    MAXSIZE = 10,
    FILEGROWTH = 1 )
    GO

    D. Creazione di un database senza specificare alcun file
    In questo esempio viene creato il database mytest insieme al file primario e al file di log delle transazioni corrispondente. Poiché nell'istruzione non è specificata alcuna voce <filespec>, le dimensioni del file primario del database corrispondono a quelle del file primario del database model, così come le dimensioni del file di log delle transazioni, che corrispondono a quelle del file di log delle transazioni del database model. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco.

    CREATE DATABASE mytest

    E. Creazione di un database senza specificare il parametro SIZE
    In questo esempio viene creato il database products2. Il file prods2_dat diventa il file primario con dimensioni pari a quelle del file primario del database model. Il file di log delle transazioni viene creato automaticamente con dimensioni pari al 25% delle dimensioni del file primario o a 512 KB, a seconda del valore maggiore. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco.

    USE master
    GO
    CREATE DATABASE Products2
    ON
    ( NAME = prods2_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods2.mdf' )
    GO

    F. Creazione di un database con filegroup
    In questo esempio viene creato il database sales con i tre seguenti filegroup:

    Il filegroup primario con i file Spri1_dat e Spri2_dat. L'incremento specificato nel parametro FILEGROWTH per tali file è uguale al 15%.


    Il filegroup SalesGroup1 con i file SGrp1Fi1 e SGrp1Fi2.


    Il filegroup SalesGroup2 con i file SGrp2Fi1 e SGrp2Fi2.
    CREATE DATABASE Sales
    ON PRIMARY
    ( NAME = SPri1_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
    ( NAME = SPri2_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
    FILEGROUP SalesGroup1
    ( NAME = SGrp1Fi1_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
    ( NAME = SGrp1Fi2_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
    FILEGROUP SalesGroup2
    ( NAME = SGrp2Fi1_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
    ( NAME = SGrp2Fi2_dat,
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
    FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )
    GO

    G. Collegamento di un database
    Nell'esempio B viene creato il database Archive con i seguenti file fisici:

    c:\program files\microsoft sql server\mssql\data\archdat1.mdf
    c:\program files\microsoft sql server\mssql\data\archdat2.ndf
    c:\program files\microsoft sql server\mssql\data\archdat3.ndf
    c:\program files\microsoft sql server\mssql\data\archlog1.ldf
    c:\program files\microsoft sql server\mssql\data\archlog2.ldf

    È possibile scollegare il database con la stored procedure sp_detach_db, quindi ricollegarlo utilizzando l'istruzione CREATE DATABASE con la clausola FOR ATTACH:

    sp_detach_db Archive
    GO
    CREATE DATABASE Archive
    ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf')
    FOR ATTACH
    GO

    H. Utilizzo di partizioni non formattate
    In questo esempio viene creato il database Employees utilizzando partizioni non formattate. È necessario che le partizioni non formattate esistano quando si esegue l'istruzione. Ogni partizione non formattata può includere un solo file.

    USE master
    GO
    CREATE DATABASE Employees
    ON
    ( NAME = Empl_dat,
    FILENAME = 'f:',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
    FILENAME = 'g:',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )
    GO

    I. Utilizzo di unità installate
    In questo esempio viene creato il database Employees utilizzando unità installate che puntano a partizioni non formattate. Questa funzione è disponibile solo in Microsoft® Windows®. È necessario che, quando si esegue l'istruzione, le unità installate e le partizioni non formattate siano esistenti. Inoltre, ogni partizione è possibile inserire un solo file. Quando si crea un file di database in un'unità installata, il percorso dell'unità deve terminare con una barra rovesciata (\).

    USE master
    GO
    CREATE DATABASE Employees
    ON
    ( NAME = Empl_dat,
    FILENAME = 'd:\sample data dir\',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
    FILENAME = 'd:\sample log dir\',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )
    GO

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    part 1:
    CREATE TABLE
    Crea una nuova tabella.

    Sintassi
    CREATE TABLE
    [ database_name.[ owner ] . | owner. ] table_name
    ( { < column_definition >
    | column_name AS computed_column_expression
    | < table_constraint > ::= [ CONSTRAINT constraint_name ] }

    | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
    )

    [ ON { filegroup | DEFAULT } ]
    [ TEXTIMAGE_ON { filegroup | DEFAULT } ]

    < column_definition > ::= { column_name data_type }
    [ COLLATE < collation_name > ]
    [ [ DEFAULT constant_expression ]
    | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
    ]
    [ ROWGUIDCOL ]
    [ < column_constraint > ] [ ...n ]

    < column_constraint > ::= [ CONSTRAINT constraint_name ]
    { [ NULL | NOT NULL ]
    | [ { PRIMARY KEY | UNIQUE }
    [ CLUSTERED | NONCLUSTERED ]
    [ WITH FILLFACTOR = fillfactor ]
    [ON {filegroup | DEFAULT} ] ]
    ]
    | [ [ FOREIGN KEY ]
    REFERENCES ref_table [ ( ref_column ) ]
    [ ON DELETE { CASCADE | NO ACTION } ]
    [ ON UPDATE { CASCADE | NO ACTION } ]
    [ NOT FOR REPLICATION ]
    ]
    | CHECK [ NOT FOR REPLICATION ]
    ( logical_expression )
    }

    < table_constraint > ::= [ CONSTRAINT constraint_name ]
    { [ { PRIMARY KEY | UNIQUE }
    [ CLUSTERED | NONCLUSTERED ]
    { ( column [ ASC | DESC ] [ ,...n ] ) }
    [ WITH FILLFACTOR = fillfactor ]
    [ ON { filegroup | DEFAULT } ]
    ]
    | FOREIGN KEY
    [ ( column [ ,...n ] ) ]
    REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
    [ ON DELETE { CASCADE | NO ACTION } ]
    [ ON UPDATE { CASCADE | NO ACTION } ]
    [ NOT FOR REPLICATION ]
    | CHECK [ NOT FOR REPLICATION ]
    ( search_conditions )
    }

    Argomenti
    database_name

    Nome del database in cui viene creata la tabella. database_name deve specificare il nome di un database esistente. Se viene omesso, viene impostato automaticamente il database corrente. L'account di accesso per la connessione corrente deve essere associato a un ID utente del database specificato in database_name. Per tale ID utente devono essere inoltre disponibili le autorizzazioni per la creazione di tabelle.

    owner

    Nome dell'ID utente del proprietario della nuova tabella. L'argomento owner deve essere un ID utente del database specificato in database_name. Il valore predefinito è l'ID utente dell'account di accesso per la connessione corrente disponibile nel database specificato in database_name. Se l'istruzione CREATE TABLE viene eseguita da un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_dbowner o db_ddladmin nel database specificato in database_name, per owner è possibile specificare un ID utente diverso da quello dell'account di accesso per la connessione in uso. Se l'istruzione CREATE TABLE viene eseguita da un account di accesso con un ID utente che dispone solo di autorizzazioni per la creazione di tabelle, owner deve specificare l'ID utente associato all'account di accesso corrente. I membri del ruolo predefinito del server sysadmin e gli account di accesso a cui è assegnato come alias l'utente dbo sono associati all'ID utente dbo. Il proprietario delle tabelle create da tali utenti è pertanto dbo. Per le tabelle create da un account di accesso non appartenente ai ruoli sopraindicati, il valore predefinito di owner è l'ID utente associato all'account di accesso.

    table_name

    Nome della nuova tabella. I nomi delle tabelle devono essere conformi alle regole per gli identificatori. La combinazione owner.table_name deve essere univoca all'interno del database. L'argomento table_name può includere al massimo 128 caratteri, ad eccezione dei nomi di tabelle temporanee locali, ovvero i nomi preceduti da un simbolo di cancelletto (#), i quali devono includere al massimo 116 caratteri.

    column_name

    Nome di una colonna della tabella. I nomi di colonna devono essere conformi alle regole per gli identificatori e devono essere univoci all'interno della tabella. Per colonne di tipo timestamp è possibile omettere l'argomento column_name. In tal caso il nome predefinito di queste colonne è timestamp.

    computed_column_expression

    Espressione che determina il valore di una colonna calcolata. Una colonna calcolata è una colonna virtuale non archiviata fisicamente nella tabella. Viene calcolata in base a un'espressione che utilizza altre colonne della stessa tabella. Una colonna calcolata può essere definita, ad esempio, nel modo seguente: cost AS price * qty. L'espressione può essere un nome di colonna non calcolata, una costante, una funzione, una variabile e qualsiasi combinazione di questi elementi uniti da uno o più operatori. L'espressione non può essere una subquery.

    È possibile utilizzare le colonne calcolate in elenchi di selezione, clausole WHERE e ORDER BY o nelle altre posizioni in cui è possibile utilizzare espressioni regolari, con le seguenti eccezioni:

    Una colonna calcolata non può essere utilizzata come definizione di vincolo DEFAULT o FOREIGN KEY o con la definizione di vincolo NOT NULL. È tuttavia possibile utilizzare una colonna calcolata come colonna chiave di un indice o come parte di un vincolo PRIMARY KEY o UNIQUE, a condizione che il valore della colonna sia definito da un'espressione deterministica e il tipo di dati del risultato sia supportato nelle colonne dell'indice.
    Se la tabella contiene, ad esempio, le colonne di tipo integer a e b, è possibile indicizzare la colonna calcolata a+b, ma non la colonna calcolata a+DATEPART(dd, GETDATE()), in quanto durante chiamate successive il valore può cambiare.

    Non è possibile utilizzare una colonna calcolata in un'istruzione INSERT o UPDATE.


    Nota Ogni riga di una tabella può includere valori diversi per le colonne di una colonna calcolata. Le varie righe della colonna calcolata pertanto non includono necessariamente lo stesso valore.

    Il supporto di valori Null delle colonne calcolate viene determinato automaticamente in base alle espressioni utilizzate. Si presuppone che per il risultato della maggior parte delle espressioni i valori Null siano supportati anche se sono disponibili solo colonne che non supportano valori Null. Possibili underflow o overflow, infatti, generano risultati NULL. Per stabilire se una colonna calcolata supporta o meno i valori Null, utilizzare la funzione COLUMNPROPERTY (proprietà AllowsNull). Un'espressione expr che supporta valori Null può essere convertita in un'espressione che non supporta valori Null specificando ISNULL(check_expression, costante) dove "costante" è un valore non Null che sostituisce qualsiasi risultato Null.

    ON {filegroup | DEFAULT}

    Specifica il filegroup in cui è archiviata la tabella. Se si specifica questo argomento, la tabella viene archiviata nel filegroup specificato. Il filegroup deve essere disponibile nel database. Se si specifica DEFAULT oppure ON viene omesso, la tabella viene archiviata nel filegroup predefinito.

    È inoltre possibile specificare ON {filegroup | DEFAULT} in vincoli PRIMARY KEY e UNIQUE, con i quali vengono creati indici. Se si specifica l'argomento filegroup, l'indice viene archiviato nel filegroup specificato. Se si specifica DEFAULT, l'indice viene archiviato nel filegroup predefinito. Se per un vincolo non viene specificato alcun filegroup, l'indice viene archiviato nello stesso filegroup della tabella. Se il vincolo PRIMARY KEY o UNIQUE crea un indice cluster, le pagine di dati della tabella vengono archiviate nello stesso filegroup dell'indice.



    Nota Nel contesto di ON {filegroup | DEFAULT} e TEXTIMAGE_ON {filegroup | DEFAULT} DEFAULT non è una parola chiave, ma un identificatore delimitato del filegroup predefinito, ad esempio ON "DEFAULT" o ON [DEFAULT] e TEXTIMAGE_ON "DEFAULT" o TEXTIMAGE_ON [DEFAULT].


    TEXTIMAGE_ON

    Parola chiave che indica che le colonne di tipo text, ntext e image vengono archiviate nel filegroup specificato. La parola chiave TEXTIMAGE_ON non è consentita se la tabella non include colonne di tipo text, ntext o image. Se la parola chiave viene omessa, le colonne di tipo text, ntext e image vengono archiviate nello stesso filegroup della tabella.

    data_type

    Specifica il tipo di dati della colonna. Sono validi i tipi di dati del sistema o definiti dall'utente. I tipi di dati definiti dall'utente da utilizzare in una definizione di tabella devono essere creati tramite sp_addtype.

    L'assegnazione dell'attributo NULL/NOT NULL a un tipo di dati definito dall'utente può essere ignorata durante l'istruzione CREATE TABLE. L'impostazione della lunghezza tuttavia non è modificabile. In un'istruzione CREATE TABLE non è possibile specificare una lunghezza per un tipo di dati definito dall'utente.

    DEFAULT

    Specifica il valore assegnato alla colonna quando non viene specificato un valore in modo esplicito durante un'azione di inserimento. È possibile applicare le definizioni DEFAULT a qualsiasi colonna, ad eccezione di quelle definite come timestamp o con la proprietà IDENTITY. Le definizioni DEFAULT vengono rimosse quando la tabella viene eliminata. È possibile utilizzare come valore predefinito un valore costante, ad esempio una stringa di caratteri, una funzione di sistema, ad esempio SYSTEM_USER(), o un valore NULL. Per mantenere la compatibilità con le versioni precedenti di SQL Server, è possibile assegnare un nome di vincolo a una definizione DEFAULT.

    constant_expression

    Costante, valore Null o funzione di sistema utilizzata come valore predefinito della colonna.

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    IDENTITY

    Indica che la nuova colonna è una colonna Identity. Quando si aggiunge una nuova riga alla tabella, alla colonna viene assegnato un valore incrementale univoco. Le colonne Identity vengono comunemente utilizzate in combinazione con vincoli PRIMARY KEY e svolgono la funzione di identificatore di riga univoco per la tabella. È possibile assegnare la proprietà IDENTITY a colonne di tipo tinyint, smallint, int, bigint, decimal(p,0) e numeric(p,0). Ogni tabella può includere una sola colonna Identity. Non è possibile associare valori predefiniti e vincoli DEFAULT alle colonne Identity. È necessario specificare sia il valore di inizializzazione che l'incremento oppure nessuno dei due valori. In questo secondo caso, il valore predefinito è (1,1).

    seed

    Valore di inizializzazione utilizzato per la prima riga caricata nella tabella.

    increment

    Valore incrementale aggiunto al valore Identity della riga caricata in precedenza.

    NOT FOR REPLICATION

    Indica che la proprietà IDENTITY non deve essere imposta quando un account di accesso per la replica, ad esempio sqlrepl, inserisce dati nella tabella. Le righe replicate devono mantenere i valori chiave assegnati nel database di pubblicazione. La clausola NOT FOR REPLICATION assicura che alle righe inserite con un processo di replica non siano assegnati nuovi valori Identity. Per le righe inserite da altri account di accesso i nuovi valori Identity vengono creati in base alla normale procedura. È consigliabile definire inoltre un vincolo CHECK con la clausola NOT FOR REPLICATION per assicurare che i valori Identity assegnati siano compresi nell'intervallo desiderato per il database corrente.

    ROWGUIDCOL

    Indica che la nuova colonna è un identificatore univoco di riga globale. È possibile designare come colonna ROWGUIDCOL una sola colonna di tipo uniqueidentifier per ogni tabella. La proprietà ROWGUIDCOL può essere assegnata solo a una colonna uniqueidentifier. La parola chiave ROWGUIDCOL non è valida se il livello di compatibilità del database è minore o uguale a 65. Per ulteriori informazioni, vedere sp_dbcmptlevel.

    La proprietà ROWGUIDCOL non impone l'univocità dei valori archiviati nella colonna. Inoltre non genera automaticamente valori per le nuove righe inserite nella tabella. Per generare valori univoci per ogni colonna, utilizzare la funzione NEWID in istruzioni INSERT oppure impostare questa funzione come valore predefinito per la colonna.

    collation_name

    Specifica le regole di confronto per la colonna. È possibile utilizzare nomi di regole di confronto di Windows o SQL. L'argomento collation_name è applicabile solo a colonne di tipo char, varchar, text, nchar, nvarchar e ntext. Se viene omesso, alla colonna vengono assegnate le regole di confronto dei dati definiti dall'utente, se il tipo di dati della colonna è definito dall'utente, oppure le regole di confronto predefinite del database.

    Per ulteriori informazioni sulle regole di confronto di Windows e SQL, vedere COLLATE.

    CONSTRAINT

    Parola chiave facoltativa che indica l'inizio di una definizione di vincolo PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY o CHECK. I vincoli sono proprietà speciali che impongono l'integrità dei dati e creano tipi di indici particolari per le tabelle e le relative colonne.

    constraint_name

    Nome di un vincolo. I nomi di vincolo devono essere univoci all'interno di un database.

    NULL | NOT NULL

    Parole chiave che determinano se la colonna supporta o meno valori Null. La parola chiave NULL non è esattamente un vincolo, ma può essere specificata allo stesso modo di NOT NULL.

    PRIMARY KEY

    Vincolo che impone l'integrità di entità per una o più colonne specificate tramite un indice univoco. È possibile creare un solo vincolo PRIMARY KEY per ogni tabella.

    UNIQUE

    Vincolo che impone l'integrità di entità per una o più colonne specificate tramite un indice univoco. Una tabella può includere più vincoli UNIQUE.

    CLUSTERED | NONCLUSTERED

    Parole chiave per impostare la creazione di un indice cluster o non cluster per il vincolo PRIMARY KEY o UNIQUE. Il valore predefinito per i vincoli PRIMARY KEY è CLUSTERED, mentre per i vincoli UNIQUE è NONCLUSTERED.

    In un'istruzione CREATE TABLE è possibile specificare CLUSTERED per un solo vincolo. Se si specifica CLUSTERED per un vincolo UNIQUE e si specifica inoltre il vincolo PRIMARY KEY, il valore predefinito di tale vincolo è NONCLUSTERED.

    [ WITH FILLFACTOR = fillfactor ]

    Specifica la percentuale di riempimento di ogni pagina dell'indice utilizzata per archiviare dati. I possibili valori sono compresi tra 1 e 100 e il valore predefinito è 0. Un fattore di riempimento basso consente di creare un indice con una maggiore quantità di spazio disponibile per le nuove voci di indice senza dover allocare spazio aggiuntivo.

    FOREIGN KEY...REFERENCES

    Vincolo che assicura l'integrità referenziale dei dati di una o più colonne. È necessario che ogni valore delle colonne sia incluso nelle colonne di riferimento corrispondenti della tabella di riferimento. È possibile fare riferimento a vincoli FOREIGN KEY solo nelle colonne che nella tabella con riferimenti corrispondono a vincoli PRIMARY KEY o UNIQUE e nelle colonne a cui viene fatto riferimento in un indice univoco nella tabella di riferimento.

    ref_table

    Nome della tabella a cui fa riferimento il vincolo FOREIGN KEY.

    (ref_column[,...n])

    Colonna o elenco di colonne della tabella a cui fa riferimento il vincolo FOREIGN KEY.

    ON DELETE { CASCADE | NO ACTION }

    Specifica l'azione eseguita su una riga della nuova tabella se tale riga include una relazione referenziale e la riga a cui fa riferimento viene eliminata dalla tabella padre. Il valore predefinito è NO ACTION.

    Se si specifica CASCADE, una riga viene eliminata dalla tabella di riferimento se viene eliminata dalla tabella padre. Se si specifica NO ACTION, viene generato un errore ed eseguito il rollback dell'operazione di eliminazione della riga dalla tabella padre.

    Nel database Northwind, ad esempio, la tabella Orders include una relazione referenziale con la tabella Customers. La chiave esterna Orders.CustomerID fa riferimento alla chiave primaria Customers.CustomerID.

    Se in una riga della tabella Customers viene eseguita un'istruzione DELETE e si specifica ON DELETE CASCADE per Orders.CustomerID, viene verificata l'esistenza di una o più righe dipendenti nella tabella Orders. Le eventuali righe dipendenti individuate nella tabella Orders vengono eliminate insieme alla riga della tabella Customers a cui fanno riferimento.

    Se si specifica NO ACTION, viene generato un errore ed eseguito il rollback dell'operazione di eliminazione della riga di Customers se nella tabella Orders esiste almeno una riga che vi fa riferimento.

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ON UPDATE {CASCADE | NO ACTION}

    Specifica l'azione che viene eseguita su una riga della nuova tabella se tale riga include una relazione referenziale e la riga a cui fa riferimento viene aggiornata nella tabella padre. Il valore predefinito è NO ACTION.

    Se si specifica CASCADE, la riga viene aggiornata nella tabella di riferimento se viene aggiornata nella tabella padre. Se si specifica NO ACTION, viene generato un errore ed eseguito il rollback dell'operazione di aggiornamento della riga nella tabella padre.

    Nel database Northwind, ad esempio, la tabella Orders include una relazione referenziale con la tabella Customers. La chiave esterna Orders.CustomerID fa riferimento alla chiave primaria Customers.CustomerID.

    Se viene eseguita un'istruzione UPDATE in una riga nella tabella Customers e si specifica ON UPDATE CASCADE per Orders.CustomerID, viene verificata l'esistenza di una o più righe dipendenti nella tabella Orders. Le eventuali righe dipendenti individuate nella tabella Orders vengono aggiornate insieme alla riga di riferimento della tabella Customers.

    Se si specifica NO ACTION, viene generato un errore ed eseguito il rollback dell'operazione di aggiornamento della riga nella tabella Customers se almeno una riga della tabella Orders vi fa riferimento.

    CHECK

    Vincolo che impone l'integrità di dominio tramite la limitazione dei valori che è possibile inserire in una o più colonne.

    NOT FOR REPLICATION

    Parole chiave utilizzate per impedire l'imposizione del vincolo CHECK durante il processo di distribuzione eseguito dalla replica. Quando le tabelle eseguono sottoscrizioni a una pubblicazione per la replica, non aggiornare direttamente la tabella di sottoscrizione. Aggiornare invece la tabella di pubblicazione e consentire alla replica di ridistribuire i dati nella tabella di sottoscrizione. È possibile definire un vincolo CHECK nella tabella di sottoscrizione per impedire modifiche da parte degli utenti. Se la clausola NOT FOR REPLICATION viene omessa, tuttavia, il vincolo CHECK impedisce anche al processo di replica di distribuire modifiche dalla tabella di pubblicazione alla tabella di sottoscrizione. La clausola NOT FOR REPLICATION indica che il vincolo viene imposto alle modifiche dell'utente, ma non al processo di replica.

    Il vincolo CHECK NOT FOR REPLICATION viene applicato all'immagine di un record precedente e successiva all'aggiornamento per impedire l'aggiunta o l'eliminazione di record nell'intervallo replicato. Viene eseguita una verifica di tutte le operazioni di inserimento ed eliminazione. Se intervengono nell'intervallo replicato vengono respinte.

    Quando si utilizza questo vincolo in una colonna Identity, non è necessario reinizializzare i valori di tale colonna della tabella in corrispondenza dell'aggiornamento della colonna.

    logical_expression

    Espressione logica che restituisce TRUE o FALSE.

    column

    Colonna o elenco di colonne specificate tra parentesi nei vincoli di tabella per indicare le colonne utilizzate nella definizione di vincolo.

    [ASC | DESC]

    Specifica l'ordinamento della colonna o delle colonne che fanno parte dei vincoli di tabella. Il valore predefinito è ASC.

    n

    Segnaposto che indica la possibilità di ripetere l'elemento precedente n volte.

    Osservazioni
    SQL Server supporta fino a due miliardi di tabelle per ogni database e 1.024 colonne per ogni tabella. Il numero di righe e le dimensioni totali della tabella sono limitate solo dallo spazio di archiviazione disponibile. Il numero massimo di byte per ogni riga è di 8.060. Se si creano tabelle con colonne di tipo varchar, nvarchar o varbinary in cui la larghezza totale definita è maggiore di 8.060 byte, la tabella viene comunque creata ma viene visualizzato un messaggio di avviso. Se in una riga si inseriscono più di 8.060 byte oppure si esegue un aggiornamento che comporta un aumento delle dimensioni totali della riga oltre gli 8.060 byte, viene visualizzato un messaggio di errore e l'istruzione ha esito negativo.

    Le istruzioni CREATE TABLE che includono una colonna di tipo sql_variant possono generare l'avviso seguente:

    The total row size (xx) for table 'yy' exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added.
    Questo avviso viene visualizzato perché la lunghezza massima di sql_variant è pari a 8016 byte. Se una colonna di tipo sql_variant contiene valori con lunghezza prossima al limite massimo, potrebbe assumere dimensioni che superano le dimensioni massime.

    Ogni tabella può includere al massimo 249 indici non cluster e 1 indice cluster, compresi quelli generati per il supporto di qualsiasi vincolo PRIMARY KEY e UNIQUE definito per la tabella.

    In SQL Server non è previsto un ordine specifico per i valori DEFAULT, IDENTITY, ROWGUIDCOL o i vincoli di colonna in una definizione di colonna.

    Tabelle temporanee
    È possibile creare tabelle temporanee locali o globali. Le tabelle locali sono visibili solo nella sessione corrente, mentre quelle globali sono visibili in tutte le sessioni.

    I nomi delle tabelle temporanee locali devono iniziare con un simbolo di cancelletto (#table_name), mentre i nomi delle tabelle temporanee globali devono iniziare con due simboli di cancelletto (##table_name).

    Le istruzioni SQL fanno riferimento alla tabella temporanea utilizzando il valore specificato per l'argomento table_name nell'istruzione CREATE TABLE:

    CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
    INSERT INTO #MyTempTable VALUES (1)

    Se viene creata una tabella temporanea locale in una stored procedure o in un'applicazione che può essere eseguita contemporaneamente da più utenti, è necessario poter contraddistinguere le tabelle create dai vari utenti. A tale scopo a ogni nome di tabella temporanea locale viene aggiunto un suffisso numerico. Il nome completo di una tabella temporanea archiviata nella tabella sysobjects in tempdb è composto dal nome di tabella specificato nell'istruzione CREATE TABLE e dal suffisso numerico generato dal sistema. Per il supporto del suffisso, l'argomento table_name specificato per un nome temporaneo locale non può superare i 116 caratteri.

    Le tabelle temporanee vengono eliminate automaticamente quando non rientrano nell'ambito valido, a meno che non vengano eliminate in modo esplicito tramite l'istruzione DROP TABLE:

    Una tabella temporanea locale creata in una stored procedure viene eliminata automaticamente al completamento della stored procedure. È possibile fare riferimento alla tabella temporanea in qualsiasi stored procedure nidificata eseguita dalla stored procedure con cui è stata creata la tabella temporanea. Non è invece possibile fare riferimento alla tabella nel processo che ha richiamato la stored procedure con cui la tabella è stata creata.


    Tutte le altre tabelle temporanee locali vengono eliminate automaticamente al termine della sessione corrente.


    Le tabelle temporanee globali vengono eliminate automaticamente al termine della sessione in cui è stata creata la tabella e quando tutte le altre attività non vi fanno più riferimento. L'associazione tra un'attività e una tabella viene mantenuta solo per la durata di una singola istruzione Transact-SQL. Una tabella temporanea globale viene pertanto eliminata al termine dell'ultima istruzione Transact-SQL che fa riferimento alla tabella al termine della sessione di creazione.
    Una tabella temporanea locale creata all'interno una stored procedure o in un trigger si distingue da una tabella temporanea avente lo stesso nome creata prima della chiamata alla stored procedure o al trigger. Se una query fa riferimento a una tabella temporanea e sono disponibili due tabelle temporanee aventi lo stesso nome, non è possibile stabilire in base a quale tabella verrà risolta la query. Le stored procedure nidificate, inoltre, possono creare tabelle temporanee aventi lo stesso nome di una tabella temporanea creata dalla stored procedure chiamante. Tutti i riferimenti ai nomi di tabella nella stored procedure nidificata vengono risolti in base alla tabella creata nella procedura nidificata, ad esempio:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.