使用SQLDMO控制 SQL Server (轉)

worldblog發表於2007-12-09
使用SQLDMO控制 SQL Server (轉)[@more@]

使用DMO控制


鄧振波


廢話少說,步入正題,關於MS SQL Server特性優缺點的東西留待以後再討論。
為外部的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->PuPacketSize(1024);
/*
該建立連線了,為什麼呢??服務還沒有啟動啊?怎麼連線呢?不是傻了嗎?道理跟你慢慢跟你說啦:這是試探一下SQL Server是不是已經啟動了,如果它已經啟動,那麼我們就不用再次啟動了(再次啟動也是錯誤:的例項已經執行中),呵呵,已經啟動了,幹嗎還要我寫程式碼啟動它啊?所以,如果SQL Server如果沒有啟動(當然其他原因也會觸發異常),下面的異常處理程式碼就會到,我們將在異常處理中執行啟動
*/
CString strServer(”(Local)”);/*連線啟動的SQL 的伺服器名(這裡是本地SQL Server 服務,記住將本地的SQL Server服務停掉,然後測試啊)*/
Cstring strUserName(“sa”); //連線啟動的名,也可以使用信任連線,不用提供使用者名稱和密碼,請參考MSDN
Cstring strPass(””);//就是密碼啦 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服務我就不用說了吧。


 


/sqldmo.zip">工程原始檔


更多文章在


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章