Forum Delphi.cz

Databáze => MS SQL => Téma založeno: rustymattock 19-11-2012, 19:03:56

Název: připojení na databázi
Přispěvatel: rustymattock 19-11-2012, 19:03:56
Zdravím kluci...

Potřeboval bych od vás základní připojení k MSSQL (jednoduchý kód, nebo správné vyplnění vizuální komponenty)
Nejlépe pro komponentu ZEOS (ale případně si nechám poradit). Mě tam píše, že servr neexistuje, nebo byl odepřed přístup.
Připojení a práce s MySQL je bez problémů, ale MSSQL vidím porvé v životě a bohužel se mu nemůžu vyhnout
Delphi 7
MSSQL 2008

děkuji
Název: Re:připojení na databázi
Přispěvatel: Mi.Chal. 19-11-2012, 19:41:37
Existuje ten server? Problém může být třeba v tom, že mssql defaultně nemá povolený přístup přes TCP/IP, musíš to zapnout v konfiguraci serveru.
Název: Re:připojení na databázi
Přispěvatel: rustymattock 19-11-2012, 23:09:10
TCP/IP byl implicitně opravdu vypnutý, takže děkuji za radu.
Nicméně pořád se nepřipojím.
Na přiloženém obrázku je pár detailů, které by mohli pomoct při řešení, jelikož já se nedokážu hnout.

(http://rustymattock.sweb.cz/qwe.JPG)
http://rustymattock.sweb.cz/qwe.JPG (http://rustymattock.sweb.cz/qwe.JPG)

P.S:předpokládám snad správně, že User má být dle nastavení "LocalSystem"
Název: Re:připojení na databázi
Přispěvatel: Alnath 20-11-2012, 10:13:11
Především si spusť i službu Server Browser. Tohle je sice pro server 2005, ale bude to podobné i pro 2008: http://support.microsoft.com/kb/914277/en-us

Hlavně je třeba mít nakonfigurovaná práva i pro databázi, ke které se chceš připojit. Buď SQL účet nebo uživatele z AD a tento účet pak správně zadat v klientovi.
Název: Re:připojení na databázi
Přispěvatel: Alnath 20-11-2012, 10:19:39
Možná pomůže i toto: http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx
Název: Re:připojení na databázi
Přispěvatel: Alnath 20-11-2012, 10:24:56
Jo a ještě skriptík na otevření potřebných děr do firewallu, abys to nemusel dělat "pěšky" - ulož si následující jako např. SQLfirewall.cmd a spusť:

@rem firewallconfig.cmd by Rob Kerr 
@echo =========  SQL Server Ports  ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022 
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo =========  Analysis Services Ports  ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo =========  Misc Applications  ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 "HTTP"
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 "SSL"
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)

netsh firewall set multicastbroadcastresponse ENABLE
Název: Re:připojení na databázi
Přispěvatel: Mi.Chal. 20-11-2012, 12:23:48
Taky může být problém v právech, defaultně je povolena jenom windows authentikace. Pokud tam chceš založit usery s heslem, tak hledej mixed mode (nebo to můžeš nastavit třeba v management studiu, ale to musíš nainstalovat a musíš se k serveru připojit).
Název: Re:připojení na databázi
Přispěvatel: rustymattock 20-11-2012, 13:56:19
ta konfigurace práv pro databázi se mi předběžně jeví jako nejpravděpodobnější řešení problému.
Při vytvoření databáze v managment studiu mi to totiž nikde možnost vytvoření účtu nedalo. Takže jen střílím při zadávání přihlašovacích údajů do ZEOS komponenty.
Kde je možné k databázi vytvořit/změnit přístupové práva ?
Název: Re:připojení na databázi
Přispěvatel: Mi.Chal. 20-11-2012, 14:42:46
pod serverem je sekce security, pod ni logins. Tam muzes pridat usera a nastavit mu prava pro jednotlive db. Defautlne to ale pouziva windows auth, takze se tam zadnym loginem nepripojis, v prihlasovacim dialogu bys mel vybrat windows authentication.
Název: Re:připojení na databázi
Přispěvatel: rustymattock 20-11-2012, 17:37:15
tak by sme se mohli dopracovat k jednoduchému připojení na nějakém modelovém nastavení...
Mám nastaven ten windows auth, takže v podstatě se potřebuji dopátrat co zadám jako "User", jestli zadám vůbec nějaké heslo (jestli jo, jaké, když do WIN se přes heslo nepřihlašuji) a co zadat do "HostName" (předpokládám, že localhost, jelikož pro začátek budu experimentovat jen na lokalce).
Je to tak ?
...následně budu pátrat po daších možnostech, které mi znemožňují připojení.

PS: server existuje, databáze existuje (v managment studiu bez problémů vytvářím tabulky i sloupce)
Název: Re:připojení na databázi
Přispěvatel: pf1957 20-11-2012, 18:19:35
Potřeboval bych od vás základní připojení k MSSQL (jednoduchý kód, nebo správné vyplnění vizuální komponenty)
Nejlépe pro komponentu ZEOS (ale případně si nechám poradit). Mě tam píše, že servr neexistuje, nebo byl odepřed přístup.
Připojení a práce s MySQL je bez problémů, ale MSSQL vidím porvé v životě a bohužel se mu nemůžu vyhnout
Delphi 7
MSSQL 2008
Predpokladam, ze sem jsi se dival: http://www.connectionstrings.com/ (http://www.connectionstrings.com/)
Název: Re:připojení na databázi
Přispěvatel: Radek Červinka 20-11-2012, 21:21:21
Co teda pouzivas za komponenty?

Pokud ADO, tak jak pise pf1957 se kukni na to ConnectionString. Nebo jinak: vrzni TAdoConnection na formular.
Pravym tlacitkem na komponentu - Edit Connection String. V Dialogu Build.
Otevre se ti wizard a tam v zalozce Zprostredkovatel vyber "MS OLE DB Provider for SQL Server" a dej dalsi.
Zde se vybere server, typ prihlasovani (windows, nebo sql server / viz. jak ti nekdo radil mixed mode na SQL Serveru). Tlacitkem Testovat pripojeni to proveris.
Pokud OK, tak to zavri a v property komponenty se ti objevil ConnectionString.
Toto by ti melo stacit v tom nejhorsim pripade (pokud je vypnuta property LoginPrompt).
Podle toho zda jsi v tom wizardu nastavil ukladat heslo nebo ne, muzes pouzit LoginPrompt nebo heslo strkat do ConnectionStringu.

Já connection string generuji
Název: Re:připojení na databázi
Přispěvatel: pf1957 20-11-2012, 22:27:08
Tusim psal, ze to chce pro ZEOS. S temi jsem se pred lety pred unicodifikaci Delphi pripojoval na MySQL a PostgreSQL a ted jsem si vzpomel, ze tenkrat byl problem s tim, ze ZEOS pouzival nejakou zastaralou DLL, kterou M$ prestal od verze MSSQL 2008 podporovat. Uz si to moc nepamatuju, nicmene zde v archivu je muj prispevek http://forum.delphi.cz/index.php/topic,11634.msg68402.html#msg68402 (http://forum.delphi.cz/index.php/topic,11634.msg68402.html#msg68402).

Ale jak je to se soucasnou verzi ZEOS netusim.
Název: Re:připojení na databázi
Přispěvatel: rustymattock 20-11-2012, 23:36:30
Děkuji kluci. Věnovali jste mi víc času, než jsem původně očekával.To ADO mě nakoplo. Přes něj mi to funguje.
ZEOS jsem si oblíbil, ale v podstatě mi ADO na první pohled přijde synatxí stejné. Přes zeos se bohužel pořád nepřipojím (asi bych potřeboval stejný navod jako na ADO :-D )
Je snad na použití ADO něco špatně, něco kde nevyhovuje ??
Já totiž s tim nemám žádnou zkušenost.

Aplikace bude spravovat 1 databázi, cca 3-15 tabulek (většina do 10 sloupců, některé kolem 30 sloupců), většina tabulek od 100-500 záznamů a přistupovat k ní bude 2-10 klientů.
Čili ne moc velké sousto.
Nepříjemnost je akorát nutný, docela častý  refresh, kůli synchronizaci zadaných dat mezi klienty.
Název: Re:připojení na databázi
Přispěvatel: pf1957 21-11-2012, 08:24:31
Je snad na použití ADO něco špatně, něco kde nevyhovuje ??
IMHO je ADO pro MSSQL primarni volbou a pro beznou praci, kdy apllikace pracuje jen s jednim MSSQL serverem jsme s tim nemeli problemy.

Ovsem narazili jsme na pripad, ze se napr. z triggeru jedne DB lezlo do jine MSSQL databaze na jinem serveru a tam byly chyby, u kterych mela tehdejsi verze ADO problemy s reportovanim chyb a atomicitou transakci. Snazil jsem se to tenkrat resit na foru http://forum.delphi.cz/index.php/topic,11613.15.html (http://forum.delphi.cz/index.php/topic,11613.15.html), jeste tam psal podobnou zkusenost Jirka Foldyna, taky u transakci pres linkovane servery.

Ale s jednim serverem by to melo byt v pohode.
Název: Re:připojení na databázi
Přispěvatel: rustymattock 21-11-2012, 13:20:26
Citace
IMHO je ADO pro MSSQL primarni volbou a pro beznou praci, kdy apllikace pracuje jen s jednim MSSQL serverem jsme s tim nemeli problemy.

v tom případě považuji problém za uzavřený a ještě jednou všem děkuji