2012-10-21 64 views
2

我試圖創建一個程序,這將產生一個SQL數據庫模式,包括表,視圖,鍵,索引,觸發器等......這樣的:檢索在C#中的SQL Server數據庫的信息

CREATE TABLE TableName(....) .... 
CREATE VIEW ViewName(...) .... 

我知道這是可能的,因爲SQL Server Management Studio執行它(生成腳本命令)。但是,它是如何做到的?

更新:我忘了提及有關權限:我是數據庫的所有者(在大多數情況下),但我不SYS管理員。會有什麼區別嗎?

+0

像所有表名?即表的列表? –

+0

我不明白你。 –

+1

你打算如何處理模式?如果要使用相同的模式創建新的數據庫,則需要確定創建對象的有效順序。這是一個不平凡的問題。 – HABO

回答

1

對錶的列表:

foreach (DataRow row in schemaTbl.Rows) 
{ 
listBox.Items.Add(row["TABLE_NAME"]); 
} 

爲列從perticular表數據庫結構的

object[] objArrRestrict; 
objArrRestrict = new object[] {null, null, "Customers", null}; 
DataTable schemaCols; 
schemaCols = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, objArrRestrict); 
//List the schema info for the selected table 
foreach (DataRow row in schemaCols.Rows) 
{ 
listBox.Items.Add(row["COLUMN_NAME"]); 
} 
1

查詢由SQL Server版本而異。

2008 R2頁面here,它鏈接到TABLES頁面,該頁面鏈接到sys.tables頁面,該頁面鏈接到sys.objects頁。

sys.objects頁面包含相關示例。這隻能讓你看到桌子。還有其他系統對象的列,觸發器,視圖,...

1

如果你真的想要生成,你可能想看看實體框架/代碼的第一種方法,將基本上推動你的數據庫(表等)。

3

如果您只針對SQL Server,SMO功能非常強大。這是SQL Server Management Studio使用的庫,包含將數據庫對象轉換爲腳本的類。

The scripting example here是一個很好的開始。

相關問題