Dou*_*son 11 c# sql-server stored-procedures sql-server-2005
有没有办法使用C#从SQL Server 2005 Express数据库获取存储过程?我想以与使用SQL Server Management Studio编写脚本相同的方式导出所有这些数据,而无需安装GUI.
我已经看到一些引用通过PowerShell做的事情,但最后一个C#控制台应用程序是我真正想要的.
澄清....
我想编写存储过程的脚本.通过它的列表Select * from sys.procedures是有帮助的,但最后我需要编写每个这样的脚本.
Pav*_*uva 22
您可以使用SMO.首先,将对这些程序集的引用添加到项目中:
它们位于GAC中(浏览到C:\ WINDOWS\assembly文件夹).
使用以下代码作为脚本存储过程的示例:
using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.SqlServer.Management.Smo;
class Program
{
static void Main(string[] args)
{
Server server = new Server(@".\SQLEXPRESS");
Database db = server.Databases["Northwind"];
List<SqlSmoObject> list = new List<SqlSmoObject>();
DataTable dataTable = db.EnumObjects(DatabaseObjectTypes.StoredProcedure);
foreach (DataRow row in dataTable.Rows)
{
string sSchema = (string)row["Schema"];
if (sSchema == "sys" || sSchema == "INFORMATION_SCHEMA")
continue;
StoredProcedure sp = (StoredProcedure)server.GetSmoObject(
new Urn((string)row["Urn"]));
if (!sp.IsSystemObject)
list.Add(sp);
}
Scripter scripter = new Scripter();
scripter.Server = server;
scripter.Options.IncludeHeaders = true;
scripter.Options.SchemaQualify = true;
scripter.Options.ToFileOnly = true;
scripter.Options.FileName = @"C:\StoredProcedures.sql";
scripter.Script(list.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
另请参阅:SQL Server:SMO脚本基础知识.