Sql Database Recovery süresi

Öncelikle belirtmekte fayda var; eğer SQL cevap vermiyorsa, çok meşgulse ya da çok uzun süren işlemler varsa restart iyi bir çözüm değildir.

Genellikle tüm Microsoft platformlarında işe yarayan bu temel teknik (!) SQL için tam bir kaosa neden olacaktır. Büyük bir transaction içindeki SQL restart edildiğinde tüm yapılan işlemler geri alınmalıdır (RollBack). Ve bu esnada veritabanı kullanılamaz, InRecovery olarak işaretlenir. (Resim 1)

Resim 1

InRecovery

Bu işlemin ne kadar süreceğini logdan izlemek mümkündür. Bunun için Log dosyasını Açarak incelememiz gerekecektir.

Okumaya devam et

ODBC ile veri aktarımı ve dış sistemlerle entegrasyon – 1

ODBC (Open Database Connectivity) en özet ifadesi ile bir veri tabanına erişim protokolü sağlar. Bu veri tabanı Access ya da SQL olabilir.
Genellikle aynı domainde bulunan ama farklı sunucuda barındırılan uygulamalardan veri transferi gerektiğinde ODBC basit bir erişim protokolü sunar.

Örneğin sisteminizde yer alan akıllı bir aygıtın (terazi, otomatik kapı, parmak izi okuyucu vb)
ya da bir uygulamanın (web sitesi, b2b, b2c sistemleri) kendi veritabanında tuttuğu verileri
AX ile entegre etmek istediğinizde ODBC kullanmak kolay bir çözüm olabilir.

Okumaya devam et

SQL Tablolarının boyutlarını ve satır sayılarını sorgulamak

Alttaki kodu kullanarak SQL veri tabanınızdaki tabloların boyutlarını, satır ve sütün sayılarını görebilirsiniz. Bunun için SQL Server’da varolan bir stored procedure kullanılmaktadır. Sorgulanan bilgi geçici bir tabloya yazılıp (tempTable) işlem bitince de silinecektir.


USE [DYNAMICSAX50]
GO
CREATE TABLE #TEMP
		(TABLE_NAME		SYSNAME ,
		ROW_COUNT		INT,
		RESERVED_SIZE	VARCHAR(50),
		DATA_SIZE		VARCHAR(50),
		INDEX_SIZE		VARCHAR(50),
		UNUSED_SIZE		VARCHAR(50))

SET NOCOUNT ON

INSERT #TEMP
	EXEC SP_MSFOREACHTABLE 'SP_SPACEUSED ''?'''

SELECT	A.TABLE_NAME,
		A.ROW_COUNT,
		COUNT(*) AS COL_COUNT,
		A.DATA_SIZE
		FROM #TEMP A
	INNER JOIN INFORMATION_SCHEMA.COLUMNS B
		ON A.TABLE_NAME
			COLLATE DATABASE_DEFAULT = B.TABLE_NAME
			COLLATE DATABASE_DEFAULT
	GROUP BY A.TABLE_NAME, A.ROW_COUNT, A.DATA_SIZE
	ORDER BY CAST(REPLACE(A.DATA_SIZE, ' KB', '') AS INTEGER) DESC

DROP TABLE #TEMP

Bilgi ve önemli uyarı Her ne kadar Dynamics AX ile çalışırken veri tabanı işlemlerini AX’a bıraksak da, upgrade,  entegrasyon gibi nedenlerle SQL işlemleri de yapmamız gerekebilir. Bu işlem için yardımcı olabilecek komutları sizlerle paylaşmak istedim.

Bu yazıda SQL veri tabanındaki tabloların boyutlarını nasıl sorgulayabileceğimizi inceledik. Bu kod zararsız olmakla birlikte sonucu gösterinceye kadar sisteminizi yavaşlatabilir. Bu kod örneklerini kullanmanız halinde oluşabilecek hatalar tamamen sizin sorumluluğnuzdadır.

Bazı işlemleri SQL üzerinden yapmayı istememizin en temel nedeni performanstır. Zira bazı sorgular Ax aracılığı ile yapılmak yerine SQL üzerinden yapılırsa çok daha hızlı sonuç alınabilmektedir. Yine de ne yaptığınızdan emin değilseniz SQL’i kullanmayın.

Emre TÜFEKÇİ
İstanbul

www.atol.com.tr

SQL Insert ve Databaseler arası veri taşıma

SQL’de bir tabloya kayıt atmak için iki temel yöntemden birisi  seçilmelidir.

  1. Tek satır kayıt atmak : Bu işlem için en azından zorunlu alanlar doldurularak işlem yapılmalıdır.
USE [db_adi]
INSERT INTO tablo_adi (sutun1, sutun2, ...)
    VALUES ("deger1", "deger2", ...)
        WHERE sutun5 = "xxx"
  1. Çok satır kayıt atmak : Bu işlem için başka bir kaynaktan (örneğin başka bir tablodan) kayıt okumak gerekecektir. Alttaki örneklerde tablo_adi2 tablosundaki sütun21 değerleri, tablo_adi tablosundaki sütun11 alanına,.. (sırası ile diğer alanlar) yazılarak tablo_adi1’de yeni kayıtlar oluşturulacaktır. İşlemi bir kayıt kümesi ile sınırlandırmak için where cümleciği ile kriter belirtilebilir.

Okumaya devam et

SQL Komutları Giriş – SQL Statements Intro

Bilgi ve önemli uyarı : Her ne kadar Dynamics AX ile çalışırken veri tabanı işlemlerini AX’a bıraksak da, upgrade,  entegrasyon gibi nedenlerle SQL işlemleri de yapmamız gerekebilir. Bu işlem için yardımcı olabilecek komutları sizlerle paylaşmak istedim.

Bu kategoride SQL işlemlerini inceleyeceğiz. Dynamics AX tablolarına müdahele  etmek için bu kodları kullanmak sisteminizi tamamen çalışmaz hale getirebilir. Bu kategorideki kod örneklerini kullanmanız halinde oluşabilecek hatalar tamamen sizin sorumluluğnuzdadır.

Bazı işlemleri SQL üzerinden yapmayı istememizin en temel nedeni performanstır. Zira bazı sorgular Ax aracılığı ile yapılmak yerine SQL üzerinden yapılırsa çok daha hızlı sonuç alınabilmektedir. Yine de ne yaptığınızdan emin değilseniz SQL’i kullanmayın.

Bildiğiniz üzere Dynamics Ax veri tabanı olarak  SQL Server ya da Oracle kullanabilmektedir. Ancak Oracle desteğinin AX 6.0 (ya da 2012) versiyonunda sona ereceği bildirilmişti. (İlgili makale için tıklayınız.) Biz de gerektiğinde SQL Server’da nasıl sorgu cümleciği yazabileceğimizi inceleyeceğiz. Konu ile ilgili en güzel kaynaklardan birisi kesinlikle www.w3Schools.com‘dur. Bu siteyi favorilerinize eklemenizi tavsiye ederim.

Okumaya devam et