在SQL Server 2008 R2中,用戶可以通過右鍵單擊數據庫,選擇Tasks
和Generate Scripts
,用數據編寫表格。一個嚮導會彈出,向用戶詢問他們想要什麼(多個表,一個表等)以及一些高級選項(允許用戶獲得表模式和數據);對於問題,see this useful post of what's being done(在「方便」下)。腳本表與代碼中的數據
不幸的是,SQL Server沒有腳本來生成這些腳本,有時我們不得不編寫一些表格以及其中的所有數據。我認爲讓C#應用程序爲測試表調用這些進程併爲所有數據的表生成一個腳本將它保存爲本地文件會更容易,而不是每次都手動執行此操作。
當我使用SqlConnection
時,我沒有看到做這種類型的任務的選項(儘管它可能與別的東西有關)。這個嚮導如何訪問?
更新:初步答案後,我認爲這是不可能的,所以我爲那些更熟悉TSQL的人制定了一個有趣的解決方案。我創建類似下面的一個存儲過程:
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
這與該表數據(我的想法來自一個類似的腳本,Bill Fellows created)創建一個腳本。無論如何,這個解決方案也可以工作,對於更熟悉TSQL的人來說非常方便。再次感謝所有回答的人。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –