In SQL Server 2008 R2 kann ein Benutzer eine Tabelle mit den Daten erstellen, indem er mit der rechten Maustaste auf die Datenbank klickt und Tasks
und Generate Scripts
auswählt. Ein Assistent öffnet sich und fragt Benutzer, was sie wollen (mehrere Tabellen, eine Tabelle, etc.) zusammen mit einigen erweiterten Optionen (die es dem Benutzer erlauben, sowohl das Tabellenschema als auch Daten zu erhalten); für Fragen, see this useful post of what's being done (unter "The Handy").Skripttabelle mit Daten aus Code
Leider hat SQL Server kein Skript, um diese Skripte zu generieren, und gelegentlich müssen wir einige Tabellen mit allen darin enthaltenen Daten scripten. Anstatt dies jedes Mal manuell zu tun, dachte ich, es wäre einfacher, eine C# -Anwendung diese Prozesse für eine Testtabelle aufrufen zu lassen und ein Skript für die Tabelle mit allen Daten zu generieren und es als lokale Datei zu speichern.
Wenn ich die SqlConnection
verwende, habe ich keine Option gesehen, um diese Art von Aufgabe zu tun (obwohl es mit etwas anderem sein könnte). Wie ist dieser Assistent zugänglich?
Update: Nach der ersten Antwort ging ich davon aus, dass dies nicht möglich war, also habe ich eine interessante Lösung für diejenigen, die mit TSQL vertraut sind, ausgearbeitet. Ich habe eine gespeicherte Prozedur ähnlich den unten:
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
Dies ein Skript mit der Tabelle erstellt und Daten (ich habe die Idee von einem ähnlichen Skript, dass Bill Fellows created). Wie auch immer, diese Lösung funktioniert auch und ist ziemlich praktisch für Leute, die mit TSQL vertraut sind. Danke nochmal an alle, die geantwortet haben.
Ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –