Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C#codebehind生成sql脚本文件?_C#_Asp.net_Sql Server_Scripting - Fatal编程技术网

如何从C#codebehind生成sql脚本文件?

如何从C#codebehind生成sql脚本文件?,c#,asp.net,sql-server,scripting,C#,Asp.net,Sql Server,Scripting,如何从C#codebehind生成sql脚本文件?脚本文件将包含数据库中storedproc的create和drop语句 如何从C#中的db生成脚本并写入.sql文件 是否可以从C#中的db生成表或StoredRoc的create和drop语句的脚本 请提供帮助。如果您知道表的架构,但只是更改表的名称,则需要获取创建脚本的副本(可从sql management studio轻松获得)并将其放入代码隐藏文件中,然后使用文本编写器或其他工具将其保存为.sql文件…如果我正确理解了您的问题,可能有一种

如何从C#codebehind生成sql脚本文件?脚本文件将包含数据库中storedproc的createdrop语句

如何从C#中的db生成脚本并写入.sql文件

是否可以从C#中的db生成表或StoredRoc的create和drop语句的脚本


请提供帮助。

如果您知道表的架构,但只是更改表的名称,则需要获取创建脚本的副本(可从sql management studio轻松获得)并将其放入代码隐藏文件中,然后使用文本编写器或其他工具将其保存为.sql文件…

如果我正确理解了您的问题,可能有一种比您建议的方法更安全、更简单的方法来做您想要做的事情。例如,您可以在代码中构建SQL语句、设置对象并直接执行SQL语句。

我对SQL Server并不了解,但以下查询的结果可能会对您有所帮助:

select * from information_schema.columns
select * from information_schema.tables
select * from sysobjects

如果我理解正确,请使用以下命令设置
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
语句的形式返回存储过程的文本,其中resultset的每一行都是存储过程的一行

要创建
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
文件。

您正在寻找一个用于使用sql Server的.NET库

你想要完成的事情相当简单。直接存储过程问题的C#代码类似于(将脚本写入.SQL文本文件而不是控制台)


这段代码摘录自Bill Graziano的一篇文章

我想使用C#从数据库中获取StoredRoc的create语句。我需要将从C#codebehind生成来自db的create语句。是否要创建SQL语句,或从数据库检索现有存储过程?我不想从SQL server management studio复制create语句,但我想使用sqlcommand获取C#codebehind中的create语句。这些语句不会插入到我创建的数据库表中。系统表可以提供帮助,也可以使用任何其他选项。我希望检索现有存储过程create drop语句。太好了。但是你能帮我生成表、函数、视图的create语句吗?请帮帮我,这真的帮了我的忙。现在我需要为表生成create语句。我能够为视图、函数和sp生成create语句,但不能为表生成create语句。请提供帮助。我不知道有哪个系统存储过程会像
sp_helptext
那样为用户定义的函数、sporc或视图(以及其他对象)编写一个表结构脚本,或者像您在SSMS中使用“script as…”选项所做的那样。在Sql Profiler中查看在SSMS中使用该选项时会发生什么,可能会为表提供一种前进的方式。
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);