In SQL Server 2008 R2, un utente può eseguire lo script di una tabella con i dati facendo clic con il pulsante destro del mouse sul database, selezionando Tasks
e Generate Scripts
. Apparirà una procedura guidata che chiederà agli utenti cosa desiderano (più tabelle, una tabella, ecc.) Insieme ad alcune opzioni avanzate (che consentono all'utente di ottenere sia lo schema della tabella che i dati); per domande, see this useful post of what's being done (sotto "The Handy").con dati dal codice
Sfortunatamente, SQL Server non dispone di uno script per generare questi script e, occasionalmente, è necessario eseguire lo script di alcune tabelle con tutti i dati al loro interno. Invece di farlo manualmente ogni volta, ho pensato che sarebbe stato più semplice fare in modo che un'applicazione C# chiamasse questi processi per una tabella di test e generasse uno script per la tabella con tutti i dati, salvandolo come file locale.
Quando utilizzo lo SqlConnection
, non ho visto un'opzione per eseguire questo tipo di attività (anche se potrebbe essere con qualcos'altro). Come è accessibile questo wizard?
Aggiornamento: Dopo la risposta iniziale, ho pensato che questo non fosse possibile, quindi ho elaborato una soluzione interessante, per chi ha maggiore familiarità con TSQL. Ho creato una stored procedure simile a quella qui sotto:
CREATE PROCEDURE usp_ScriptTableAndData
AS
BEGIN
CREATE TABLE ScriptTemp(
Value VARCHAR(8000)
)
INSERT INTO ScriptTemp
SELECT '/* Build the Reference Table */'
INSERT INTO ScriptTemp
SELECT 'USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Reference] [varchar](50) NULL,
[TableDate] [datetime] NOT NULL,
[Display] [bit] NULL
)
SET ANSI_PADDING OFF
GO
INSERT INTO ScriptTemp
SELECT '/* Insert the Table Values */'
INSERT INTO ScriptTemp
SELECT 'INSERT INTO Table VALUES(' + CAST(ID AS VARCHAR(3)) +
',' + '''' + LTRIM(RTRIM(ISNULL(Reference,'NULL'))) + '''' +
',' + '''' + CONVERT(VARCHAR(25),TableDate,120) + '''' +
',' + ISNULL(CAST(Display AS VARCHAR(4)),'NULL') + ')'
FROM dbo.Table
EXECUTE xp_cmdshell 'BCP "SELECT * FROM DB.dbo.ScriptTemp" queryout "\\FileSharePath\Script.sql" -T -c -SSERVER'
DROP TABLE ScriptTemp
END
questo modo si crea uno script con il tavolo ed i dati (Ho avuto l'idea da uno script simile che Bill Fellows created). Ad ogni modo, questa soluzione funziona anche, ed è abbastanza utile per le persone più familiari con TSQL. Grazie ancora a tutti coloro che hanno risposto.
Ho modificato il titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –