| Hakan Can | 30.05.2005 - 15:41:54 |
| BDE kullanmadan (dbExpress componentleriyle) birden fazla veritabanında ortak SQL kullanılabilir mi?
Kullanılabilirse nasıl kullanılır? Örneğin: SELECT A.KODU, B.ADI FROM ":A_VERITABANI:KODLAR" A INNER JOIN ":B_VERITABANI:ADLAR" B ON A.ID = B.ID gibi. | |
| gkimirti | 30.05.2005 - 17:23:06 |
| sql zaten standartdır, tabi ansisql kullanıyorsanız.
sql ile yazdıgınız ifadeleri istediginiz veritabanında kullanabilirsiniz. | |
| Hakan Can | 30.05.2005 - 17:44:08 |
| Sorum yanlış anlaşıldı galiba.
Benim sorum aynı query içinde aynı anda birden fazla veritabanına erişilmesi ile ilgili. | |
| sadettinpolat | 30.05.2005 - 18:31:54 |
| aynı anda aynı query ile birden fazla veritabanına erişilemez her halde. böyle bir şey bugüne kadar görmedim duymadım.
dbexpress ile şunu yapabilirsiniz. sql standartlarına uyduğunuz sürece; sadece dbexpressin sqlconnection bileşenin bağlantı ayarlarını değiştirerek, uygulama üzerinde her hangi bir değişiklik yapmadan birden fazla sql sunucuyu kullanabilirsiniz. | |
| mege | 30.05.2005 - 19:19:58 |
| http://www.delphiturkiye.com/forum/viewtopic.php?p=7245#7245
sanırım benzer bi soru | |
| fahrettin | 31.05.2005 - 07:29:04 |
| mege nin verdigi linkte konu gecmisti fakat orada TDatabase nesnesi yani BDE kullanılıyor.... BDE olmaksızın bu işin olmasi bana biraz zor geliyor.... O sql i yorumlayacak bi database engine şart çünkü.... Yani yazacağınız bir join de farklı veritabanlarından farklı tabloları getirmek bu veritabanlarına ilgili işleri paylaştırmak vs...
Veritabanınız nedir? Belki soyle bir yontem olabilir... Sybase de proxy table diye bir şey var. Mevcut veritabanınıza bir başak veritabanından bir tabloyu proxy table olarak verdiginiz bir isimle kaydediyorsunuz. Ve artik diger veritabanındaki o tablo bu veritabanında bir isimle kullanımıza hazır istediginiz gibi aynı select icinde kullanın.... Kullandığınız veritabanın bu tur ozelliklerini arastirarak bu sql cumlenizi bir stored procedure seklinde yazmaya çalışmak tek çare gibi duruyor... Proxy table gibi bir ozellik belki vardir. Ya da ilgili database in boyle bir kabiliyeti olabilir .Yani başka bir veritabanından bir tabloyu select icinde kullandırtma imkanı.... Kanaatimce bu iş delphi tarafında BDE siz zor .... | |
| Hakan Can | 31.05.2005 - 09:46:26 |
| Asıl isteğim veritabanından bağımsız olarak bunun gerçekleştirilebilmesi (BDE'de olduğu gibi).
InterBase/FireBird' de bu iki adımda yapılabiliyor (External File). Ama bildiğim kadarıyla tek adımda yapılabilmesi mümkün değil? Ben bunun şu anki mevcut Delphi componentleri veya DLL'leriyle yapılamadığı kanaatindeyim zaten. Ama belki bu özellikleri de olan geliştirilmiş dbExpress componentleri/DLL'leri vardır diye düşünüyorum. | |
| doganzorlu | 31.05.2005 - 15:29:17 |
| Selam,
Veritabanlarından birisini master seçip diğerini bunun içine link ederek bu işi yapabilirsiniz. Aslında bu şekilde yapmalısınız. Çift taraflı commit yapabilmek için buna ihtiyacınız var. Oracle: Sadece diğer oracle db leri link edebiliyorsunuz. MS SQL Server: ODBC text vs ADO nun kullanabildiği her türlü kaynağı link edebiliyorsunuz. SyBase: Bir önceki mesajda geçmiş, diğer hangi db leri link edebildiğinizi bilemiyorum. MSDE yi birbirine link edilemeyen iki db yi birlikte kullanmak için kullanabilirsiniz. Misal bir excel tablosuyla oracle DB table i birbirine join edebilirsiniz. Performans ne olur diye sorarsanız bilemeyeceğim. Kolay gelsin. | |
| Hakan Can | 31.05.2005 - 16:57:39 |
| Örnek bir query yazabilir misiniz? | |
| fahrettin | 01.06.2005 - 09:14:51 |
Oracle: Sadece diğer oracle db leri link edebiliyorsunuz.
Sybase e de IBM DB/2, Oracle, Ms SQL ve ODBC uzerinden baglanilabilen her turlu veritabanını remote server olarak tanımlayıp iclerinden istenilen tablolari proxy table olarak kullanmak mumkun.....MS SQL Server: ODBC text vs ADO nun kullanabildiği her türlü kaynağı link edebiliyorsunuz. SyBase: Bir önceki mesajda geçmiş, diğer hangi db leri link edebildiğinizi bilemiyorum. | |
| Hakan Can | 01.06.2005 - 09:42:38 |
| Teşekkürler. | |
| Kuri_YJ | 01.06.2005 - 14:01:24 |
| Selamlar,
Ben de ekleyeyim, MS-SQL Server'da Linked server denen bir olay vardır. Yani bırakın ayrı DB'de olmasını farklı server'larda da olsa tabloya ulaşma imkanı tanır. yani SELECT * FROM Server1.Database1.dbo.Tablo1 diyerek veriye ulaşmanızı sağlar. Kolay Gelsin | |
| fahrettin | 01.06.2005 - 15:38:52 |
| tabiki zaten sybase de bu dediğimi inernet uzerinden yurt disindaki bir veritabanin baglanarak denemistim.... | |
| doganzorlu | 01.06.2005 - 22:35:36 |
| Selam,
MS SQL server da Linked db eğer MSSQL değilse; SELECT * FROM openquery(RDBALIAS,'SELECT * FROM xx') şeklinde kullanabiliyorsunuz. Yani remote db nin schema sını cache etmiyor. Malumat.. | |
| Hakan Can | 02.06.2005 - 09:27:15 |
| Herkese teşekkürler. | |