[ ijurisic @ 27.08.2007. 18:07 ] @
Kako preko C# pročitati katalog baza na SQL serveru?

p.s. - za kratki programcic bio bih zahvalan!
[ bjevta @ 28.08.2007. 08:38 ] @
ako je u pitanju verzija 2005 ili je dozvoljeno instaliranje MS softvera (object model koji ide uz 2005, mada skoro sve radi i sa 2000), onda se može koristiti SMO. Javi ako ti treba takav primer.
[ ijurisic @ 30.08.2007. 12:00 ] @
Pa naravno da mi treba primjer koda .... piši, željno iščekivam tvoj kod ....
[ bjevta @ 30.08.2007. 16:18 ] @
pa, kako si brzo tražio, ne bi se reklo... :)

za ovaj experimet trebaće na SMO. Prvo da se zakačimo za neki server. Ako nije trusteed connection, onda idemo ovako:
Code:

              public void ConnectToServer(string aServerName, string anUsername, string aPassword)
        {
            Microsoft.SqlServer.Management.Common.ServerConnection smoServerConnection =
                new Microsoft.SqlServer.Management.Common.ServerConnection(aServerName, anUsername, aPassword);
            Microsoft.SqlServer.Management.Smo.Server aSmoServer = new Microsoft.SqlServer.Management.Smo.Server( smoServerConnection );
            aSmoServer.ConnectionContext.Connect();


a ako je trusteed konekcija, što je češći slučaj, onda je dovoljno ovo:
Code:

        public void ConnectToServer(string aServerName)
        {
            Microsoft.SqlServer.Management.Smo.Server aSmoServer = new Microsoft.SqlServer.Management.Smo.Server(aServerName);


Zatim čitamo spisak baza:
Code:
foreach(Microsoft.SqlServer.Management.Smo.Database aSmoDb in smoServer.Databases) {...}


pri čemu obraćamo pažnju na IsSystemObject property Database objekta, ako to ima značaja.

Da bismo startovali ovaj kod, trebaće nam reference u projektu:
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SmoEnum.dll
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll

[Ovu poruku je menjao bjevta dana 30.08.2007. u 17:28 GMT+1]
[ ijurisic @ 30.08.2007. 16:34 ] @
Probao sam ali ne ide, evo greška:

Error2The type or namespace name 'Management' does not exist in the namespace 'Microsoft.SqlServer' (are you missing an assembly reference?)
C:\C#\KPI\WindowsApplication1\Odabir_pod.cs2033WindowsApplication1
[ Neznalica_sa_ugla @ 30.08.2007. 18:49 ] @
Ja imam isti problem , nikako ukljuciti referencu !!! Da li treba nesto dodatno biti instalirano ???
Uglavnom ovo je ok , ali kako uhvatiti ime baze ???

[Ovu poruku je menjao Neznalica_sa_ugla dana 30.08.2007. u 21:08 GMT+1]
[ ijurisic @ 30.08.2007. 20:18 ] @
Radi radi, hvala puno !!!
[ Neznalica_sa_ugla @ 05.09.2007. 20:02 ] @
Moram ovdije dodatno pitati ..
Ako se program izvrsava na nekom drugom racunalu gdije je SQL drugacije instaliran ( u nekom drugom folderu ili disku ) , da li c e ovako postavljene reference sa fiksnom putanjom stvarati probleme ???
[ bjevta @ 05.09.2007. 20:20 ] @
Korisni SMO linkovi:

SMO installer: http://www.microsoft.com/downl...E8B9D835CDC&displaylang=en

SMO samples (ima gomila na netu, samo proguglaj i samo će ti se kasti):
http://www.sqlteam.com/article...base-objects-using-smo-updated
http://www.sqldbatips.com/showarticle.asp?ID=34

Odličan installer:
http://www.jrsoftware.org/