程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用SQLDMO控制SQL Server

使用SQLDMO控制SQL Server

編輯:關於SqlServer

微軟為外部程序的MS SQL Server服務訪問提供了功能強大的COM接口,通過這些接口,可以不費吹灰之力就可以方便的訪問SQL的服務。

第一步:在MS SQL Server的安裝目錄下面找到在sqldmo.rll文件,然後

#import "sqldmo.rll" no_namespace

這樣就生產了sqldmo.tlh和sqldmo.tli文件,裡面包含了SQL的COM接口的定義和實現。

第二步:就是具體的實現了。

先來一個啟動SQL Server服務

BOOL StartSQLServer()
{
//先初始化COM
if (FAILED(CoInitialize(NULL)))
{
AfxMessageBox("Com初始化錯誤!");
return FALSE;
}
//定義一個SQL Server的對象指針
_SQLServerPtr spSQLServer;
//標准方法,建立實例
if (FAILED(spSQLServer.CreateInstance(__uuidof(SQLServer))))
{
AfxMessageBox("無法建立SQL對象!");
return FALSE;
}
try
{
//這裡設置連接SQL的一些參數
//簡單。設置Login超時
spSQLServer->PutLoginTimeout(10);
//隨便起個名字好啦,管不著我啦
spSQLServer->PutApplicationName("MyAppName");
spSQLServer->PutHostName("MyHostName");
//網絡數據Packet的大小
spSQLServer->PutNetPacketSize(1024);
/*
該建立連接了,為什麼呢??服務還沒有啟動啊?怎麼連接呢?不是傻了嗎?道理跟你慢慢跟你說啦:這是試探一下SQL Server是不是已經啟動了,如果它已經啟動,那麼我們就不用再次啟動了(再次啟動也是錯誤:服務器的實例已經運行中),已經啟動了,干嗎還要我寫代碼啟動它啊?所以,如果SQL Server如果沒有啟動(當然其他原因也會觸發異常),下面的異常處理代碼就會執行到,我們將在異常處理中執行啟動:*/
CString strServer(”(Local)”);
/*連接啟動的SQL 的服務器名(
這裡是本地SQL Server 服務,記住將本地的SQL Server服務停掉,然後測試啊)*/
Cstring strUserName(“sa”);
//連接啟動的用戶名,也可以使用信任連接,不用提供用戶名和密碼,請參考MSDN
Cstring strPassword(””);
//就是密碼啦 spSQLServer->
Connect(_variant_t(strServer),_variant_t(strUserName),_variant_t());
}
catch(_com_error pCE)
{
//連接錯誤啦,是服務器沒有啟動吧
try
{
//真正啟動SQL Server的代碼在這裡
spSQLServer->Start(FALSE,_variant_t(strServer),
_variant_t(strUserName),_variant_t(strPassword)); }
catch(_com_error pCE)
{
//這次的異常處理倒沒有執行什麼操作啊,隨便處理一下,返回一個錯誤信息啦。
AfxMessageBox(pCE.Description());
spSQLServer.Release();
return FALSE;
}
}
//
接下來是釋放資源啦,try catch是不是用成習慣了,反正是沒有錯的,多用一下也好啦。try
{
spSQLServer.Release();
spSQLServer.Release();
}
catch(_com_error pCE)
{
AfxMessageBox(pCE.Description());
return FALSE;
}
//釋放COM
CoUninitialize();
return TRUE;
}

通過#import "sqldmo.rll"還能獲得其他的很多接口,比如Attach數據庫、FullTextService、獲得設置SQL Server服務器的屬性等等,當然相對應的停止SQL服務我就不用說了吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved