タイトル : Re^3: ファイルレイアウトを印刷したいのですが 投稿日 : 2006/07/12(Wed) 17:00 投稿者 : 魔界の仮面弁士
> Microsoft.SqlServer.Smo.dllが見当たりませんでした。 SQL Server 2005 の SDK に付属しています。規定のインストール先は、 C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\ です。 > MSDE2000では方法が違うのでしょうか? MSDE2000 / SQLServer 2000 のインスタンスも列挙できます。 しかし、Microsoft.SqlServer.Smo.dll は、.NET Framework 2.0 を要求します。 http://msdn2.microsoft.com/ja-jp/library/ms210350.aspx 一方、Visual Studio.NET 2003 は、.NET Framework 1.1 ベースの開発環境なので、 今回は使えないということになりますね。 この場合は、SmoApplication.EnumAvailableSqlServers の代わりに、 SQL-DMO を使うことができるかと思います。VBScript でいえば、こんなコードです。 For Each Svr In CreateObject("SQLDMO.Application").ListAvailableSQLServers() MsgBox Svr Next > 私の環境なのですが、VB.NET2003 MSDE2000です。 同じ環境を持っていないので自信はありませんが…おそらく、 VB.NET 2003 + SQLDMO のイメージで書くと、こんな感じになるかと。 # VBScript + SQLDMO や VB2005 + SMO に比べると、聊か冗長的なのが難点。 'COM参照: C:\Program Files\Microsoft SQL Server\80\Tools\binn\SQLDMO.DLL Imports System.Runtime.InteropServices Public Module Module1 Public Sub Main() Dim App As SQLDMO.ApplicationClass = Nothing Dim List As SQLDMO.NameList = Nothing Console.Write("使用可能な SQL Server を列挙します。") Try App = New SQLDMO.ApplicationClass() List = App.ListAvailableSQLServers() For I As Integer = 0 To List.Count - 1 Dim Server As String = List.Item(CObj(I)) Console.WriteLine(Server) Next Finally If Not IsNothing(List) AndAlso Marshal.IsComObject(List) Then Marshal.ReleaseComObject(List) End If If Not IsNothing(App) AndAlso Marshal.IsComObject(App) Then Marshal.ReleaseComObject(App) End If End Try Console.Write("Enter を押してください:") Console.ReadLine() End Sub End Module これらは、SQLServer インスタンスの列挙方法ですが、SMO / SQLDMO を使うことで、さらに Database を列挙したり、さらに Database 内の Table を列挙したりすることもできます。 > 配布先のMSDEはやはり、MATUMOTO01ではなくなってしまうのでしょうか? MSDE 2000/Rel.A は、通常は自分自身(ローカル PC 上) にインストールされるわけですから、 接続先は "(local)" もしくは "(local)\インスタンス" になるかと思います。 |