tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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)\インスタンス" になるかと思います。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。