Smo是SqlServer Management Objects的簡稱,由SQL2005提供的管理對象,sql-dmo的邏輯進化版本,主要功能由C:/Program Files/Microsoft SQL Server/90/SDK/Assemblies下面的Microsoft.SqlServer.Smo.dll檔案中的相關 對象來實現,可以直接由vs2005開發的程式來引用。
msdn參考文檔:
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.aspx。
文檔中他列舉了7條大的功能,其實毫不誇張地說,只要SQL Server Management Studio能實現的東西,用smo都能實現,因為SQL Server Management Studio就是用smo開發的。如果你有足夠的實力,完全可以開發一個可以藐視SQL Server Management Studio的工具,比如加入智能感知的功能。
具體詳細應用這裡就不展開了,對象太多...只舉一個例子,很多人問的如何產生sql對象的指令碼:
--先搞一個測試環境use tempdbcreate table test(id int identity(1,1))
//添加引用 //Microsoft.SqlServer.ConnectionInfo.dll //Microsoft.SqlServer.Smo.dll Microsoft.SqlServer.Management.Common.ServerConnection conn = new Microsoft.SqlServer.Management.Common.ServerConnection( new System.Data.SqlClient.SqlConnection("server=localhost;uid=sa;pwd=***;database=master"));//一個資料庫連接字串 Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(conn); Microsoft.SqlServer.Management.Smo.Database db = server.Databases["tempdb"]; Microsoft.SqlServer.Management.Smo.Table tb= db.Tables["test"]; System.Collections.Specialized.StringCollection sc= tb.Script(); foreach (String s in sc) { Console.WriteLine(s); }
輸出: SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE [dbo].[test]( [id] [int] IDENTITY(1,1) NOT NULL ) ON [PRIMARY]