gpt4 book ai didi

c# - 以编程方式获取所有存储过程的简单方法

转载 作者:可可西里 更新时间:2023-11-01 08:31:51 24 4
gpt4 key购买 nike

有没有办法使用 C# 从 SQL Server 2005 Express 数据库中获取存储过程?我想以相同的方式导出所有这些数据,您可以使用 SQL Server Management Studio 编写脚本,而无需安装 GUI。

我看过一些关于通过 PowerShell 执行操作的引用资料,但最终我真正想要的是 C# 控制台应用程序。

澄清....

我想编写存储过程的脚本。通过 Select * from sys.procedures 获得的列表很有帮助,但最后我需要编写其中的每一个脚本。

最佳答案

您可以为此使用 SMO。首先,将对这些程序集的引用添加到您的项目中:

  • Microsoft.SqlServer.ConnectionInfo
  • 微软.SqlServer.Smo
  • Microsoft.SqlServer.SmoEnum

它们位于 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());
}
}

另请参阅:SQL Server: SMO Scripting Basics .

关于c# - 以编程方式获取所有存储过程的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com