喫茶XRAYトップページ

[▲前のスレッド]

[687] MSSQLServer制御(SQLDMO)返信 削除
2006/2/20 (月) 16:44:51 Syake
メモ書きさせて下さい。
MQLServerをSQLDMOを使用してDelphiで制御するサンプル

Uses ComObj;

//サーバーのリストを取得
procedure GetMSSQLServerList(var ServerNameList : TStrings);
var
   objSQLDMO, NameList : OleVariant;
   i : Integer;
begin
   ServerNameList.Clear;

   try
      objSQLDMO := CreateOleObject('SQLDMO.Application');
   except
      MessageDlg(#13 + 'Microsoft SQLDMO Object Library がインストールされていません' ,mtError,[mbOK],0);
      Exit;
   end;

   NameList := objSQLDMO.ListAvailableSQLServers;

   for i := 0 to NameList.Count -1 do
   begin
      ServerNameList.Add(Trim(NameList.Item(i+1)));
   end;
end;

//サーバー停止
procedure NetStopSQLServar();
var
   objSQLDMO :OleVariant;
begin
   try
      objSQLDMO := CreateOleObject('SQLDMO.SQLServer');
   except
      MessageDlg(#13 + 'Microsoft SQLDMO Object Library がインストールされていません' ,mtError,[mbOK],0);
      Exit;
   end;
   try
      objSQLDMO.LoginTimeout := 60;
      objSQLDMO.Start(True,'(local)','sa','');
   except
      on E: Exception do
      begin
         //'-2147023840'サーバーが既に動作した状態で Server.Start が NT で実行される場合、このエラーが発生します。
         if E.Message = '-2147023840' then
         begin
            MessageDlg(#13+ '既に起動しています',mtInformation,[mbOK],0);
         end else begin
            MessageDlg(#13 + E.Message ,mtError,[mbOK],0);
         end;
      end;
   end;
end;

//サーバー開始
procedure NetStartServer();
var
   objSQLDMO :OleVariant;
begin
   try
      objSQLDMO := CreateOleObject('SQLDMO.SQLServer');
   except
      MessageDlg(#13 + 'Microsoft SQLDMO Object Library がインストールされていません' ,mtError,[mbOK],0);
      Exit;
   end;
   try
      objSQLDMO.Connect('(local)','sa','');
      objSQLDMO.Stop;
   except
      on E: Exception do
      begin
         MessageDlg(#13 + E.Message ,mtError,[mbOK],0);
      end;
   end;
end;

http://homepage2.nifty.com/inform/vbdb/sqldmo_createdb.htm
によると他にも、いろんな事ができます。


[688] Re:MSSQLServer制御(SQLDMO)返信 削除
2006/2/20 (月) 16:51:38 Syake
訂正

> //サーバー停止
>//'-2147023840'サーバーが既に動作した状態で Server.Start が NT で実行される場合、このエラーが発生します。
>if E.Message = '-2147023840' then

捕まりません。

on E: Exception do
begin
   MessageDlg(#13 + E.Message ,mtError,[mbOK],0);
end;
で十分です。

今更のように、MSSQLServer(MSDE)をDelphi(Win32)でいじろう
って人がいるのかどうか疑問ですが。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82