I/O error file "c:\windows\temp\fb_sort_1d2tv8" co

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
ahmetcaydere
Üye
Mesajlar: 6
Kayıt: 18 Mar 2005 02:50
Konum: ISPARTA
İletişim:

I/O error file "c:\windows\temp\fb_sort_1d2tv8" co

Mesaj gönderen ahmetcaydere »

I/O error file "c:\windows\temp\fb_sort_1d2tv8"
Error while trying to open file

arkadaşlar programda SELECT * FROM STOK_view ORDER BY CINSI şeklinde bir sorgu kullandım grid ekrana ilk defa gelirken yukarıdaki hatayı alıyorum server olan pc de bir sorun yok terminallerden baglandığında bu sorun çıkıyor order by kullanmadığımda problem yok yardımcı olabilirseniz sevinirim.
exe file i servere baglanıp oradan çalıştırıyorum. bu yüzdem temp klasörünümü kullanamıyor anlamadım

saygılar.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
Sanırım view çağırıyorsunuz, ama yanlış bilmiyorsam zaten view içerisinde tüm sorgunuz hazır da bekliyor ekstra bir order by idafedesinin kullanılmaması gerekebilir die düşünüyorum.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım bağlandığınız kullanıcının temp klasörüne yazma hakkı yok.
fb nin temp directorysini başka bir klasöre verin o klasörede
ağ bağlantısını yaptığınız kullanıcıya yetki verin. muhtemelen düzelecektir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Sorununuz FB nin TEMP işlemler için kullanacağı dizine tam erişim hakkına sahip olmamasından kaynaklanmaktadır. TEMP dizini neden gerekli ve nasıl seçiliyor ?


FireBird sıralama işlemlerini bellek olarak kullandığı bir dosya üzerinden yapmaktadır. Bu dosyalar firebird ün temp olarak bildiği yerde oluşturulur.

Kod: Tümünü seç


			sfb->sfb_dls = NULL;
			if (!DLS_get_temp_space(size, sfb))
				// There is not enough space
				error_memory(scb);

			// Create a scratch file

			sfb->sfb_file =
				(int) (IPTR) gds__temp_file(FALSE, SCRATCH, file_name,
									 sfb->sfb_dls->dls_directory, TRUE);

			// allocate the file name even if the file is not open,
			// because the error routine depends on it.
			// This is released during local_fini()

			sfb->sfb_file_name =
				FB_NEW(*getDefaultMemoryPool()) char[strlen(file_name) + 1];
			// FREE: sfb_file_name is freed in local_fini()

			strcpy(sfb->sfb_file_name, file_name);
Sıralam algoritmasını incelemek isteyenler CVS ağacı içinde;

firebird2/src/jrd/sort.cpp

dosyasına bakabilirler. Kolay gelsin.

NOT: FireBird temp alanı seçerken de aşağıdaki kodda görüldüğü gibi davranır. Eğer conf dosyasında verilmişse o dizini verilmemişse çevre değişkenlerini kullanır. Pimapen (pencere) sistemlerinde TMP ve TEMP çevre değişkenlerini bakar. Diğer sistemlerde TMP ye bakar. Aşağıda kodun bir bölümü var;

Kod: Tümünü seç

		// Find appropiate temp directory
		Firebird::PathName tempDir;
		if (!fb_utils::readenv(FB_TMP_ENV, tempDir)) 
		{
#ifdef WIN_NT
			const DWORD len = GetTempPath(sizeof(fbTempDir), fbTempDir);
			// This checks "TEMP" and "TMP" environment variables
			if (len && len < sizeof(fbTempDir))
			{
				tempDir = fbTempDir;
			}
#else
			fb_utils::readenv("TMP", tempDir);
#endif
		}
		if (!tempDir.length() || tempDir.length() >= MAXPATHLEN)
		{
			tempDir = WORKFILE;
		}
		strcpy(fbTempDir, tempDir.c_str());
bu kodun tamamını da;

firebird2/src/jrd/gds.cpp

core bileşen içinde bulabilirsiniz.

Selametle.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Cevapla