如何從C#代碼隱藏生成sql腳本文件?該腳本文件將包含創建和下降聲明一個storedproc在數據庫中。如何從C#代碼隱藏生成sql腳本文件?
如何從C#中的數據庫生成腳本並寫入.sql文件?
是否有可能生成創建腳本,並從數據庫在C#
請幫忙刪除表或storedproc的聲明。
如何從C#代碼隱藏生成sql腳本文件?該腳本文件將包含創建和下降聲明一個storedproc在數據庫中。如何從C#代碼隱藏生成sql腳本文件?
如何從C#中的數據庫生成腳本並寫入.sql文件?
是否有可能生成創建腳本,並從數據庫在C#
請幫忙刪除表或storedproc的聲明。
,如果我理解正確的話,建立一個SqlCommand
對象具有以下
using (SqlConnection con = new SqlConnection ("Connection String Here"))
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "sp_helptext @procName";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("procName", "Name Of Stored Proc Here");
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
/*
You will get the CREATE PROC text here
Do what you need to with it. For example, write
to a .sql file
*/
}
}
}
}
這將返回存儲過程的文本,作爲CREATE PROC
語句,結果集中結果集的每一行都是存儲過程的一行。
要創建DROP PROC
聲明,簡單地寫出來
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'procName') AND type in (N'P', N'PC'))
DROP PROC procName
到.sql
文件。
如果你知道表的模式,但你只是改變表的名字,你需要獲得CREATE腳本的副本(可以很容易地從sql管理工作室獲得),然後把它放到你的代碼隱藏文件,然後將其保存爲使用文本作傢什麼的.sql文件...
如果我正確理解你的問題,可能有一個更安全,更簡單的方法做你想要什麼比你的方法提議。例如,您可以使用代碼構建SQL語句,設置SQLCommand對象,並直接執行SQL語句。
我真的沒有在SQL Server中的知識,但以下查詢的結果可能會幫助您:
select * from information_schema.columns
select * from information_schema.tables
select * from sysobjects
您正在查找SQL Management Objects (SMO) - 用於使用SQL Server的.NET庫。
你想要完成的是相當直接的。爲您即時存儲過程問題的C#代碼是一樣的東西(你寫劇本到.SQL文本文件,而不是控制檯)
Server theServer = new Server("myServerName");
Database myDB = theServer.Databases["myDatabaseName"];
StoredProcedure sp = myDB.StoredProcedures["mySprocName", "dbo"];
StringCollection sc = sp.Script();
foreach (string s in sc)
Console.WriteLine(s);
此代碼摘錄由比爾·格拉濟阿諾
題爲 Scripting Database Objects using SMO的文章取
太好了。但是你能幫助我,這樣我就可以爲表,函數,視圖生成聲明嗎?請幫忙。 – Himadri
這真的幫了我。現在我需要爲表生成create語句。我能夠爲視圖函數和sp生成語句,但不能爲表生成。請幫忙。 – Himadri
我不知道一個系統存儲過程,它會將''sp_helptext''用於用戶定義的函數,sporcs或視圖(包括其他對象),或者你可以在SSMS中使用「Script As ...」 「 選項。在Sql Profiler中查看當在SSMS中使用該選項時會發生什麼情況,可能會爲表提供一種方法。 –