在 C# 專案中若需以程式碼方式執行 SQL 指令碼(如建立資料庫、執行 DDL/DML),微軟提供的 SQL Server Management Objects (SMO) 是功能最完整、穩定度最高的選擇。本文將從 Visual Studio 專案建立、參考組件加入,到實際程式碼撰寫,完整示範如何使用 SMO 執行 SQL 指令碼。
C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\(版本號會隨 SQL Server 版本不同而變動)。Microsoft.SqlServer.ConnectionInfo.dllMicrosoft.SqlServer.Smo.dllMicrosoft.SqlServer.Management.Sdk.Sfc.dllMicrosoft.SqlServer.SqlEnum.dllMicrosoft.SqlServer.ServiceBrokerEnum.dll。在程式碼檔案頂端(命名空間宣告之前)加入必要的 using 指令:
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
SMO 還有許多子命名空間(如 Microsoft.SqlServer.Management.Smo.Agent),視需求再行加入。
public void ExecuteSqlScript(string sqlScript, string connectionString)
{
using (var conn = new System.Data.SqlClient.SqlConnection(connectionString))
{
var serverConnection = new ServerConnection(conn);
var server = new Server(serverConnection);
// 執行不傳回結果集的 SQL 批次
server.ConnectionContext.ExecuteNonQuery(sqlScript);
}
}
說明:
ServerConnection 封裝了 ADO.NET 連線,提供 SMO 專用的連線管理。Server 物件代表 SQL Server 執行個體,透過其 ConnectionContext 執行指令碼。ExecuteNonQuery 適合執行 CREATE DATABASE、ALTER TABLE、INSERT 等不需傳回資料的指令;若需查詢結果,請改用 ExecuteWithResults。sysadmin 或 dbcreator)。原文連結:https://www.bianceng.cn/Programming/csharp/201410/45754.htm