tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルSQLSERVER2005でSQLDMO.DLLの使用方法
記事No12998
投稿日: 2008/09/02(Tue) 16:49
投稿者ヘイロー
お世話になっております。

OS:WINDOWSXP
VB6 SP6
DB:SQLSERVER2005(開発マシンとは別端末にインストール)
で開発をしております。

SQLSERVER2005のDBのバックアップと復元をSQLDMO.DLLを
使用して処理をしたいと思っています。
SQLDMO.DLLを参照設定にて追加しまして、以下のように
プログラムを記入しました。

    Dim objServer As SQLDMO.sqlServer
    Dim BackupObj As SQLDMO.Backup
    Dim ServerName As String
    Dim LoginName As String
    Dim LoginPass As String
    Dim DbName As String
        
    Set objServer = New SQLDMO.sqlServer
    Set BackupObj = New SQLDMO.Backup
    
    'システムとの接続を確立する
    objServer.Connect ServerName, LoginName, LoginPass
    BackupObj.Database = DbName
    BackupObj.Files = LTmpFileName$
    BackupObj.Initialize = False '既存上書き
    BackupObj.Action = SQLDMOBackup_Database
    
    'バックアップを実行する
    BackupObj.SQLBackup objServer  ←ここでエラー

最後のバックアップを実行するところで以下のようなエラーが出ます。
「このサーバーに接続するには、SQL Server Management Studio または SQL Server
Management Objects (SMO) を使用してください。」

そこで、SQLSERVER2005をインストールしました端末より
「Microsoft.SqlServer.ConnectionInfo.dll」「Microsoft.SqlServer.Smo.dll」
を持ってきて、開発するマシンにて、VB6で参照設定したところ
「指定されたファイルへの参照は登録できません」とエラーが表示されます。

どちらかのエラーが出ずに、バックアップ・復元処理ができるようにするには
どうしたらよろしいでしょうか。
どなたかご教授お願いします。

[ツリー表示へ]
タイトルRe: SQLSERVER2005でSQLDMO.DLLの使用方法
記事No12999
投稿日: 2008/09/02(Tue) 22:39
投稿者魔界の仮面弁士
> 以下のようにプログラムを記入しました。
当方の VB6 環境からは、提示されたコードにて、SQL Server 2005(9.0.3042) の
バックアップを取る事ができました。

なお、当方の SQLDMO.DLL は ver.2000.85.2004.0 でしたので、
"SQL Server 2005 下位互換コンポーネント" の SQL-DMO ライブラリと
同等バージョンのものだと思われます。

http://support.microsoft.com/kb/934396/ja
http://www.microsoft.com/downloads/details.aspx?FamilyID=df0ba5aa-b4bd-4705-aa0a-b477ba72a9cb&DisplayLang=ja#BackCompat


> BackupObj.Files = LTmpFileName$
念のために確認。これは、VB6 アプリ側から見たパスではなく、DB サーバ上から見たパスを
意味しますが、その点は大丈夫ですよね?


> 「このサーバーに接続するには、SQL Server Management Studio または SQL Server
> Management Objects (SMO) を使用してください。」
その VB6 アプリを実行する端末上の SQL Server Management Studio から、
対象のサーバに接続できていますか?


> 「Microsoft.SqlServer.ConnectionInfo.dll」「Microsoft.SqlServer.Smo.dll」
> を持ってきて、開発するマシンにて、VB6で参照設定したところ
そもそも、VB6 から参照設定して使うようなファイルではありませんので。
(それらは ActiveX DLL では無く、.NET の DLL です)


> バックアップ・復元処理ができるようにするには
"BACKUP DATABASE" や "RESTORE DATABASE" だとどうでしょうか?

http://msdn.microsoft.com/ja-jp/library/ms186865.aspx
http://msdn.microsoft.com/ja-jp/library/ms186858.aspx

[ツリー表示へ]
タイトルRe^2: SQLSERVER2005でSQLDMO.DLLの使用方法
記事No13000
投稿日: 2008/09/03(Wed) 09:10
投稿者ヘイロー
魔界の仮面弁士さん、返信ありがとうございます。

> http://www.microsoft.com/downloads/details.aspx?FamilyID=df0ba5aa-b4bd-4705-aa0a-b477ba72a9cb&DisplayLang=ja#BackCompat
上記アドレスより、「Microsoft SQL Server 2005 下位互換コンポーネント 」を
ダウンロードして開発端末で実行しましたところ、エラーなくバックアップができました。

>
> > BackupObj.Files = LTmpFileName$
> 念のために確認。これは、VB6 アプリ側から見たパスではなく、DB サーバ上から見たパス
> を意味しますが、その点は大丈夫ですよね?
ご配慮ありがとうございます。
本当は、VBアプリ側から見たパスが理想なのですが。

> > 「このサーバーに接続するには、SQL Server Management Studio または SQL Server
> > Management Objects (SMO) を使用してください。」
> その VB6 アプリを実行する端末上の SQL Server Management Studio から、
> 対象のサーバに接続できていますか?
VB6アプリを実行する端末には、SQL Server Management Studioはインストールせずに
ODBC接続にしています。ODBC接続ではサーバに接続できています。

> > 「Microsoft.SqlServer.ConnectionInfo.dll」「Microsoft.SqlServer.Smo.dll」
> > を持ってきて、開発するマシンにて、VB6で参照設定したところ
> そもそも、VB6 から参照設定して使うようなファイルではありませんので。
> (それらは ActiveX DLL では無く、.NET の DLL です)
そうだったのですか。勉強になりました。

> > バックアップ・復元処理ができるようにするには
> "BACKUP DATABASE" や "RESTORE DATABASE" だとどうでしょうか?
>
> http://msdn.microsoft.com/ja-jp/library/ms186865.aspx
> http://msdn.microsoft.com/ja-jp/library/ms186858.aspx
こちらも参考にさせていただきます。

今回、「Microsoft SQL Server 2005 下位互換コンポーネント 」は開発端末に
インストールしまして、エラーなくできましたが、VB6アプリをインストールして
実行したい端末にも「Microsoft SQL Server 2005 下位互換コンポーネント 」
をインストールしたほうがよろしいのでしょうか?
VB6アプリを実行する端末のOSはXPで、SQL Server Management Studioなどは、
インストールせずに、サーバDBにはODBC接続をします。

よろしくお願い致します。

[ツリー表示へ]