sql >> データベース >  >> RDS >> Sqlserver

すべてのストアド プロシージャをプログラムで取得する簡単な方法

    そのためにSMOを使用できます。まず、これらのアセンブリへの参照をプロジェクトに追加します。

    • Microsoft.SqlServer.ConnectionInfo
    • Microsoft.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 スクリプトの基本 .



    1. PHPを介してMySQLにテキストとしてHTML選択値を挿入する方法

    2. 合計に基づいてMySQLのパーセンタイルを計算します

    3. データ収集を自動化し、10%でフリーズしない方法

    4. MySql+エンティティフレームワーク=すべての派生テーブルには独自のエイリアスが必要です