|
První
kroky
Vytváříme-li projekt pracující s SQL-DMO, bude zřejmě nejvhodnější si
nejprve tuto knihovnu zpřístupnit. Z nabídky Project si vyberte References a
poté Microsoft SQLDMO Object Library:

Nyní si do
projektu založte nový modul a v něm nadeklarujte globální proměnnou, která
nám bude sloužit pro provázání s objektem SQLServer:
Dim
MySQLServer
Tím máme
připraveny základní věci pro první krok - přihlášení k serveru.
Přihlášení k serveru
Při přihlašování k serveru musíme znát tři věci - jméno, uživatele a
heslo. Opět pracujeme s modelem ověřování SQL (více informací v seriálu o
práci s SQL Serverem). Takže na formulář si dáme tři TextBoxy
(getServerName, getUserName, getPassword) a tlačítko pro připojení
(cmdConnect).

Nyní na
událost Click tlačítka zapište:
'Vytvoření
objektu
Set MySQLServer = CreateObject("SQLDMO.SQLServer")
'SQL Autentizace
MySQLServer.LoginSecure = False
'Připojení k
serveru
MySQLServer.Connect ServerName:=getServerName.Text, Login:=getUserName.Text,
Password:=getPassword.Text
Pokud jste zadali správné parametry a nebyla zobrazena žádná chybová hláška,
tak jste připojeni SQL serveru. Pokud si nyní stopneme služby SQL Serveru a
zkusíme se znovu přihlásit, dostaneme nicneříkající chybovou hlášku
Automation Error. Je to způsobeno tím, že sme si neověřili, zda SQL Server
běží. Upravme tedy náš kód následovně:
'Vytvoření
objektu
Set MySQLServer =
CreateObject("SQLDMO.SQLServer")
'SQL Autentizace
MySQLServer.LoginSecure = False
'Ověření stavu SQL
Serveru
MySQLServer.Name = getServerName.Text
If Not MySQLServer.Status = 1 Then
MsgBox "Vámi požadovaný SQL server neběží !!!",
vbExclamation + vbOKOnly, "Upozornění"
Else
'Připojení
MySQLServer.Connect
ServerName:=getServerName.Text, Login:=getUserName.Text,
Password:=getPassword.Text
End If
Pomocí parametru Status si můžeme kdykoliv ověřit stav SQL serveru (služeb),
pokud známe jeho jméno nebo IP. Těch stavů může být několik, jsou z kolekce
SQLDMO_SVCSTATUS_TYPE a jejich seznam naleznete v Object Browseru u knihovny
SQLDMO, objekt SQLServer.
Vylepšeme
si ještě nyní náš kód pro přihlašování. Proč se zdržovat ručním zapínáním
SQL služeb, když si to můžeme naprogramovat přímo z VB:
'Vytvoření
objektu
Set MySQLServer = CreateObject("SQLDMO.SQLServer")
'SQL Autentizace
MySQLServer.LoginSecure = False
'Ověření stavu SQL
Serveru
MySQLServer.Name = getServerName.Text
If Not MySQLServer.Status = 1 Then
'Spuštění
serveru
MySQLServer.Start False, getServerName.Text
End If
'Připojení
MySQLServer.Connect ServerName:=getServerName.Text, Login:=getUserName.Text,
Password:=getPassword.Text
Server, pokud není spuštěn, spouštíme pomocí metody Start. Druhý parametr je
jasný, ovšem je třeba vysvětlit hodnotu False. Tato hodnota určuje
startovací mód serveru. Pokud bude nastavena na true, pak se po úspěšném
startu server automaticky pokusí přihlásit na základě zaslaných parametrů,
které ale zde nyní neuvádíme:
object.Start( StartMode , [ Server ] , [
Login ] , [ Password ] )
Kdybychom
využívali automatického přihlášení po startu serveru, musel by náš kód
vypadat asi trochu jinak (mám na mysli tu podmínku), ale to už byste jistě
dokázali upravit sami.
Chyby
při přihlašování
Co se stane, pokud například zadáte chybné heslo ? To, že se
nepřihlásíte je asi jasné. Ovšem, je třeba ošetřit chybový stav:

Protože
využíváme věci z DLL knihovny, vrací se nám všechny chyby jako Run-time a
nemáme příliš velkou šanci si nejprve ověřit na serveru, zda je operace
proveditelná a podle toho se rozhodnout. Upravme si tedy kód následovně,
abychom ošetřili chybu při přihlašování:
On Error
GoTo loginerror
'Vytvoření objektu
Set MySQLServer = CreateObject("SQLDMO.SQLServer")
'SQL Autentizace
MySQLServer.LoginSecure = False
'Ověření stavu SQL
Serveru
MySQLServer.Name = getServerName.Text
If Not MySQLServer.Status = 1 Then
'Spuštění serveru
MySQLServer.Start False, getServerName.Text
End If
'Připojení
MySQLServer.Connect
ServerName:=getServerName.Text, Login:=getUserName.Text,
Password:=getPassword.Text
GoTo allok
loginerror:
If Err.Number = 18456 Then
MsgBox "Chybné heslo pro účet " +
getUserName.Text + " !", vbExclamation + vbOKOnly, "Upozornění"
Exit Sub
Else
Resume Next
End If
allok:
SQL Server má celou řadu chybových čísel identifikujících chybu, takže pokud
časem při přihlašování na nějakou narazíte, tak doporučuji si její stav
ošetřit příslušnou zprávou (například chyba 1722 je když nebyl SQL server
nalezen).
|